defaults = { 'apt': { 'packages': { 'golang-go': {}, 'imagemagick': {}, 'ffmpeg': {}, }, }, 'backups': { 'paths': { '/var/matrix/media', }, }, 'icinga2_api': { 'matrix-media-repo': { 'services': { 'MATRIX-MEDIA-REPO PROCESS': { 'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -a media_repo -c 1:', 'vars.notification.sms': True, }, }, }, }, 'matrix-media-repo': { 'database': { 'user': 'matrix-media-repo', 'password': repo.vault.password_for('{} postgresql matrix-media-repo'.format(node.name)), 'database': 'matrix-media-repo', }, 'archive': { 'self-service': False, }, 'download_max_mb': 100, 'preview_max_mb': 10, 'shared-secret-token': repo.vault.password_for('{} matrix-media-repo shared-secret-token'.format(node.name)), 'upload_max_mb': 100, }, 'postgresql': { 'roles': { 'matrix-media-repo': { 'password': repo.vault.password_for('{} postgresql matrix-media-repo'.format(node.name)), }, }, 'databases': { 'matrix-media-repo': { 'owner': 'matrix-media-repo', }, }, }, 'zfs': { 'datasets': { 'tank/matrix-media-repo': {}, 'tank/matrix-media-repo/install': { 'mountpoint': '/opt/matrix-media-repo', 'needed_by': { 'directory:/opt/matrix-media-repo', }, }, 'tank/matrix-media-repo/media': { 'mountpoint': '/var/matrix/media', 'compression': 'on', 'needed_by': { 'directory:/var/matrix/media', }, }, }, }, } if node.os == 'debian' and node.os_version[0] <= 10: defaults['apt']['repos'] = { 'backports': { 'install_gpg_key': False, # default debian signing key 'items': { 'deb http://deb.debian.org/debian {os_release}-backports main', }, }, } if node.has_bundle('telegraf'): defaults['telegraf'] = { 'input_plugins': { 'prometheus': { 'matrix_media_repo': { 'urls': [ 'http://127.0.0.1:20091/metrics' ], 'metric_version': 2, }, }, }, } @metadata_reactor.provides( 'matrix-media-repo/workers', ) def cpu_to_workers(metadata): return { 'matrix-media-repo': { 'workers': max(metadata.get('vm/cpu', 1), 4), }, } @metadata_reactor.provides( 'icinga2_api/matrix-media-repo/services', ) def icinga_check_for_new_release(metadata): return { 'icinga2_api': { 'matrix-media-repo': { 'services': { 'MATRIX-MEDIA-REPO UPDATE': { 'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release turt2live/matrix-media-repo {}'.format(metadata.get('matrix-media-repo/version')), 'vars.notification.mail': True, 'check_interval': '60m', }, }, }, }, }