infra/ansible/roles/icinga2-container/files/docker-entrypoint.sh
2025-09-06 10:55:13 -05:00

77 lines
No EOL
2.2 KiB
Bash

#!/bin/bash
set -e
# Wait for database to be ready
if [ ! -z "${MYSQL_HOST}" ]; then
echo "Waiting for database connection..."
for i in {1..30}; do
if mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SELECT 1" >/dev/null 2>&1; then
echo "Database is ready!"
break
fi
echo "Waiting for database... ($i/30)"
sleep 2
done
fi
# Initialize Icinga2 database if needed
if [ ! -z "${MYSQL_HOST}" ] && [ ! -z "${INIT_MYSQL}" ]; then
echo "Checking if Icinga2 database needs initialization..."
if ! mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} -e "SELECT * FROM icinga_dbversion" >/dev/null 2>&1; then
echo "Initializing Icinga2 database..."
mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} < /usr/share/icinga2-ido-mysql/schema/mysql.sql
fi
fi
# Configure IDO-MySQL if environment variables are set
if [ ! -z "${MYSQL_HOST}" ]; then
cat > /etc/icinga2/features-available/ido-mysql.conf <<EOF
library "db_ido_mysql"
object IdoMysqlConnection "ido-mysql" {
user = "${MYSQL_USER}"
password = "${MYSQL_PASSWORD}"
host = "${MYSQL_HOST}"
database = "${MYSQL_DATABASE}"
}
EOF
icinga2 feature enable ido-mysql
fi
# Setup API if certificates don't exist
if [ ! -f /var/lib/icinga2/certs/ca.crt ]; then
echo "Setting up Icinga2 API..."
icinga2 api setup
fi
# Enable required features
icinga2 feature enable api command checker mainlog notification
# Configure IcingaWeb2 database settings if provided
if [ ! -z "${ICINGAWEB_MYSQL_HOST}" ]; then
mkdir -p /etc/icingaweb2
cat > /etc/icingaweb2/resources.ini <<EOF
[icingaweb_db]
type = "db"
db = "mysql"
host = "${ICINGAWEB_MYSQL_HOST}"
dbname = "${ICINGAWEB_MYSQL_DATABASE}"
username = "${ICINGAWEB_MYSQL_USER}"
password = "${ICINGAWEB_MYSQL_PASSWORD}"
[icinga_ido]
type = "db"
db = "mysql"
host = "${MYSQL_HOST}"
dbname = "${MYSQL_DATABASE}"
username = "${MYSQL_USER}"
password = "${MYSQL_PASSWORD}"
EOF
fi
# Fix permissions
chown -R nagios:nagios /etc/icinga2 /var/run/icinga2 /var/log/icinga2 /var/lib/icinga2 /var/cache/icinga2
chown -R www-data:icingaweb2 /etc/icingaweb2
# Execute CMD
exec "$@"