#!/bin/sh
#
# 2017 ungleich GmbH (cdist at ungleich.ch)
#
# This file is part of cdist.
#
# cdist is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cdist is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see .
#
os=$(cat "$__global/explorer/os")
if [ ! "$os" = "debian" ]
then
echo "OS $os is currently not supported." >&2
exit 1
fi
os_version=$(cat "$__global/explorer/os_version")
case "$os_version" in
8*)
:
;;
*)
echo "Unsupported version $os_version of $os." >&2
exit 1
;;
esac
db_pass=$(cat "$__object/parameter/db-pass")
db_user=$(cat "$__object/parameter/db-user")
db_name=$(cat "$__object/parameter/db-name")
domain="$(cat "$__object/parameter/domain")"
dh="$(cat "$__object/parameter/dh")"
case "$os" in
centos)
nginx_http=/etc/nginx/conf.d/http.conf
nginx_https=/etc/nginx/conf.d/https.conf
restart="systemctl restart nginx"
;;
debian)
nginx_http=/etc/nginx/sites-enabled/default
nginx_https=/etc/nginx/sites-enabled/default-ssl
restart="systemctl restart nginx"
;;
devuan)
nginx_http=/etc/nginx/sites-enabled/default
nginx_https=/etc/nginx/sites-enabled/default-ssl
restart="/etc/init.d/nginx restart"
;;
*)
echo "Unsupported OS: $os" >&2
exit 1
;;
esac
if [ -f "$__object/parameter/custom-config-from-stdin" ]; then
custom_config="$__object/stdin"
else
custom_config=""
fi
# Install packages
for package in php7.0-common php7.0-gd php7.0-json php7.0-pgsql php7.0-curl \
php7.0-intl php7.0-mcrypt php7.0-imagick \
php7.0-zip php7.0-apcu php7.0-mbstring php7.0-xml php7.0-fpm \
nginx
do require="__apt_update_index" __package $package --state=present
done
__package postgresql --state=present
__package curl --state=present
# Configure packages
## PHP 7
__apt_key_uri dotdeb --uri https://www.dotdeb.org/dotdeb.gpg
require="__apt_key_uri/dotdeb" __apt_source dotdeb --uri http://packages.dotdeb.org \
--distribution jessie \
--component all
require="__apt_source/dotdeb" __apt_update_index
require="__package/php7.0-fpm" __file /etc/php/7.0/fpm/pool.d/www.conf \
--owner root --group root --mode 644 --source "$__type/files/fpm.conf"
# Configure nginx
#require="__package/nginx" __file /etc/nginx/sites-enabled/nextcloud --owner www-data \
# --group www-data --mode 755 --source "$__type/files/nextcloud.nginx"
base_config="$__type/files/base_config/${os}.conf"
require="__package/nginx" __file /etc/nginx/nginx.conf --source "$base_config" --mode 0644
################################################################################
# create base / switch to type dir
#
mkdir "$__object/files"
cd "$__type/files"
################################################################################
# SSL / HTTPs configuration
#
if [ -f "$__object/parameter/ssl" ]; then
if [ ! -f "$__object/parameter/ssl-cert" ] || [ ! -f "$__object/parameter/ssl-key" ] || [ ! -f "$__object/parameter/dh" ]; then
echo "Missing parameter" >&2
else
ssl_cert="$(cat "$__object/parameter/ssl-cert")"
ssl_key="$(cat "$__object/parameter/ssl-key")"
# create symlink for SSL certificates
require="__package/nginx" __link /etc/nginx/ssl.crt \
--source "$ssl_cert" --type symbolic
require="__package/nginx" __link /etc/nginx/ssl.key \
--source "$ssl_key" --type symbolic
# create the https nginx config
require="__package/nginx" __file "$nginx_https" --owner root \
--group root \
--mode 0644 --source - < "$ssl_redirect_file"
# ssl_redirect_file_content=$(cat $ssl_redirect_file)
#fi
#else
# ssl_redirect_file=""
fi
## Postgres
require="__package/postgresql" __postgres_role "${db_user}" --password "${db_pass}"\
--login --createdb
require="__package/postgresql __postgres_role/${db_user}" __postgres_database "${db_name}"\
--owner "${db_user}" --state present
# Start on boot
require="__package/postgresql" __start_on_boot postgresql
require="__package/nginx" __start_on_boot nginx
require="__package/php7.0-fpm" __start_on_boot php7.0-fpm