Add docker-compose.yml
This commit is contained in:
parent
3eeb720b87
commit
aa69e3fb06
|
|
@ -0,0 +1,183 @@
|
|||
version: '3.7'
|
||||
|
||||
x-icinga-db-web-config:
|
||||
&icinga-db-web-config
|
||||
icingaweb.modules.icingadb.config.icingadb.resource: icingadb
|
||||
icingaweb.modules.icingadb.redis.redis1.host: icingadb-redis
|
||||
icingaweb.modules.icingadb.redis.redis1.port: 6379
|
||||
icingaweb.modules.icingadb.commandtransports.icinga2.host: icinga2
|
||||
icingaweb.modules.icingadb.commandtransports.icinga2.port: 5665
|
||||
icingaweb.modules.icingadb.commandtransports.icinga2.password: ${ICINGAWEB_ICINGA2_API_USER_PASSWORD:-icingaweb}
|
||||
icingaweb.modules.icingadb.commandtransports.icinga2.transport: api
|
||||
icingaweb.modules.icingadb.commandtransports.icinga2.username: icingaweb
|
||||
icingaweb.resources.icingadb.charset: utf8mb4
|
||||
icingaweb.resources.icingadb.db: mysql
|
||||
icingaweb.resources.icingadb.dbname: icingadb
|
||||
icingaweb.resources.icingadb.host: mysql
|
||||
icingaweb.resources.icingadb.password: ${ICINGADB_MYSQL_PASSWORD:-icingadb}
|
||||
icingaweb.resources.icingadb.type: db
|
||||
icingaweb.resources.icingadb.username: icingadb
|
||||
|
||||
x-icinga-director-config:
|
||||
&icinga-director-config
|
||||
icingaweb.modules.director.config.db.resource: director-mysql
|
||||
icingaweb.modules.director.kickstart.config.endpoint: icinga2
|
||||
icingaweb.modules.director.kickstart.config.host: icinga2
|
||||
icingaweb.modules.director.kickstart.config.port: 5665
|
||||
icingaweb.modules.director.kickstart.config.username: icingaweb
|
||||
icingaweb.modules.director.kickstart.config.password: ${ICINGAWEB_ICINGA2_API_USER_PASSWORD:-icingaweb}
|
||||
icingaweb.resources.director-mysql.charset: utf8mb4
|
||||
icingaweb.resources.director-mysql.db: mysql
|
||||
icingaweb.resources.director-mysql.dbname: director
|
||||
icingaweb.resources.director-mysql.host: mysql
|
||||
icingaweb.resources.director-mysql.password: ${ICINGA_DIRECTOR_MYSQL_PASSWORD:-director}
|
||||
icingaweb.resources.director-mysql.type: db
|
||||
icingaweb.resources.director-mysql.username: director
|
||||
|
||||
x-icinga-web-config:
|
||||
&icinga-web-config
|
||||
icingaweb.authentication.icingaweb2.backend: db
|
||||
icingaweb.authentication.icingaweb2.resource: icingaweb-mysql
|
||||
icingaweb.config.global.config_backend: db
|
||||
icingaweb.config.global.config_resource: icingaweb-mysql
|
||||
icingaweb.config.global.module_path: /usr/share/icingaweb2/modules
|
||||
icingaweb.config.logging.log: php
|
||||
icingaweb.groups.icingaweb2.backend: db
|
||||
icingaweb.groups.icingaweb2.resource: icingaweb-mysql
|
||||
icingaweb.passwords.icingaweb2.icingaadmin: icinga
|
||||
icingaweb.resources.icingaweb-mysql.charset: utf8mb4
|
||||
icingaweb.resources.icingaweb-mysql.db: mysql
|
||||
icingaweb.resources.icingaweb-mysql.dbname: icingaweb
|
||||
icingaweb.resources.icingaweb-mysql.host: mysql
|
||||
icingaweb.resources.icingaweb-mysql.password: icingaweb
|
||||
icingaweb.resources.icingaweb-mysql.type: db
|
||||
icingaweb.resources.icingaweb-mysql.username: icingaweb
|
||||
icingaweb.roles.Administrators.groups: Administrators
|
||||
icingaweb.roles.Administrators.permissions: '*'
|
||||
icingaweb.roles.Administrators.users: icingaadmin
|
||||
|
||||
x-icinga2-environment:
|
||||
&icinga2-environment
|
||||
ICINGA_CN: icinga2
|
||||
ICINGA_MASTER: 1
|
||||
VAULT_ADDR: https://10.10.17.11:8200
|
||||
PATH: /tools/bin:$PATH
|
||||
VAULT_SKIP_VERIFY: true
|
||||
VAULT_ROLE_ID: 15cee1c1-50a9-4b2c-882d-0e4d0f50a411
|
||||
VAULT_SECRET_ID: fc7762f0-40a7-8894-1a5e-defc13040b97
|
||||
|
||||
x-logging:
|
||||
&default-logging
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-file: "10"
|
||||
max-size: "1M"
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: icinga-playground
|
||||
|
||||
services:
|
||||
director:
|
||||
command:
|
||||
- /bin/bash
|
||||
- -ce
|
||||
- |
|
||||
echo "Testing the database connection. Container could restart."
|
||||
(echo > /dev/tcp/mysql/3306) >/dev/null 2>&1
|
||||
echo "Testing the Icinga 2 API connection. Container could restart."
|
||||
(echo > /dev/tcp/icinga2/5665) >/dev/null 2>&1
|
||||
icingacli director migration run
|
||||
(icingacli director kickstart required && icingacli director kickstart run && icingacli director config deploy) || true
|
||||
echo "Starting Icinga Director daemon."
|
||||
icingacli director daemon run
|
||||
entrypoint: []
|
||||
logging: *default-logging
|
||||
image: icinga/icingaweb2
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- icingaweb:/data
|
||||
|
||||
# The Icinga 2 docker image does not support configuration via env vars at the moment.
|
||||
# So, we have to ship some configs with this little init container. Referenced in depends_on of the icinga2 service.
|
||||
init-icinga2:
|
||||
command: [ "/config/init-icinga2.sh" ]
|
||||
environment: *icinga2-environment
|
||||
image: icinga/icinga2
|
||||
logging: *default-logging
|
||||
volumes:
|
||||
- icinga2:/data
|
||||
- ./icingadb.conf:/config/icingadb.conf
|
||||
- ./icingaweb-api-user.conf:/config/icingaweb-api-user.conf
|
||||
- ./init-icinga2.sh:/config/init-icinga2.sh
|
||||
|
||||
icinga2:
|
||||
build: .
|
||||
command: [ "sh", "-c", "sleep 5 ; icinga2 daemon" ]
|
||||
depends_on:
|
||||
- icingadb-redis
|
||||
- init-icinga2
|
||||
environment: *icinga2-environment
|
||||
image: icinga/icinga2
|
||||
logging: *default-logging
|
||||
ports:
|
||||
- 5665:5665
|
||||
volumes:
|
||||
- icinga2:/data
|
||||
- ./icinga2.conf.d:/custom_data/custom.conf.d
|
||||
- ./plugins:/usr/lib/nagios/plugins/custom
|
||||
- /etc/icinga2/vault:/vault-creds:ro
|
||||
- ./bin:/tools/bin:ro
|
||||
- ./requirements.txt:/tmp/requirements.txt
|
||||
icingadb:
|
||||
environment:
|
||||
ICINGADB_DATABASE_HOST: mysql
|
||||
ICINGADB_DATABASE_PORT: 3306
|
||||
ICINGADB_DATABASE_DATABASE: icingadb
|
||||
ICINGADB_DATABASE_USER: icingadb
|
||||
ICINGADB_DATABASE_PASSWORD: ${ICINGADB_MYSQL_PASSWORD:-icingadb}
|
||||
ICINGADB_REDIS_HOST: icingadb-redis
|
||||
ICINGADB_REDIS_PORT: 6379
|
||||
depends_on:
|
||||
- mysql
|
||||
- icingadb-redis
|
||||
image: icinga/icingadb
|
||||
logging: *default-logging
|
||||
|
||||
icingadb-redis:
|
||||
image: redis
|
||||
logging: *default-logging
|
||||
|
||||
icingaweb:
|
||||
depends_on:
|
||||
- mysql
|
||||
environment:
|
||||
icingaweb.enabledModules: director, icingadb, incubator
|
||||
<<: [*icinga-db-web-config, *icinga-director-config, *icinga-web-config]
|
||||
logging: *default-logging
|
||||
image: icinga/icingaweb2
|
||||
ports:
|
||||
- 8080:8080
|
||||
# Restart Icinga Web container automatically since we have to wait for the database to be ready.
|
||||
# Please note that this needs a more sophisticated solution.
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- icingaweb:/data
|
||||
|
||||
mysql:
|
||||
image: mariadb:10.7
|
||||
command: --default-authentication-plugin=mysql_native_password
|
||||
environment:
|
||||
MYSQL_RANDOM_ROOT_PASSWORD: 1
|
||||
ICINGADB_MYSQL_PASSWORD: ${ICINGADB_MYSQL_PASSWORD:-icingadb}
|
||||
ICINGAWEB_MYSQL_PASSWORD: ${ICINGAWEB_MYSQL_PASSWORD:-icingaweb}
|
||||
ICINGA_DIRECTOR_MYSQL_PASSWORD: ${ICINGA_DIRECTOR_MYSQL_PASSWORD:-director}
|
||||
logging: *default-logging
|
||||
volumes:
|
||||
- mysql:/var/lib/mysql
|
||||
- ./env/mysql/:/docker-entrypoint-initdb.d/
|
||||
|
||||
volumes:
|
||||
icinga2:
|
||||
icingaweb:
|
||||
mysql:
|
||||
Loading…
Reference in New Issue