defaults = { 'apt': { 'packages': { 'docker-ce': {}, 'docker-ce-cli': {}, 'docker-compose-plugin': {}, }, 'repos': { 'docker': { 'items': { 'deb https://download.docker.com/linux/debian {os_release} stable', }, }, }, }, 'backups': { 'paths': { '/var/opt/docker-engine', }, }, 'hosts': { 'entries': { '172.17.0.1': { 'host.docker.internal', }, }, }, 'docker-engine': { 'config': { 'iptables': False, 'no-new-privileges': True, }, }, 'zfs': { 'datasets': { 'tank/docker-data': { 'mountpoint': '/var/opt/docker-engine', }, }, }, } @metadata_reactor.provides( 'icinga2_api/docker-engine/services', ) def monitoring(metadata): services = { 'DOCKER PROCESS': { 'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -C dockerd -c 1:', }, } for app in metadata.get('docker-engine/containers', {}): services[f'DOCKER CONTAINER {app}'] = { 'command_on_monitored_host': f'sudo /usr/local/share/icinga/plugins/check_docker_container {app}' } return { 'icinga2_api': { 'docker-engine': { 'services': services, }, }, } @metadata_reactor.provides( 'zfs/datasets', ) def zfs(metadata): datasets = {} for app in metadata.get('docker-engine/containers', {}): datasets[f'tank/docker-data/{app}'] = { 'mountpoint': f'/var/opt/docker-engine/{app}' } return { 'zfs': { 'datasets': datasets, }, }