defaults = { 'backups': { 'paths': { '/opt/matrix-dimension', '/var/opt/matrix-dimension', }, }, 'icinga2_api': { 'matrix-dimension': { 'services': { 'MATRIX-DIMENSION PROCESS': { 'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -a matrix-dimension -c 1:', }, }, }, }, 'matrix-dimension': { 'install_dir': '/opt/matrix-dimension', 'data_dir': '/var/opt/matrix-dimension', 'database': { 'user': 'matrix-dimension', 'password': repo.vault.password_for('{} postgresql matrix-dimension'.format(node.name)), 'database': 'matrix-dimension', }, }, 'postgresql': { 'roles': { 'matrix-dimension': { 'password': repo.vault.password_for('{} postgresql matrix-dimension'.format(node.name)), }, }, 'databases': { 'matrix-dimension': { 'owner': 'matrix-dimension', }, }, }, 'users': { 'matrix-dimension': { 'home': '/var/opt/matrix-dimension', }, }, } @metadata_reactor.provides( 'nginx/vhosts/matrix-dimension', ) def nginx_config(metadata): return { 'nginx': { 'vhosts': { 'matrix-dimension': { 'domain': metadata.get('matrix-dimension/url'), 'do_not_set_content_security_headers': True, 'max_body_size': '50M', 'locations': { '/': { 'target': 'http://127.0.0.1:20030', }, }, }, }, }, } @metadata_reactor.provides( 'zfs/datasets', ) def zfs(metadata): return { 'zfs': { 'datasets': { 'tank/matrix-dimension': {}, 'tank/matrix-dimension/install': { 'mountpoint': metadata.get('matrix-dimension/install_dir'), 'needed_by': { 'directory:{}'.format(metadata.get('matrix-dimension/install_dir')), }, }, 'tank/matrix-dimension/var': { 'mountpoint': metadata.get('matrix-dimension/data_dir'), 'needed_by': { 'directory:{}'.format(metadata.get('matrix-dimension/data_dir')), }, }, }, }, } # XXX enable this once there are releases for matrix-dimension #@metadata_reactor.provides( # 'icinga2_api/matrix-dimension/services', #) #def icinga_check_for_new_release(metadata): # return { # 'icinga2_api': { # 'matrix-dimension': { # 'services': { # 'MATRIX-DIMENSION UPDATE': { # 'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release turt2live/matrix-dimension {}'.format(metadata.get('matrix-dimension/version')), # 'vars.notification.mail': True, # 'check_interval': '60m', # }, # }, # }, # }, # }