bundles/icinga2: generate icinga_users from users.json
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit

This commit is contained in:
Franzi 2020-11-21 21:46:41 +01:00
parent c77856f97a
commit 12cf03e03f
Signed by: kunsi
GPG key ID: 12E3D2136B818350
4 changed files with 38 additions and 7 deletions

View file

@ -2,13 +2,20 @@ object UserGroup "on-call_sms" {
display_name = "On-Call Support"
}
% for username in sorted(node.metadata.get('icinga2', {}).get('icinga_users', {})):
% for username, config in sorted(node.metadata.get('icinga2', {}).get('icinga_users', {}).items()):
object User "${username}" {
display_name = "${username}"
enable_notifications = true
period = "24x7" # Is overwritten in notifications.conf
period = "24x7"
states = [ OK, Critical, Up, Down ]
types = [ Problem, Recovery ]
% if config['is_admin']:
groups = [ "on-call_sms" ]
% endif
email = "${config['email']}"
vars.mobile = "${config['phone']}"
}
% endfor

View file

@ -1,3 +1,6 @@
from json import loads
from os.path import join
defaults = {
'apt': {
'repos': {
@ -46,3 +49,27 @@ defaults = {
},
},
}
@metadata_reactor
def add_users_from_json(metadata):
with open(join(repo.path, 'users.json'), 'r') as f:
json = loads(f.read())
users = {}
for uname, config in json.items():
users[uname] = {
'email': '',
'phone': '',
'is_admin': config.get('is_admin', False),
}
if 'email' in config:
users[uname]['email'] = repo.vault.decrypt(config['email'])
if 'phone' in config:
users[uname]['phone'] = repo.vault.decrypt(config['phone'])
return {
'icinga2': {
'icinga_users': users,
},
}