64 lines
1.8 KiB
Bash
Executable File
64 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -u
|
|
FORMULA_DIR=$(dirname $0)
|
|
ARG0=${0##*/}
|
|
|
|
if [[ -e $FORMULA_DIR/rabbitmq-common ]] ; then
|
|
. $FORMULA_DIR/rabbitmq-common
|
|
else
|
|
ensemble-log "rabbitmq: ERROR Could not load $FORMULA_DIR/rabbitmq-common"
|
|
exit 1
|
|
fi
|
|
|
|
ensemble-log "rabbitmq: Firing hook $ARG0."
|
|
|
|
function install_hook() {
|
|
DEFAULT_ETH=$(ip route | grep default | awk '{ print $5 }')
|
|
IP=$(ifconfig $DEFAULT_ETH | grep 'inet addr' | awk '{ print $2 }' | cut -d: -f2)
|
|
|
|
if ! cat /etc/hosts | grep "$IP $HOSTNAME" >>/dev/null; then
|
|
echo "Updating /etc/hosts"
|
|
echo $IP $HOSTNAME >> /etc/hosts
|
|
fi
|
|
|
|
[[ ! `which pwgen` ]] && apt-get -y install pwgen
|
|
|
|
DEBIAN_FRONTEND=noninteractive apt-get -qqy \
|
|
install --no-install-recommends rabbitmq-server
|
|
rc=$?
|
|
ensemble-log "rabbitmq: Installation complete. $rc"
|
|
service rabbitmq-server stop
|
|
}
|
|
|
|
function amqp_changed() {
|
|
RABBIT_USER=`relation-get username`
|
|
[[ -z $RABBIT_USER ]] && exit 0
|
|
PASSWD_FILE="/var/run/ensemble/$RABBIT_USER.passwd"
|
|
if [[ -e $PASSWD_FILE ]] ; then
|
|
PASSWORD=$(cat $PASSWD_FILE)
|
|
else
|
|
PASSWORD=$(pwgen 10 1)
|
|
echo $PASSWORD >$PASSWD_FILE
|
|
chmod 0400 $PASSWD_FILE
|
|
fi
|
|
if ! user_exists $RABBIT_USER ; then
|
|
user_create $RABBIT_USER admin || exit 1
|
|
else
|
|
ensemble-log "rabbitmq: user $RABBIT_USER already exists."
|
|
fi
|
|
ensemble-log "rabbitmq: Returning credentials for $RABBIT_USER@$HOSTNAME"
|
|
relation-set hostname=$HOSTNAME
|
|
relation-set password=$PASSWORD
|
|
}
|
|
|
|
case $ARG0 in
|
|
"install") install_hook ;;
|
|
"start") service rabbitmq-server status || service rabbitmq-server start ;;
|
|
"stop") service rabbitmq-server status && service rabbitmq-server stop ;;
|
|
"amqp-relation-joined") exit 0 ;;
|
|
"amqp-relation-changed") amqp_changed ;;
|
|
esac
|
|
rc=$?
|
|
ensemble-log "rabbitmq: Hook $ARG0 complete. Exiting $rc"
|
|
exit $rc
|