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,49 +49,65 @@ 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
/root/zulip/scripts/setup/generate_secrets.py if [ "$has_appserver" = 0 ]; then
cp -a /root/zulip/zproject/local_settings_template.py /etc/zulip/settings.py /root/zulip/scripts/setup/generate_secrets.py
ln -nsf /etc/zulip/settings.py /root/zulip/zproject/local_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
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 ! rabbitmqctl status >/dev/null; then if [ "$has_rabbit" = 0 ]; then
set +x if ! rabbitmqctl status >/dev/null; then
echo; echo "RabbitMQ seems to not have started properly after the installation process." set +x
echo "Often, this can be caused by misconfigured /etc/hosts in virtualized environments" echo; echo "RabbitMQ seems to not have started properly after the installation process."
echo "See https://github.com/zulip/zulip/issues/53#issuecomment-143805121" echo "Often, this can be caused by misconfigured /etc/hosts in virtualized environments"
echo "for more information" echo "See https://github.com/zulip/zulip/issues/53#issuecomment-143805121"
echo echo "for more information"
set -x echo
exit 1 set -x
exit 1
fi
/root/zulip/scripts/setup/configure-rabbitmq
fi fi
/root/zulip/scripts/setup/configure-rabbitmq if [ "$has_postgres" = 0 ]; then
/root/zulip/scripts/setup/postgres-init-db
fi
/root/zulip/scripts/setup/postgres-init-db if [ "$has_appserver" = 0 ]; then
deploy_path=$(/root/zulip/zulip_tools.py make_deploy_path)
mv /root/zulip "$deploy_path"
ln -nsf /home/zulip/deployments/next /root/zulip
ln -nsf "$deploy_path" /home/zulip/deployments/next
ln -nsf "$deploy_path" /home/zulip/deployments/current
ln -nsf /etc/zulip/settings.py "$deploy_path"/zproject/local_settings.py
mkdir -p "$deploy_path"/prod-static/serve
cp -rT "$deploy_path"/prod-static/serve /home/zulip/prod-static
chown -R zulip:zulip /home/zulip /var/log/zulip /etc/zulip/settings.py
fi
deploy_path=$(/root/zulip/zulip_tools.py make_deploy_path)
mv /root/zulip "$deploy_path"
ln -nsf /home/zulip/deployments/next /root/zulip
ln -nsf "$deploy_path" /home/zulip/deployments/next
ln -nsf "$deploy_path" /home/zulip/deployments/current
ln -nsf /etc/zulip/settings.py "$deploy_path"/zproject/local_settings.py
mkdir -p "$deploy_path"/prod-static/serve
cp -rT "$deploy_path"/prod-static/serve /home/zulip/prod-static
chown -R zulip:zulip /home/zulip /var/log/zulip /etc/zulip/settings.py
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