create inital compose
This commit is contained in:
161
README.md
161
README.md
@@ -1,149 +1,28 @@
|
||||
# Docker Icinga2
|
||||
[](https://git.ao-it.net/docker/icinga2/actions?workflow=docker-build.yml&actor=0&status=0)
|
||||
|
||||
## exampe compose
|
||||
### without icingaweb
|
||||
```yml
|
||||
services:
|
||||
icinga2:
|
||||
image: https://git.ao-it.net/docker/icinga2:latest
|
||||
depends_on:
|
||||
- redis
|
||||
restart: always
|
||||
ports:
|
||||
- 5665:5665 # only need if you plan to use api from other sources as icingaweb2
|
||||
volumes:
|
||||
- ./files/icinga2:/data
|
||||
environment:
|
||||
# REMOVE VARS HERE IF YOU EDIT THE CONFIG DIRECTLY!!
|
||||
# The variables are primarily for the initial setup, later editing is recommended directly in the icinga config.
|
||||
# Empty or non-existent vars do not change anything
|
||||
- ICINGA2_API_USER_ROOT_PASS: ${API_ROOT_PASS:-changeME!} # only on fist init! set api user root password
|
||||
- ICINGA2_API_USER_ICINGAWEB_PASS: ${API_ICINGAWEB_PASS:-icingaweb} # only on first init! create api user icingaweb and set password
|
||||
- ICINGA2_ICINGADB_REDIS_HOST: ${REDIS_HOST:-redis} # set redis host (anytime)
|
||||
- ICINGA2_ICINGADB_REDIS_PORT: ${REDIS_PORT:-6379} # set redis port (anytime)
|
||||
#- ICINGA2_ICINGADB_REDIS_PASS: # set redis password (anytime)
|
||||
If you need a full stack:
|
||||
* [AO-IT: icinga-stack](https://git.ao-it.net/docker/icinga-stack)
|
||||
* [AO-IT: icingaweb2](https://git.ao-it.net/docker/icinga-satellite)
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
restart: always
|
||||
Or a additional satellite:
|
||||
* [AO-IT: icinga-satellite](https://git.ao-it.net/docker/icinga-satellite)
|
||||
|
||||
db_icinga:
|
||||
image: mariadb:latest
|
||||
restart: always
|
||||
volumes:
|
||||
- ./files/dbs/icinga2:/var/lib/mysql
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: example
|
||||
MARIADB_DATABASE: ${ICINGA_DB:-icingadb}
|
||||
MARIADB_USER: ${ICINGA_DB_USER:-icingadb}
|
||||
MARIADB_PASSWORD: ${ICINGA_DB_PASS:-icingadb}
|
||||
|
||||
icingadb:
|
||||
image: icinga/icingadb
|
||||
depends_on:
|
||||
- redis
|
||||
- db_icinga
|
||||
restart: always
|
||||
environment:
|
||||
- ICINGADB_REDIS_HOST=${REDIS_HOST:-redis}
|
||||
- ICINGADB_REDIS_PORT=${REDIS_PORT:-6379}
|
||||
#- ICINGADB_REDIS_PASSWORD=123456
|
||||
- ICINGADB_DATABASE_HOST=db_icinga
|
||||
- ICINGADB_DATABASE_PORT=3306
|
||||
- ICINGADB_DATABASE_DATABASE=${ICINGA_DB:-icingadb}
|
||||
- ICINGADB_DATABASE_USER=${ICINGA_DB_USER:-icingadb}
|
||||
- ICINGADB_DATABASE_PASSWORD=${ICINGA_DB_PASS:-icingadb}
|
||||
## usage
|
||||
```
|
||||
|
||||
### with icingaweb2
|
||||
See: [https://git.ao-it.net/docker/icingaweb2](https://git.ao-it.net/docker/icingaweb2) (planed!)
|
||||
In this state you must do the inital web setup manually because:
|
||||
- https://github.com/Icinga/docker-icingaweb2/issues/113
|
||||
All works fine without the role save to DB. The icingaweb2 default admin have no right ...
|
||||
> add in services bevor networks
|
||||
```yaml
|
||||
services: # remove this when you merge it with the example above
|
||||
db_icingaweb:
|
||||
image: mariadb
|
||||
restart: always
|
||||
volumes:
|
||||
- ./files/dbs/icingaweb:/var/lib/mysql
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: example
|
||||
MARIADB_DATABASE: ${ICINGAWEB_DB:-icingaweb}
|
||||
MARIADB_USER: ${ICINGAWEB_DB_USER:-icingaweb}
|
||||
MARIADB_PASSWORD: ${ICINGAWEB_DB_PASS:-icingaweb}
|
||||
|
||||
icingaweb:
|
||||
image: icinga/icingaweb2
|
||||
depends_on:
|
||||
- db_icingaweb
|
||||
- icinga2
|
||||
restart: always
|
||||
ports:
|
||||
- 8080:8080 # only need if no reverse proxy can reach this port docker internaly
|
||||
volumes:
|
||||
- ./files/icingaweb:/data # as docker volume or need: chown 33:33 files/icingaweb
|
||||
- ./files/icingaweb-modules/grafana:/usr/share/icingaweb2/modules/grafana
|
||||
git clone https://git.ao-it.net/docker/icinga2
|
||||
cd icinga2
|
||||
cp env.sample .env
|
||||
nano .env # set your env
|
||||
docker compose up
|
||||
```
|
||||
Default vars a working but not recommend in prod!
|
||||
Minimum recommended adjustments:
|
||||
* ICINGA2_API_USER_ROOT_PASS
|
||||
* ICINGA2_API_USER_ICINGAWEB_PASS
|
||||
|
||||
### target state icingaweb2
|
||||
```yaml
|
||||
services: # remove this when you merge it with the example above
|
||||
db_icingaweb:
|
||||
image: mariadb
|
||||
restart: always
|
||||
volumes:
|
||||
- ./files/dbs/icingaweb:/var/lib/mysql
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: example
|
||||
MARIADB_DATABASE: ${ICINGAWEB_DB:-icingaweb}
|
||||
MARIADB_USER: ${ICINGAWEB_DB_USER:-icingaweb}
|
||||
MARIADB_PASSWORD: ${ICINGAWEB_DB_PASS:-icingaweb}
|
||||
All other var can be use at is, because all is in docker network and not exposed.
|
||||
|
||||
icingaweb:
|
||||
image: icinga/icingaweb2
|
||||
depends_on:
|
||||
- db_icingaweb
|
||||
- icinga2
|
||||
restart: always
|
||||
ports:
|
||||
- 8080:8080 # only need if no reverse proxy can reach this port docker internaly
|
||||
volumes:
|
||||
- ./files/icingaweb:/data # as docker volume or need: chown 33:33 files/icingaweb
|
||||
- ./files/icingaweb-modules/grafana:/usr/share/icingaweb2/modules/grafana
|
||||
environment:
|
||||
- icingaweb.resources.icingaweb_db.type=db
|
||||
- icingaweb.resources.icingaweb_db.db=mysql
|
||||
- icingaweb.resources.icingaweb_db.host=db_icingaweb
|
||||
- icingaweb.resources.icingaweb_db.dbname=${ICINGAWEB_DB:-icingaweb}
|
||||
- icingaweb.resources.icingaweb_db.username=${ICINGAWEB_DB_USER:-icingaweb}
|
||||
- icingaweb.resources.icingaweb_db.password=${ICINGAWEB_DB_PASS:-icingaweb}
|
||||
- icingaweb.resources.icingaweb_db.charset=utf8mb4
|
||||
- icingaweb.authentication.icingaweb2.backend=db
|
||||
- icingaweb.authentication.icingaweb2.resource=icingaweb_db
|
||||
- icingaweb.groups.icingaweb2.backend=db
|
||||
- icingaweb.groups.icingaweb2.resource=icingaweb_db
|
||||
- icingaweb.config.global.config_backend=db
|
||||
- icingaweb.config.global.config_resource=icingaweb_db
|
||||
- icingaweb.roles.Administrators.permissions='*'
|
||||
- icingaweb.roles.Administrators.groups=Administrators
|
||||
- icingaweb.roles.Administrators.users=${ICINGAWEB_USER:-icingaadmin}
|
||||
- icingaweb.passwords.icingaweb2.icingaadmin=${ICINGAWEB_PASS:-changeME!}
|
||||
- icingaweb.config.logging.log=php
|
||||
- icingaweb.enabledModules=icingadb
|
||||
- icingaweb.resources.icingadb.type=db
|
||||
- icingaweb.resources.icingadb.db=mysql
|
||||
- icingaweb.resources.icingadb.host=db_icinga
|
||||
- icingaweb.resources.icingadb.dbname=${ICINGA_DB:-icingadb}
|
||||
- icingaweb.resources.icingadb.username=${ICINGA_DB_USER:-icingadb}
|
||||
- icingaweb.resources.icingadb.password={ICINGA_DB_PASS:-icingadb}
|
||||
- icingaweb.resources.icingadb.charset=utf8mb4
|
||||
- icingaweb.modules.icingadb.config.icingadb.resource=icingadb
|
||||
- icingaweb.modules.icingadb.redis.redis1.host=${REDIS_HOST:-redis}
|
||||
- icingaweb.modules.icingadb.redis.redis1.port=${REDIS_PORT:-6379}
|
||||
- icingaweb.modules.icingadb.commandtransports.icinga2.transport=api
|
||||
- icingaweb.modules.icingadb.commandtransports.icinga2.host=icinga2
|
||||
- icingaweb.modules.icingadb.commandtransports.icinga2.username=icingaweb
|
||||
- icingaweb.modules.icingadb.commandtransports.icinga2.password=${API_ICINGAWEB_PASS:-icingaweb}
|
||||
```
|
||||
Hints:
|
||||
* API user setup only runs once at start up!
|
||||
* Redis conf runs every time
|
||||
82
compose.yml
Normal file
82
compose.yml
Normal file
@@ -0,0 +1,82 @@
|
||||
services:
|
||||
db_icinga:
|
||||
image: mariadb
|
||||
hostname: ${ICINGA_DB_HOST:-db_icinga}
|
||||
restart: always
|
||||
volumes:
|
||||
- ./files/dbs/icinga:/var/lib/mysql
|
||||
networks:
|
||||
- icinga
|
||||
environment:
|
||||
MARIADB_RANDOM_ROOT_PASSWORD: yes
|
||||
MARIADB_DATABASE: ${ICINGA_DB:-icingadb}
|
||||
MARIADB_USER: ${ICINGA_DB_USER:-icingadb}
|
||||
MARIADB_PASSWORD: ${ICINGA_DB_PASS:-icingadb}
|
||||
|
||||
db_redis:
|
||||
image: redis
|
||||
hostname: ${ICINGADB_REDIS_HOST:-db_redis}
|
||||
restart: always
|
||||
networks:
|
||||
- icinga
|
||||
|
||||
# sync handler between icingadb (db_icinga) and redis (db_redis)
|
||||
icingadb:
|
||||
image: icinga/icingadb
|
||||
depends_on:
|
||||
- db_redis
|
||||
- db_icinga
|
||||
restart: always
|
||||
networks:
|
||||
- icinga
|
||||
environment:
|
||||
- ICINGADB_REDIS_HOST=${ICINGADB_REDIS_HOST:-db_redis}
|
||||
- ICINGADB_REDIS_PORT=${ICINGADB_REDIS_PORT:-6379}
|
||||
- ICINGADB_DATABASE_HOST=${ICINGA_DB_HOST:-db_icinga}
|
||||
- ICINGADB_DATABASE_PORT=${ICINGA_DB_PORT:-3306}
|
||||
- ICINGADB_DATABASE_DATABASE=${ICINGA_DB:-icingadb}
|
||||
- ICINGADB_DATABASE_USER=${ICINGA_DB_USER:-icingadb}
|
||||
- ICINGADB_DATABASE_PASSWORD=${ICINGA_DB_PASS:-icingadb}
|
||||
|
||||
db_influxdb:
|
||||
image: influxdb:1.8
|
||||
hostname: ${ICINGA_INFLUX_HOST:-db_influxdb}
|
||||
restart: always
|
||||
networks:
|
||||
- icinga
|
||||
volumes:
|
||||
- ./files/dbs/influx:/vol01/Docker/monitoring
|
||||
environment:
|
||||
- INFLUXDB_DB=${ICINGA_INFLUX_DB:-icinga}
|
||||
- INFLUXDB_USER=${ICINGA_INFLUX_USER:-icinga}
|
||||
- INFLUXDB_ADMIN_ENABLED=true
|
||||
- INFLUXDB_ADMIN_USER=${INFLUX_ADMIN_USER:-icinga}
|
||||
- INFLUXDB_ADMIN_PASSWORD=${INFLUX_ADMIN_PASS:-icinga}
|
||||
|
||||
icinga2:
|
||||
image: git.ao-it.net/docker/icinga2:latest
|
||||
hostname: ${ICINGA_API_HOST:-icinga2}
|
||||
depends_on:
|
||||
- db_redis
|
||||
restart: always
|
||||
volumes:
|
||||
- ./files/icinga2:/data
|
||||
ports:
|
||||
- ${ICINGA_API_PORT:5665}:5665 # only need if you plan to use api from other sources as icingaweb2
|
||||
networks:
|
||||
- icinga
|
||||
#- backend
|
||||
environment:
|
||||
# REMOVE VARS HERE IF YOU EDIT THE CONFIG DIRECTLY!!
|
||||
# The variables are primarily for the initial setup, later editing is recommended directly in the icinga config.
|
||||
# Empty or non-existent vars do not change anything
|
||||
ICINGA2_API_USER_ROOT_PASS: ${API_ROOT_PASS:-changeME!} # only on fist init! set api user root password
|
||||
ICINGA2_API_USER_ICINGAWEB_PASS: ${ICINGA_API_ICINGAWEB_PASS:-icingaweb} # only on first init! create api user icingaweb and set password
|
||||
ICINGA2_ICINGADB_REDIS_HOST: ${ICINGADB_REDIS_HOST:-db_redis}
|
||||
ICINGA2_ICINGADB_REDIS_PORT: ${ICINGADB_REDIS_PORT:-6379}
|
||||
ICINGA2_INFLUXDB_HOST: ${ICINGA_INFLUX_HOST:-db_influxdb}
|
||||
ICINGA2_INFLUXDB_PORT: ${ICINGA_INFLUX_PORT:-8086}
|
||||
ICINGA2_INFLUXDB_DB: ${ICINGA_INFLUX_DB:-icinga}
|
||||
|
||||
networks:
|
||||
icinga:
|
||||
30
env.sample
Normal file
30
env.sample
Normal file
@@ -0,0 +1,30 @@
|
||||
# icinga environment
|
||||
|
||||
## HIGHLY RECOMMENDED TO CHANGE
|
||||
ICINGA_API_HOST=icinga2
|
||||
API_ROOT_PASS=changeME!
|
||||
ICINGA_API_ICINGAWEB_USER=icingaweb
|
||||
|
||||
## icinga
|
||||
ICINGA_API_PORT=5665
|
||||
ICINGA_API_ICINGAWEB_PASS=icingaweb
|
||||
|
||||
## influxdb admin
|
||||
INFLUX_ADMIN_USER=icinga
|
||||
INFLUX_ADMIN_PASS=icinga
|
||||
ICINGA_INFLUX_HOST=db_influxdb
|
||||
ICINGA_INFLUX_PORT=8086
|
||||
ICINGA_INFLUX_USER=icinga
|
||||
ICINGA_INFLUX_DB=icinga
|
||||
ICINGA_INFLUX_PASS=icinga
|
||||
|
||||
## icingadb SQL connection
|
||||
ICINGA_DB=icingadb
|
||||
ICINGA_DB_HOST=db_icinga
|
||||
ICINGA_DB_PORT=3306
|
||||
ICINGA_DB_USER=icingadb
|
||||
ICINGA_DB_PASS=icingadb
|
||||
|
||||
## icingadb redis connection
|
||||
ICINGADB_REDIS_HOST=redis
|
||||
ICINGADB_REDIS_PORT=6379
|
||||
Reference in New Issue
Block a user