2
# This must be renamed to the name of the relation. The goal here is to
3
# affect any change needed by relationships being formed, modified, or broken
4
# This script should be idempotent.
7
status-set maintenance "relations changed"
10
[[ $JUJU_UNIT_NAME =~ $patt ]] && unit_no=${BASH_REMATCH[1]}
13
sudo rm -f /etc/resolv.conf
14
sudo cp /etc/resolv.conf.backup /etc/resolv.conf
17
sudo sh -c "echo 'tickTime=`config-get zookeeper_tickTime`' > /etc/zookeeper/conf/zoo.cfg"
18
sudo sh -c "echo 'initLimit=`config-get zookeeper_initLimit`' >> /etc/zookeeper/conf/zoo.cfg"
19
sudo sh -c "echo 'syncLimit=`config-get zookeeper_syncLimit`' >> /etc/zookeeper/conf/zoo.cfg"
20
sudo sh -c "echo 'dataDir=`config-get zookeeper_dataDir`' >> /etc/zookeeper/conf/zoo.cfg"
21
sudo sh -c "echo 'clientPort=`config-get zookeeper_port`' >> /etc/zookeeper/conf/zoo.cfg"
23
if [ -z `relation-ids` ]
25
juju-log "Running mesos-master in standalone mode"
28
sudo sh -c "echo `config-get zookeeper` > /etc/mesos/zk"
29
sudo sh -c "echo `config-get quorum` > /etc/mesos-master/quorum"
32
server_arr[0]="server.${unit_no}=`unit-get private-address`:2888:3888"
34
for member in `relation-ids`
36
juju-log "Adding $member to zokeeper quorum"
37
[[ ${member} =~ $patt ]] && member_id=${BASH_REMATCH[1]}
39
member_hostname=`relation-get -r ${member} private-address`
40
server_arr=("${server_arr[@]}" "server.${member_id}=${member_hostname}:2888:3888")
43
for server_line in "${server_arr[@]}"
45
sudo sh -c "echo ${server_line} >> /etc/zookeeper/conf/zoo.cfg"
49
sudo sh -c "echo $JUJU_UNIT_NAME > /etc/mesos-master/hostname"
50
sudo sh -c "echo `unit-get private-address` > /etc/mesos-master/ip"
51
zookeeper="zk://localhost:2181"
53
for member in `relation-ids`
55
juju-log "Adding $member to mesos-master quorum"
56
zookeeper="$zookeeper,`relation-get -r ${member} private-address`:2181"
60
zookeeper="$zookeeper/mesos"
61
let quorum=($quorum+2-1)/2
62
sudo sh -c "echo ${quorum} > /etc/mesos-master/quorum"
63
sudo sh -c "echo $zookeeper > /etc/mesos/zk"
66
if [ `config-get mesos-dns` = "True" ]
68
for member in `relation-ids`
70
if ![ -z `relation-get mesos-dns ${member}` ]
72
sudo sed -i "1s/^/nameserver `relation-get -r ${member} private-address`\n /" /etc/resolv.conf
78
sudo sh -c "echo $zookeeper > /etc/mesos/zk"
81
sudo rm -f /etc/resolv.conf
82
sudo cp /etc/resolv.conf.backup /etc/resolv.conf
84
if [ `config-get mesos-dns` = "True" ]
86
httpon=`config-get dns_httpon`
87
dsnon=`config-get dns_dsnon`
88
externalon=`config-get dns_externalon`
90
sudo sh -c "echo '{' > /usr/local/mesos-dns/config.json"
91
sudo sh -c "echo ' \"zk\": \"${zookeeper}\",' >> /usr/local/mesos-dns/config.json"
92
sudo sh -c "echo ' \"refreshSeconds\": `config-get dns_refreshSeconds`,' >> /usr/local/mesos-dns/config.json"
93
sudo sh -c "echo ' \"ttl\": `config-get dns_ttl`,' >> /usr/local/mesos-dns/config.json"
94
sudo sh -c "echo ' \"domain\": \"`config-get dns_domain`\",' >> /usr/local/mesos-dns/config.json"
95
sudo sh -c "echo ' \"port\": `config-get dns_port`,' >> /usr/local/mesos-dns/config.json"
96
sudo sh -c "echo ' \"resolvers\": [\"`unit-get private-address`\", \"8.8.8.8\"],' >> /usr/local/mesos-dns/config.json"
97
sudo sh -c "echo ' \"timeout\": `config-get dns_timeout`,' >> /usr/local/mesos-dns/config.json"
98
sudo sh -c "echo ' \"httpon\": ${httpon,,},' >> /usr/local/mesos-dns/config.json"
99
sudo sh -c "echo ' \"dsnon\": ${dsnon,,},' >> /usr/local/mesos-dns/config.json"
100
sudo sh -c "echo ' \"httpport\": `config-get dns_httpport`,' >> /usr/local/mesos-dns/config.json"
101
sudo sh -c "echo ' \"externalon\": ${externalon,,},' >> /usr/local/mesos-dns/config.json"
102
sudo sh -c "echo ' \"listener\": \"`config-get dns_listener`\",' >> /usr/local/mesos-dns/config.json"
103
sudo sh -c "echo ' \"SOAMname\": \"`config-get dns_SOAMname`\",' >> /usr/local/mesos-dns/config.json"
104
sudo sh -c "echo ' \"SOARname\": \"`config-get dns_SOARname`\",' >> /usr/local/mesos-dns/config.json"
105
sudo sh -c "echo ' \"SOARefresh\": `config-get dns_SOARefresh`,' >> /usr/local/mesos-dns/config.json"
106
sudo sh -c "echo ' \"SOARetry\": `config-get dns_SOARetry`,' >> /usr/local/mesos-dns/config.json"
107
sudo sh -c "echo ' \"SOAExpire\": `config-get dns_SOAExpire`,' >> /usr/local/mesos-dns/config.json"
108
sudo sh -c "echo ' \"SOAMinttl\": `config-get dns_SOAMinttl`,' >> /usr/local/mesos-dns/config.json"
109
sudo sh -c "echo ' \"email\": \"root.mesos-dns.mesos\"' >> /usr/local/mesos-dns/config.json"
110
sudo sh -c "echo '}' >> /usr/local/mesos-dns/config.json"
112
for member in `relation-ids`
114
if ![ -z `relation-get -r ${member} mesos-dns` ]
116
sudo sed -i "1s/^/nameserver `relation-get private-address ${member}`\n /" /etc/resolv.conf
120
# Config resolve.conf
121
sudo sed -i "1s/^/nameserver `unit-get private-address`\n /" /etc/resolv.conf
125
sudo service zookeeper restart
126
sudo service mesos-master restart
127
sudo service marathon restart
129
if [ `config-get mesos-slave` = "True" ]
131
sudo service mesos-slave restart
132
sudo service docker restart
135
if [ `config-get mesos-dns` = "True" ]
137
sudo service mesos-dns restart
b'\\ No newline at end of file'