Host-Ansible-Setup/services/old_icinga2/docker-compose.yml

197 lines
6.3 KiB
YAML

services:
# Gluetun is used to connect container to VPN
icinga2-gluetun:
image: qmcgaw/gluetun
cap_add:
- NET_ADMIN
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
- VPN_ENDPOINT_IP={{ proxy_server_ip }}
- VPN_ENDPOINT_PORT={{ proxy_server_vpn_port }}
- WIREGUARD_PUBLIC_KEY={{ vpn_server_pubkey }}
- WIREGUARD_PRIVATE_KEY={{ icinga2_backend_privkey }}
- WIREGUARD_ADDRESSES=10.0.0.198/32
- FIREWALL_VPN_INPUT_PORTS=8080,5665
networks:
icinga2:
ports:
# Web UI Port
- "8080:8080"
# Backend API Port
- "5665:5665"
deploy:
resources:
limits:
cpus: '0.10'
memory: 512M
# Backend service that does the checking and hosts API
icinga2-master:
network_mode: "service:icinga2-gluetun"
image: icinga/icinga2
container_name: icinga2-master
hostname: icinga2-master
volumes:
- ./icinga2-master-data:/data
environment:
- ICINGA_MASTER=1
depends_on:
- icinga2-dbhandler
deploy:
resources:
limits:
cpus: '0.25'
memory: 512M
# Service that handles everything between icinga SQL and icinga Redis databases
icinga2-dbhandler: image: icinga/icingadb
restart: always
environment:
- ICINGADB_REDIS_HOST=11.1.0.21
- ICINGADB_REDIS_PORT=6379
- ICINGADB_REDIS_PASSWORD="{{ service_icinga2_icinga2_redis_password }}"
- ICINGADB_DATABASE_TYPE=pgsql
- ICINGADB_DATABASE_HOST=11.1.0.22
- ICINGADB_DATABASE_PORT=5432
- ICINGADB_DATABASE_DATABASE=icinga2-db
- ICINGADB_DATABASE_USER=icinga2-db
- ICINGADB_DATABASE_PASSWORD="{{ service_icinga2_icinga2_db_postgres_password }}"
depends_on:
- icinga2-redis
- icinga2-db
networks:
icinga2:
ipv4_address:11.1.0.20
deploy:
resources:
limits:
cpus: '0.10'
memory: 256M
icinga2-redis:
image: "redis:alpine"
command: "redis-server --save 60 1 --loglevel warning --requirepass {{ service_icinga2_icinga2_redis_password }}"
volumes:
- ./redis-data:/data
networks:
icinga2:
ipv4_address:11.1.0.21
deploy:
resources:
limits:
cpus: '0.10'
memory: 128M
icinga2-db:
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
volumes:
- ./postgres-data/icinga2-db:/var/lib/postgresql/data
environment:
POSTGRES_DB: icinga2-db
POSTGRES_USER: icinga2-db
POSTGRES_PASSWORD: "{{ service_icinga2_icinga2_db_postgres_password }}"
healthcheck:
test: ["CMD-SHELL","pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
networks:
icinga2:
ipv4_address:11.1.0.22
deploy:
resources:
limits:
cpus: '0.10'
memory: 128M
icinga2-web-db:
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
volumes:
- ./postgres-data/icinga2-web-db:/var/lib/postgresql/data
environment:
POSTGRES_DB: icinga2-web-db
POSTGRES_USER: icinga2-web-db
POSTGRES_PASSWORD: "{{ service_icinga2_icinga2_web_db_postgres_password }}"
healthcheck:
test: ["CMD-SHELL","pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
networks:
icinga2:
ipv4_address:11.1.0.23
deploy:
resources:
limits:
cpus: '0.10'
memory: 128M
# Web UI
icinga2-web:
network_mode: "service:icinga2-gluetun"
image: icinga/icingaweb2
volumes:
- ./icinga2-web-data:/data
environment:
# Incingaweb General Configuration
- icingaweb.enabledModules=icingadb
- icingaweb.authentication.icingaweb2.backend=db
- icingaweb.authentication.icingaweb2.resource=icingaweb_db
- icingaweb.config.global.config_backend=db
- icingaweb.config.global.config_resource=icingaweb_db
- icingaweb.config.logging.log=php
- icingaweb.groups.icingaweb2.backend=db
- icingaweb.groups.icingaweb2.resource=icingaweb_db
# IncingaDB Redis Database configuration
- icingaweb.modules.icingadb.config.icingadb.resource=icingadb
- icingaweb.modules.icingadb.redis.redis1.host=11.1.0.21
- icingaweb.modules.icingadb.redis.redis1.port=6379
# Connection to backend Incinga server API
- icingaweb.modules.icingadb.commandtransports.icinga2.transport=api
- icingaweb.modules.icingadb.commandtransports.icinga2.host=127.0.0.1
- icingaweb.modules.icingadb.commandtransports.icinga2.username=root
- icingaweb.modules.icingadb.commandtransports.icinga2.password=123456
# Incinga Web SQL Database configuration
- icingaweb.resources.icingaweb_db.type=db
- icingaweb.resources.icingaweb_db.db=pgsql
- icingaweb.resources.icingaweb_db.host=11.1.0.23
- icingaweb.resources.icingaweb_db.dbname=icinga2-web-db
- icingaweb.resources.icingaweb_db.username=icinga2-web-db
- icingaweb.resources.icingaweb_db.password="{{ service_icinga2_icinga2_web_db_postgres_password }}"
- icingaweb.resources.icingaweb_db.charset=utf8mb4
# IncingaDB SQL Database configuration
- icingaweb.resources.icingadb.type=db
- icingaweb.resources.icingadb.db=pgsql
- icingaweb.resources.icingadb.host=11.1.0.22
- icingaweb.resources.icingadb.dbname=icinga2-db
- icingaweb.resources.icingadb.username=icinga2-db
- icingaweb.resources.icingadb.password="{{ service_icinga2_icinga2_db_postgres_password }}"
- icingaweb.resources.icingadb.charset=utf8mb4
# Incinga User/Admin Configuration
- icingaweb.passwords.icingaweb2.icingaadmin="{{ service_icinga2_icingaadmin_password }}"
- icingaweb.roles.Administrators.users=icingaadmin
- icingaweb.roles.Administrators.permissions=*
- icingaweb.roles.Administrators.groups=Administrators
depends_on:
- icinga2-master
- icinga2-web-db
deploy:
resources:
limits:
cpus: '0.25'
memory: 512M
networks:
icinga2:
driver: bridge
driver_opts:
com.docker.network.bridge.name: icinga2
# com.docker.network.driver.enable_ip_masquerade: 0
ipam:
config:
- subnet: 11.1.0.0/16
# gateway: 11.5.0.1