#!/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