monitor.cfg.in 9.24 KB
Newer Older
1 2 3 4 5 6 7 8
[slap-parameters]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}

9 10
[monitor-parameters]
json-filename = monitor.json
11
json-path = $${monitor-directory:monitor-result}/$${:json-filename}
12
rss-filename = rssfeed.html
13
rss-path = $${monitor-directory:public-cgi}/$${:rss-filename}
14
executable = $${monitor-directory:bin}/monitor.py
15
port = 9685
16 17 18 19
htaccess-file = $${monitor-directory:etc}/.htaccess-monitor
url = https://[$${slap-parameters:ipv6-random}]:$${:port}
index-filename = index.cgi
index-path = $${monitor-directory:www}/$${:index-filename}
20
db-path = $${monitor-directory:etc}/monitor.db
21
monitor-password-path = $${monitor-directory:etc}/.monitor.shadow
22

23 24
[monitor-directory]
recipe = slapos.cookbook:mkdirectory
25
# Standard directory needed by monitoring stack
26 27 28
home = $${buildout:directory}
etc = $${:home}/etc
bin = $${:home}/bin
29
srv = $${:home}/srv
30
var = $${:home}/var
31 32 33 34 35 36 37 38 39 40
log = $${:var}/log
run = $${:var}/run
service = $${:etc}/service/
etc-run = $${:etc}/run/
tmp = $${:home}/tmp
promise = $${:etc}/promise

cron-entries = $${:etc}/cron.d
crontabs = $${:etc}/crontabs
cronstamps = $${:etc}/cronstamps
41

42
ca-dir = $${:srv}/ssl
43 44
www = $${:var}/www

45 46 47
cgi-bin = $${:var}/cgi-bin
monitoring-cgi = $${:cgi-bin}/monitoring
knowledge0-cgi = $${:cgi-bin}/zero-knowledge
48
public-cgi = $${:cgi-bin}/monitor-public
49 50 51

monitor-custom-scripts = $${:etc}/monitor
monitor-result = $${:var}/monitor
52

53
private-directory = $${:srv}/monitor-private
54

55 56
[public-symlink]
recipe = cns.recipe.symlink
57
symlink = $${monitor-directory:public-cgi} = $${monitor-directory:www}/monitor-public
58 59
autocreate = true

60 61 62
[cron]
recipe = slapos.cookbook:cron
dcrond-binary = ${dcron:location}/sbin/crond
63 64 65
cron-entries = $${monitor-directory:cron-entries}
crontabs = $${monitor-directory:crontabs}
cronstamps = $${monitor-directory:cronstamps}
66
catcher = $${cron-simplelogger:wrapper}
67
binary = $${monitor-directory:service}/crond
68 69 70 71

# Add log to cron
[cron-simplelogger]
recipe = slapos.cookbook:simplelogger
72 73
wrapper = $${monitor-directory:bin}/cron_simplelogger
log = $${monitor-directory:log}/cron.log
74 75 76 77 78

[cron-entry-monitor]
<= cron
recipe = slapos.cookbook:cron.d
name = launch-monitor
79
frequency = */5 * * * *
80
command = $${deploy-monitor-script:rendered} -a
81 82 83 84 85

[cron-entry-rss]
<= cron
recipe = slapos.cookbook:cron.d
name = build-rss
86
frequency = */5 * * * *
87
command = $${make-rss:rendered}
88

89
[setup-static-files]
90 91 92
recipe = plone.recipe.command
command = ln -s ${download-monitor-jquery:destination} $${monitor-directory:www}/static
update-command = $${:command}
93

94
[deploy-index]
95
recipe = slapos.recipe.template:jinja2
96
template = ${index:location}/${index:filename}
97
rendered = $${monitor-parameters:index-path}
98
update-apache-access = ${apache:location}/bin/htpasswd -cb $${monitor-parameters:htaccess-file} admin
99 100
mode = 0744
context =
101
  key cgi_directory monitor-directory:cgi-bin
102
  raw index_template $${deploy-index-template:location}/$${deploy-index-template:filename}
103 104 105
  key monitor_password_path monitor-parameters:monitor-password-path
  key monitor_password_script_path deploy-monitor-password-cgi:rendered
  key apache_update_command :update-apache-access
106
  raw extra_eggs_interpreter ${buildout:directory}/bin/${extra-eggs:interpreter}
107
  raw default_page /static/welcome.html
108
  section rewrite_element monitor-rewrite-rule
109 110 111 112

[deploy-index-template]
recipe = hexagonit.recipe.download
url = ${index-template:location}/$${:filename}
113
destination = $${monitor-directory:www}
114 115 116
filename = ${index-template:filename}
download-only = true
mode = 0644
117 118 119 120

[deploy-status-cgi]
recipe = slapos.recipe.template:jinja2
template = ${status-cgi:location}/${status-cgi:filename}
121
rendered = $${monitor-directory:monitoring-cgi}/$${:filename}
122
filename = status.cgi
123 124 125
mode = 0744
context =
  key json_file monitor-parameters:json-path
126 127 128
  key monitor_bin monitor-parameters:executable
  key pwd monitor-directory:monitoring-cgi
  key this_file :filename
129
  raw python_executable ${buildout:executable}
130

131 132 133 134 135 136 137 138 139 140 141
[deploy-status-history-cgi]
recipe = slapos.recipe.template:jinja2
template = ${status-history-cgi:location}/${status-history-cgi:filename}
rendered = $${monitor-directory:monitoring-cgi}/$${:filename}
filename = status-history.cgi
mode = 0744
context =
  key monitor_db_path monitor-parameters:db-path
  key status_history_length zero-parameters:status-history-length
  raw python_executable ${buildout:executable}

142
[deploy-settings-cgi]
143
recipe = slapos.recipe.template:jinja2
144
template = ${settings-cgi:location}/${settings-cgi:filename}
145
rendered = $${monitor-directory:knowledge0-cgi}/$${:filename}
146
filename = settings.cgi
147 148 149
mode = 0744
context =
  raw config_cfg $${buildout:directory}/knowledge0.cfg
150
  raw timestamp $${buildout:directory}/.timestamp
151
  raw python_executable ${buildout:executable}
152
  key pwd monitor-directory:knowledge0-cgi
153
  key this_file :filename
154

155 156 157 158 159 160 161 162 163 164 165
[deploy-monitor-password-cgi]
recipe = slapos.recipe.template:jinja2
template = ${monitor-password-cgi:location}/${monitor-password-cgi:filename}
rendered = $${monitor-directory:knowledge0-cgi}/$${:filename}
filename = monitor-password.cgi
mode = 0744
context =
  raw python_executable ${buildout:executable}
  key pwd monitor-directory:knowledge0-cgi
  key this_file :filename

166 167 168
[deploy-monitor-script]
recipe = slapos.recipe.template:jinja2
template = ${monitor-bin:location}/${monitor-bin:filename}
169
rendered = $${monitor-parameters:executable}
170 171
mode = 0744
context =
172
  section directory monitor-directory
173
  section monitor_parameter monitor-parameters
174
  key monitoring_file_json monitor-parameters:json-path
175
  raw python_executable ${buildout:executable}
176

177
[make-rss]
178 179 180
recipe = slapos.recipe.template:jinja2
template = ${make-rss-script:output}
rendered = $${monitor-directory:bin}/make-rss.sh
181
mode = 0744
182 183 184
context =
  section directory monitor-directory
  section monitor_parameters monitor-parameters
185

186 187
[monitor-directory-access]
recipe = plone.recipe.command
188
command = ln -s $${:source} $${monitor-directory:private-directory}
189 190
source =

191 192 193 194 195 196
[monitor-instance-log-access]
recipe = plone.recipe.command
command = if [ -d $${:source} ]; then ln -s $${:source} $${monitor-directory:private-directory}/instance-logs; fi
update-command = if [ -d $${:source} ]; then ln -s $${:source} $${monitor-directory:private-directory}/instance-logs; fi
source = $${monitor-directory:home}/.slapgrid/log/

197 198
[cadirectory]
recipe = slapos.cookbook:mkdirectory
199 200 201 202 203
requests = $${monitor-directory:ca-dir}/requests/
private = $${monitor-directory:ca-dir}/private/
certs = $${monitor-directory:ca-dir}/certs/
newcerts = $${monitor-directory:ca-dir}/newcerts/
crl = $${monitor-directory:ca-dir}/crl/
204 205 206 207

[certificate-authority]
recipe = slapos.cookbook:certificate_authority
openssl-binary = ${openssl:location}/bin/openssl
208
ca-dir = $${monitor-directory:ca-dir}
209
requests-directory = $${cadirectory:requests}
210
wrapper = $${monitor-directory:service}/certificate_authority
211 212 213 214 215
ca-private = $${cadirectory:private}
ca-certs = $${cadirectory:certs}
ca-newcerts = $${cadirectory:newcerts}
ca-crl = $${cadirectory:crl}

216 217 218 219 220
[ca-httpd]
<= certificate-authority
recipe = slapos.cookbook:certificate_authority.request
key-file = $${cadirectory:certs}/httpd.key
cert-file = $${cadirectory:certs}/httpd.crt
221 222
executable = $${monitor-directory:bin}/cgi-httpd
wrapper = $${monitor-directory:service}/cgi-httpd
223 224 225
# Put domain name
name = example.com

226 227 228
###########
# Deploy a webserver running cgi scripts for monitoring
###########
229
[public]
230
recipe = slapos.cookbook:zero-knowledge.write
231
filename = knowledge0.cfg
232
status-history-length = 5
233 234

[zero-parameters]
235
recipe = slapos.cookbook:zero-knowledge.read
236
filename = $${public:filename}
237

238 239
[monitor-rewrite-rule]

240
# XXX could it be something lighter?
241
[monitor-httpd-configuration]
242 243 244
pid-file = $${monitor-directory:run}/cgi-httpd.pid
cgid-pid-file = $${monitor-directory:run}/cgi-httpd-cgid.pid
error-log = $${monitor-directory:log}/cgi-httpd-error-log
245 246 247 248 249 250 251 252 253 254 255 256 257
listening-ip = $${slap-parameters:ipv6-random}
certificate = $${ca-httpd:cert-file}
key = $${ca-httpd:key-file}

[monitor-httpd-configuration-file]
recipe = slapos.recipe.template:jinja2
template = ${monitor-httpd-template:destination}/${monitor-httpd-template:filename}
rendered = $${monitor-directory:etc}/cgi-httpd.conf
mode = 0744
context =
  section directory monitor-directory
  section monitor_parameters monitor-parameters
  section httpd_configuration monitor-httpd-configuration
258
  section monitor_rewrite_rule monitor-rewrite-rule
259 260 261 262

[cgi-httpd-wrapper]
recipe = slapos.cookbook:wrapper
apache-executable = ${apache:location}/bin/httpd
263
command-line = $${:apache-executable} -f $${monitor-httpd-configuration-file:rendered} -DFOREGROUND
264
wrapper-path = $${ca-httpd:executable}
265

266
[cgi-httpd-graceful-wrapper]
267 268 269 270 271 272 273 274
recipe = slapos.recipe.template:jinja2
template = ${template-wrapper:output}
rendered = $${monitor-directory:etc-run}/cgi-httpd-graceful
mode = 0700
context =
    key content :command
command = kill -USR1 $(cat $${monitor-httpd-configuration:pid-file})

275

276 277
[monitor-promise]
recipe = slapos.cookbook:check_url_available
278 279
path = $${monitor-directory:promise}/monitor
url = $${monitor-parameters:url}/$${monitor-parameters:index-filename}
280 281 282 283
check-secure = 1
dash_path = ${dash:location}/bin/dash
curl_path = ${curl:location}/bin/curl

284
[publish-connection-informations]
285
recipe = slapos.cookbook:publish
286
monitor_url = $${monitor-parameters:url}