~frbayart/charms/trusty/mesos-master/trunk

« back to all changes in this revision

Viewing changes to hooks/config-changed

  • Committer: Francois Bayart
  • Date: 2016-04-07 18:34:21 UTC
  • Revision ID: francois.bayart@data-fellas.guru-20160407183421-nm09uhq4qbwanjq5
InitialĀ FORKEDĀ charm

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
# config-changed occurs everytime a new configuration value is updated (juju set)
 
3
 
 
4
set -ex
 
5
 
 
6
status-set maintenance "Config changed"
 
7
 
 
8
patt='([[:digit:]]+)'
 
9
 
 
10
[[ $JUJU_UNIT_NAME =~ $patt ]] && unit_no=${BASH_REMATCH[1]}
 
11
let unit_no+=1
 
12
 
 
13
# Config Zookeeper
 
14
sudo sh -c "echo $unit_no > /etc/zookeeper/conf/myid"
 
15
 
 
16
# Config mesos-master
 
17
sudo sh -c "echo `config-get work_dir` > /etc/mesos-master/work_dir"
 
18
 
 
19
if [ -n "`config-get allocation_interval`" ]
 
20
then
 
21
        sudo sh -c "echo `config-get allocation_interval` > /etc/mesos-master/authenticate"
 
22
else
 
23
        sudo rm -f /etc/mesos-master/authenticate
 
24
fi
 
25
 
 
26
if [ -n "`config-get allocator`" ]
 
27
then
 
28
        sudo sh -c "echo `config-get allocator` > /etc/mesos-master/allocator"
 
29
else
 
30
        sudo rm -f /etc/mesos-master/allocator
 
31
fi
 
32
 
 
33
if [ `config-get authenticate` = "True" ]
 
34
then
 
35
        sudo sh -c "touch /etc/mesos-slave/?authenticate"
 
36
else
 
37
        sudo rm -f "/etc/mesos-master/?authenticate"
 
38
fi
 
39
 
 
40
if [ `config-get authenticate_slaves` = "True" ]
 
41
then
 
42
        sudo sh -c "touch /etc/mesos-slave/?authenticate_slaves"
 
43
else
 
44
        sudo rm -f "/etc/mesos-master/?authenticate_slaves"
 
45
fi
 
46
 
 
47
if [ -n "`config-get cluster`" ]
 
48
then
 
49
        sudo sh -c "echo `config-get cluster` > /etc/mesos-master/cluster"
 
50
else
 
51
        sudo rm -f /etc/mesos-master/cluster
 
52
fi
 
53
 
 
54
if [ -n "`config-get credentials`" ]
 
55
then
 
56
        sudo sh -c "echo `config-get credentials` > /etc/mesos-master/credentials"
 
57
else
 
58
        sudo rm -f /etc/mesos-master/credentials
 
59
fi
 
60
 
 
61
if [ -n "`config-get framework_sorter`" ]
 
62
then
 
63
        sudo sh -c "echo `config-get framework_sorter` > /etc/mesos-master/framework_sorter"
 
64
else
 
65
        sudo rm -f /etc/mesos-master/framework_sorter
 
66
fi
 
67
 
 
68
if [ -n "`config-get hooks`" ]
 
69
then
 
70
        sudo sh -c "echo `config-get hooks` > /etc/mesos-master/hooks"
 
71
else
 
72
        sudo rm -f /etc/mesos-master/hooks
 
73
fi
 
74
 
 
75
if [ -n "`config-get hostname`" ]
 
76
then
 
77
        sudo sh -c "echo `config-get hostname` > /etc/mesos-master/hostname"
 
78
else
 
79
        sudo sh -c "hostname > /etc/mesos-master/hostname"
 
80
fi
 
81
 
 
82
if [ -n "`config-get log_dir`" ]
 
83
then
 
84
        sudo sh -c "echo `config-get log_dir` > /etc/mesos-master/log_dir"
 
85
else
 
86
        sudo rm -f /etc/mesos-master/log_dir
 
87
fi
 
88
 
 
89
if [ -n "`config-get logbufsecs`" ]
 
90
then
 
91
        sudo sh -c "echo `config-get logbufsecs` > /etc/mesos-master/logbufsecs"
 
92
else
 
93
        sudo rm -f /etc/mesos-master/logbufsecs
 
94
fi
 
95
 
 
96
if [ -n "`config-get logging_level`" ]
 
97
then
 
98
        sudo sh -c "echo `config-get logging_level` > /etc/mesos-master/logging_level"
 
99
else
 
100
        sudo rm -f /etc/mesos-master/logging_level
 
101
fi
 
102
 
 
103
if [ `config-get quiet` = "True" ]
 
104
then
 
105
        sudo sh -c "touch /etc/mesos-slave/?quiet"
 
106
else
 
107
        sudo rm -f "/etc/mesos-master/?quiet"
 
108
fi
 
109
 
 
110
if [ -n "`config-get recovery_slave_removal_limit`" ]
 
111
then
 
112
        sudo sh -c "echo `config-get recovery_slave_removal_limit` > /etc/mesos-master/recovery_slave_removal_limit"
 
113
else
 
114
        sudo rm -f /etc/mesos-master/recovery_slave_removal_limit
 
115
fi
 
116
 
 
117
if [ -n "`config-get registry`" ]
 
118
then
 
119
        sudo sh -c "echo `config-get registry` > /etc/mesos-master/registry"
 
120
else
 
121
        sudo rm -f /etc/mesos-master/registry
 
122
fi
 
123
 
 
124
if [ -n "`config-get registry_fetch_timeout`" ]
 
125
then
 
126
        sudo sh -c "echo `config-get registry_fetch_timeout` > /etc/mesos-master/registry_fetch_timeout"
 
127
else
 
128
        sudo rm -f /etc/mesos-master/registry_fetch_timeout
 
129
fi
 
130
 
 
131
if [ -n "`config-get resource_monitoring_interval`" ]
 
132
then
 
133
        sudo sh -c "echo `config-get resource_monitoring_interval` > /etc/mesos-master/resource_monitoring_interval"
 
134
else
 
135
        sudo rm -f /etc/mesos-master/resource_monitoring_interval
 
136
fi
 
137
 
 
138
if [ -n "`config-get registry_store_timeout`" ]
 
139
then
 
140
        sudo sh -c "echo `config-get registry_store_timeout` > /etc/mesos-master/registry_store_timeout"
 
141
else
 
142
        sudo rm -f /etc/mesos-master/registry_store_timeout
 
143
fi
 
144
 
 
145
if [ -n "`config-get roles`" ]
 
146
then
 
147
        sudo sh -c "echo `config-get roles` > /etc/mesos-master/roles"
 
148
else
 
149
        sudo rm -f /etc/mesos-master/roles
 
150
fi
 
151
 
 
152
if [ `config-get root_submissions` = "False" ]
 
153
then
 
154
        sudo sh -c "echo 'false' > /etc/mesos-master/root_submissions"
 
155
else
 
156
        sudo rm -f /etc/mesos-master/root_submissions
 
157
fi
 
158
 
 
159
if [ -n "`config-get slave_reregister_timeout`" ]
 
160
then
 
161
        sudo sh -c "echo `config-get slave_reregister_timeout` > /etc/mesos-master/slave_reregister_timeout"
 
162
else
 
163
        sudo rm -f /etc/mesos-master/slave_reregister_timeout
 
164
fi
 
165
 
 
166
if [ -n "`config-get user_sorter`" ]
 
167
then
 
168
        sudo sh -c "echo `config-get user_sorter` > /etc/mesos-master/user_sorter"
 
169
else
 
170
        sudo rm -f /etc/mesos-master/user_sorter
 
171
fi
 
172
 
 
173
if [ -n "`config-get weights`" ]
 
174
then
 
175
        sudo sh -c "echo `config-get weights` > /etc/mesos-master/weights"
 
176
else
 
177
        sudo rm -f /etc/mesos-master/weights
 
178
fi
 
179
 
 
180
if [ -n "`config-get zk_session_timeout`" ]
 
181
then
 
182
        sudo sh -c "echo `config-get zk_session_timeout` > /etc/mesos-master/zk_session_timeout"
 
183
else
 
184
        sudo rm -f /etc/mesos-master/zk_session_timeout
 
185
fi
 
186
 
 
187
open-port `config-get port`
 
188
open-port `config-get marathon_port`
 
189
 
 
190
# Config mesos-slave
 
191
if [ `config-get mesos-slave` = "True" ]
 
192
then
 
193
        juju-log "Configuring mesos'slave: `config-get mesos-slave`"
 
194
        sudo rm -f /etc/init/mesos-slave.override
 
195
 
 
196
        if [ -n "`config-get slave_hostname`" ]
 
197
        then
 
198
                sudo sh -c "echo `config-get slave_hostname` > /etc/mesos-slave/hostname"
 
199
        else
 
200
                sudo sh -c "hostname > /etc/mesos-slave/hostname"
 
201
        fi
 
202
 
 
203
        sudo sh -c "echo `config-get slave_containerizers` > /etc/mesos-slave/containerizers"
 
204
        sudo sh -c "echo `config-get slave_executor_registration_timeout` > /etc/mesos-slave/executor_registration_timeout"
 
205
 
 
206
        if [ -n "`config-get slave_attributes`" ]
 
207
        then
 
208
                sudo sh -c "echo `config-get slave_attributes` > /etc/mesos-slave/attributes"
 
209
        else
 
210
                sudo rm -f /etc/mesos-slave/attributes
 
211
        fi
 
212
 
 
213
        if [ -n "`config-get slave_credential`" ]
 
214
        then
 
215
                sudo sh -c "echo `config-get slave_credential` > /etc/mesos-slave/credential"
 
216
        else
 
217
                sudo rm -f /etc/mesos-slave/credential
 
218
        fi
 
219
 
 
220
        if [ -n "`config-get slave_default_role`" ]
 
221
        then
 
222
                sudo sh -c "echo `config-get slave_default_role` > /etc/mesos-slave/default_role"
 
223
        else
 
224
                sudo rm -f /etc/mesos-slave/default_role
 
225
        fi
 
226
 
 
227
        if [ -n "`config-get slave_isolation`" ]
 
228
        then
 
229
                sudo sh -c "echo `config-get slave_isolation` > /etc/mesos-slave/isolation"
 
230
        else
 
231
                sudo rm -f /etc/mesos-slave/isolation
 
232
        fi
 
233
 
 
234
        if [ -n "`config-get slave_logging_level`" ]
 
235
        then
 
236
                sudo sh -c "echo `config-get slave_logging_level` > /etc/mesos-slave/logging_level"
 
237
        else
 
238
                sudo rm -f /etc/mesos-slave/logging_level
 
239
        fi
 
240
 
 
241
        if [ -n "`config-get slave_resource_monitoring_interval`" ]
 
242
        then
 
243
                sudo sh -c "echo `config-get slave_resource_monitoring_interval` > /etc/mesos-slave/resource_monitoring_interval"
 
244
        else
 
245
                sudo rm -f /etc/mesos-slave/resource_monitoring_interval
 
246
        fi
 
247
 
 
248
        if [ -n "`config-get slave_resources`" ]
 
249
        then
 
250
                sudo sh -c "echo `config-get slave_resources` > /etc/mesos-slave/resources"
 
251
        else
 
252
                sudo rm -f /etc/mesos-slave/resources
 
253
        fi
 
254
else
 
255
        if $(service mesos-slave status|grep 'mesos-slave start/running' | wc -l)
 
256
        then
 
257
                sudo service mesos-slave stop
 
258
        fi
 
259
 
 
260
        if $(service docker status|grep 'docker start/running' | wc -l)
 
261
        then
 
262
                sudo service docker stop
 
263
        fi
 
264
 
 
265
        sudo sh -c "echo manual > /etc/init/mesos-slave.override"
 
266
fi
 
267
 
 
268
if [ `config-get switch_user` = "True" ]
 
269
then
 
270
        sudo sh -c "touch /etc/mesos-slave/?switch_user"
 
271
        sudo rm -f "/etc/mesos-slave/?no-switch_user"
 
272
else
 
273
        sudo sh -c "touch /etc/mesos-slave/?no-switch_user"
 
274
        sudo rm -f "/etc/mesos-slave/?switch_user"
 
275
fi
 
276
 
 
277
# Config mesos-dns
 
278
if [ `config-get mesos-dns` = "True" ]
 
279
then
 
280
        file="/etc/mesos/zk"
 
281
        zookeeper=$(cat "$file") 
 
282
        httpon=`config-get dns_httpon`
 
283
        dsnon=`config-get dns_dsnon`
 
284
        externalon=`config-get dns_externalon`
 
285
        
 
286
        sudo sh -c "echo '{' > /usr/local/mesos-dns/config.json"
 
287
        sudo sh -c "echo '  \"zk\": \"${zookeeper}\",' >> /usr/local/mesos-dns/config.json"
 
288
        sudo sh -c "echo '  \"refreshSeconds\": `config-get dns_refreshSeconds`,' >> /usr/local/mesos-dns/config.json"
 
289
        sudo sh -c "echo '  \"ttl\": `config-get dns_ttl`,' >> /usr/local/mesos-dns/config.json"
 
290
        sudo sh -c "echo '  \"domain\": \"`config-get dns_domain`\",' >> /usr/local/mesos-dns/config.json"
 
291
        sudo sh -c "echo '  \"port\": `config-get dns_port`,' >> /usr/local/mesos-dns/config.json"
 
292
        sudo sh -c "echo '  \"resolvers\": [\"`unit-get private-address`\", \"8.8.8.8\"],' >> /usr/local/mesos-dns/config.json"
 
293
        sudo sh -c "echo '  \"timeout\": `config-get dns_timeout`,' >> /usr/local/mesos-dns/config.json"
 
294
        sudo sh -c "echo '  \"httpon\": ${httpon,,},' >> /usr/local/mesos-dns/config.json"
 
295
        sudo sh -c "echo '  \"dsnon\": ${dsnon,,},' >> /usr/local/mesos-dns/config.json"
 
296
        sudo sh -c "echo '  \"httpport\": `config-get dns_httpport`,' >> /usr/local/mesos-dns/config.json"
 
297
        sudo sh -c "echo '  \"externalon\": ${externalon,,},' >> /usr/local/mesos-dns/config.json"
 
298
        sudo sh -c "echo '  \"listener\": \"`config-get dns_listener`\",' >> /usr/local/mesos-dns/config.json"
 
299
        sudo sh -c "echo '  \"SOAMname\": \"`config-get dns_SOAMname`\",' >> /usr/local/mesos-dns/config.json"
 
300
        sudo sh -c "echo '  \"SOARname\": \"`config-get dns_SOARname`\",' >> /usr/local/mesos-dns/config.json"
 
301
        sudo sh -c "echo '  \"SOARefresh\": `config-get dns_SOARefresh`,' >> /usr/local/mesos-dns/config.json"
 
302
        sudo sh -c "echo '  \"SOARetry\": `config-get dns_SOARetry`,' >> /usr/local/mesos-dns/config.json"
 
303
        sudo sh -c "echo '  \"SOAExpire\": `config-get dns_SOAExpire`,' >> /usr/local/mesos-dns/config.json"
 
304
        sudo sh -c "echo '  \"SOAMinttl\": `config-get dns_SOAMinttl`,' >> /usr/local/mesos-dns/config.json"
 
305
        sudo sh -c "echo '  \"email\": \"root.mesos-dns.mesos\"' >> /usr/local/mesos-dns/config.json"
 
306
        sudo sh -c "echo '}' >> /usr/local/mesos-dns/config.json"
 
307
fi
 
308
 
 
309
# Restart services
 
310
sudo service zookeeper restart
 
311
sudo service mesos-master restart
 
312
sudo service marathon restart
 
313
 
 
314
if [ `config-get mesos-slave` = "True" ]
 
315
then
 
316
        sudo service mesos-slave restart
 
317
        sudo service docker restart
 
318
fi
 
319
 
 
320
if [ `config-get mesos-dns` = "True" ]
 
321
then
 
322
        sudo service mesos-dns restart
 
323
fi
 
324
 
 
325
status-set active