77 lines
No EOL
2.2 KiB
Bash
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 "$@" |