69 lines
2.5 KiB
Bash
Executable File
69 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eux
|
|
|
|
install-packages rabbitmq-server
|
|
|
|
# Ensure we leave symlinks in place for RabbitMQ state paths
|
|
register-state-path --leave-symlink /var/lib/rabbitmq
|
|
register-state-path --leave-symlink /var/log/rabbitmq
|
|
|
|
# Note(jang): the rabbitmq-server service is installed, but not started, since
|
|
# the first run of os-collect-config is required to configure it properly.
|
|
|
|
# In Ubuntu rabbit's default init.d script is broken.
|
|
if [ "$DISTRO_NAME" = "ubuntu" ] || [ "$DISTRO_NAME" = "debian" -a "$DIB_INIT_SYSTEM" = "upstart" ]; then
|
|
update-rc.d -f rabbitmq-server remove
|
|
rm /etc/init.d/rabbitmq-server
|
|
|
|
# Note(jang) The os-svc-daemon script has too many assumptions baked into it
|
|
# that it'll be running a venv-based service to use directly. Install an upstart
|
|
# configuration that's compatible with os-svc-enable and os-svc-restart
|
|
|
|
cat > /etc/init/rabbitmq-server.conf <<eof
|
|
start on runlevel [2345]
|
|
stop on runlevel [016]
|
|
respawn
|
|
# the default post-start of 1 second sleep delays respawning enough to
|
|
# not hit the default of 10 times in 5 seconds. Make it 2 times in 5s.
|
|
respawn limit 2 5
|
|
|
|
env OS_SVC_ENABLE_CONTROL=1
|
|
export OS_SVC_ENABLE_CONTROL
|
|
|
|
pre-start script
|
|
[ -d "/var/run/rabbitmq" ] || install -d -D -m 0755 -o rabbitmq -g rabbitmq /var/run/rabbitmq
|
|
end script
|
|
exec /usr/sbin/rabbitmq-server > /var/log/rabbitmq/startup_log 2> /var/log/rabbitmq/startup_err
|
|
post-start exec /usr/sbin/rabbitmqctl wait /var/run/rabbitmq/pid >/dev/null 2>&1
|
|
pre-stop exec /usr/sbin/rabbitmqctl stop /var/run/rabbitmq/pid >/dev/null 2>&1
|
|
|
|
# Get the Erlang nameserver too.
|
|
post-stop exec /usr/bin/pkill -u rabbitmq >/dev/null 2>&1
|
|
|
|
eof
|
|
fi
|
|
|
|
if [ "$DIB_INIT_SYSTEM" = "systemd" ]; then
|
|
# Delay the rc-local.service start-up until rabbitmq-server.service is started up
|
|
sed -i 's/\[Unit\]/\[Unit\]\nBefore=rc-local.service/g' /usr/lib/systemd/system/rabbitmq-server.service
|
|
|
|
# Respawn rabbitmq-server in case the process exits with an nonzero exit code
|
|
sed -i 's/\[Service\]/\[Service\]\nRestart=on-failure/g' /usr/lib/systemd/system/rabbitmq-server.service
|
|
fi
|
|
|
|
|
|
cat > /etc/rabbitmq/rabbitmq-env.conf <<EOF
|
|
HOME=/mnt/state/var/lib/rabbitmq
|
|
LOG_BASE=/mnt/state/var/log/rabbitmq
|
|
MNESIA_BASE=/mnt/state/var/lib/rabbitmq/mnesia
|
|
PID_FILE=/var/run/rabbitmq/pid
|
|
EOF
|
|
|
|
# Enable ulimits in pam if needed
|
|
PAM_FILE=/etc/pam.d/su
|
|
sed -i '/# session.*pam_limits\.so/s/# //' ${PAM_FILE}
|
|
|
|
# Reserve the cluster port (61000) from the ephemeral port range.
|
|
sysctl-append-value net.ipv4.ip_local_reserved_ports 61000
|