install: Improve support for non-default puppet rules.

Previously, the install script would fail if you passed various
non-default puppet rules, since the code to configure and restart
services that runs later on in the install script largely ran
unconditionally, regardless of whether the relevant service was
actually installed on the target system.

This should make the main install script reusable for installing
e.g. a dedicated Postgres server for use with Zulip.
This commit is contained in:
Tim Abbott
2016-07-11 20:35:14 -07:00
parent 80bf7e32a4
commit 883e991adf

View File

@@ -49,25 +49,36 @@ mkdir -p /etc/zulip
echo -e "[machine]\npuppet_classes = $PUPPET_CLASSES\ndeploy_type = $DEPLOYMENT_TYPE" > /etc/zulip/zulip.conf echo -e "[machine]\npuppet_classes = $PUPPET_CLASSES\ndeploy_type = $DEPLOYMENT_TYPE" > /etc/zulip/zulip.conf
/root/zulip/scripts/zulip-puppet-apply -f /root/zulip/scripts/zulip-puppet-apply -f
# Detect which features were selected for the below
[ -e "/etc/init.d/camo" ]; has_camo=$?
[ -e "/etc/init.d/nginx" ]; has_nginx=$?
[ -e "/etc/supervisor/conf.d/zulip.conf" ]; has_appserver=$?
[ -e "/etc/cron.d/rabbitmq-numconsumers" ]; has_rabbit=$?
[ -e "/etc/init.d/postgresql" ]; has_postgres=$?
# These server restarting bits should be moveable into puppet-land, ideally # These server restarting bits should be moveable into puppet-land, ideally
apt-get -y upgrade apt-get -y upgrade
if [ -e "/etc/init.d/nginx" ]; then
if [ "$has_nginx" = 0 ]; then
# Check nginx was configured properly now that we've installed it. # Check nginx was configured properly now that we've installed it.
# Most common failure mode is certs not having been installed. # Most common failure mode is certs not having been installed.
nginx -t nginx -t
service nginx restart service nginx restart
fi fi
if [ "$has_appserver" = 0 ]; then
/root/zulip/scripts/setup/generate_secrets.py /root/zulip/scripts/setup/generate_secrets.py
cp -a /root/zulip/zproject/local_settings_template.py /etc/zulip/settings.py cp -a /root/zulip/zproject/local_settings_template.py /etc/zulip/settings.py
ln -nsf /etc/zulip/settings.py /root/zulip/zproject/local_settings.py ln -nsf /etc/zulip/settings.py /root/zulip/zproject/local_settings.py
fi
# Restart camo since generate_secrets.py likely replaced its secret key # Restart camo since generate_secrets.py likely replaced its secret key
if [ -z "$TRAVIS" ]; then if [ "$has_camo" = 0 ] && [ -z "$TRAVIS" ]; then
# We don't run this in Travis CI due to a weird hang bug # We don't run this in Travis CI due to a weird hang bug
service camo restart service camo restart
fi fi
if [ "$has_rabbit" = 0 ]; then
if ! rabbitmqctl status >/dev/null; then if ! rabbitmqctl status >/dev/null; then
set +x set +x
echo; echo "RabbitMQ seems to not have started properly after the installation process." echo; echo "RabbitMQ seems to not have started properly after the installation process."
@@ -78,11 +89,14 @@ if ! rabbitmqctl status >/dev/null; then
set -x set -x
exit 1 exit 1
fi fi
/root/zulip/scripts/setup/configure-rabbitmq /root/zulip/scripts/setup/configure-rabbitmq
fi
if [ "$has_postgres" = 0 ]; then
/root/zulip/scripts/setup/postgres-init-db /root/zulip/scripts/setup/postgres-init-db
fi
if [ "$has_appserver" = 0 ]; then
deploy_path=$(/root/zulip/zulip_tools.py make_deploy_path) deploy_path=$(/root/zulip/zulip_tools.py make_deploy_path)
mv /root/zulip "$deploy_path" mv /root/zulip "$deploy_path"
ln -nsf /home/zulip/deployments/next /root/zulip ln -nsf /home/zulip/deployments/next /root/zulip
@@ -92,6 +106,8 @@ ln -nsf /etc/zulip/settings.py "$deploy_path"/zproject/local_settings.py
mkdir -p "$deploy_path"/prod-static/serve mkdir -p "$deploy_path"/prod-static/serve
cp -rT "$deploy_path"/prod-static/serve /home/zulip/prod-static cp -rT "$deploy_path"/prod-static/serve /home/zulip/prod-static
chown -R zulip:zulip /home/zulip /var/log/zulip /etc/zulip/settings.py chown -R zulip:zulip /home/zulip /var/log/zulip /etc/zulip/settings.py
fi
if [ -e "/var/run/supervisor.sock" ]; then if [ -e "/var/run/supervisor.sock" ]; then
# If supervisor isn't running, no need to chown its socket # If supervisor isn't running, no need to chown its socket
chown zulip:zulip /var/run/supervisor.sock chown zulip:zulip /var/run/supervisor.sock