53 lines
1.3 KiB
Bash
Executable File
53 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -ue
|
|
echo "CHANGED" >>/tmp/log
|
|
RABBIT_USER=`relation-get username`
|
|
RABBIT_PASSWD=`relation-get password`
|
|
|
|
DEFAULT_ETH=$(ip route | grep default | awk '{ print $5 }')
|
|
IP=$(ifconfig $DEFAULT_ETH | grep 'inet addr' | awk '{ print $2 }' | cut -d: -f2)
|
|
|
|
RABBIT_CTL='rabbitmqctl'
|
|
PASSWD_FILE="/var/run/ensemble/$RABBIT_USER.passwd"
|
|
|
|
if ! which pwgen ; then apt-get -y install pwgen ; fi
|
|
|
|
if [[ -z $RABBIT_USER ]] || [[ -z $RABBIT_PASSWD ]] ; then
|
|
ensemble-log "Peer not ready."
|
|
exit 0
|
|
fi
|
|
|
|
function user_exists {
|
|
$RABBIT_CTL list_users | grep $1 >/dev/null
|
|
}
|
|
|
|
function user_is_admin {
|
|
$RABBIT_CTL list_users | grep $1 | grep true >/dev/null
|
|
}
|
|
|
|
function user_create {
|
|
ensemble-log "Creating user $1."
|
|
PASSWORD=$(pwgen 10 1)
|
|
$RABBIT_CTL add_user $1 $PASSWORD || return 1
|
|
[[ ! -e $PASSWD_FILE ]] && echo $PASSWORD>$PASSWD_FILE
|
|
chmod 0400 $PASSWD_FILE
|
|
if [[ $2 == 'admin' ]] ; then
|
|
user_is_admin $1 && return 0
|
|
ensemble-log "Granting user $1 admin access"
|
|
$RABBIT_CTL set_admin $1 || return 1
|
|
fi
|
|
}
|
|
|
|
if ! user_exists $RABBIT_USER ; then
|
|
user_create $RABBIT_USER admin || exit 1
|
|
else
|
|
ensemble-log "RabbiqMQ user $RABBIT_USER already exists."
|
|
fi
|
|
|
|
if [[ ! -e $PASSWD_FILE ]] ; then
|
|
ensemble-log "WARN: $RABBIT_USER exists, but $PASSWD_FILE does not!"
|
|
fi
|
|
|
|
ensemble-log "Giving peer my IP - $IP"
|
|
relation-set ip=$IP
|