diff --git a/github-actions-tests/tools/zabbix_cli.sh b/github-actions-tests/tools/zabbix_cli.sh index 1440bbe..a9eb40f 100644 --- a/github-actions-tests/tools/zabbix_cli.sh +++ b/github-actions-tests/tools/zabbix_cli.sh @@ -46,12 +46,9 @@ ZBX_VERSION_MAJOR=${ZBX_VERSION_ARRAY[0]} ZBX_VERSION_MINOR=${ZBX_VERSION_ARRAY[1]} OLD_ZABBIX=" " -if ((ZBX_VERSION_MAJOR <= 4)) +if ((ZBX_VERSION_MAJOR < 4)) then - if ((ZBX_VERSION_MINOR <= 2)) - then - OLD_ZABBIX=" --old-zabbix " - fi + OLD_ZABBIX=" --old-zabbix " fi echo && echo "------> mamonsu zabbix version" diff --git a/github-actions-tests/zbx_install.sh b/github-actions-tests/zbx_install.sh index 23f62a7..48dc5c9 100644 --- a/github-actions-tests/zbx_install.sh +++ b/github-actions-tests/zbx_install.sh @@ -17,7 +17,7 @@ esac done echo "=================================================================================================================" -sudo mkdir 775 -p /docker/zabbix-docker/ +sudo mkdir -m 775 -p /docker/zabbix-docker/ cd /docker/zabbix-docker/ 2>&1 1>/dev/null sudo wget https://github.com/zabbix/zabbix-docker/archive/refs/tags/${ZBX_VERSION}.zip sudo unzip ${ZBX_VERSION}.zip @@ -25,6 +25,29 @@ cd zabbix-docker-${ZBX_VERSION} 2>&1 1>/dev/null echo "---> Setting up docker with Zabbix ${ZBX_VERSION}..." # docker-compose dirty hack: it uses only file named 'docker-compose.yml' yes | sudo cp docker-compose_v3_alpine_mysql_latest.yaml docker-compose.yml + +# Pin MySQL to 8.0.33 to avoid mysql_native_password deprecation in 8.0.34+ +sudo sed -i 's/mysql:8\.0/mysql:8.0.33/g' docker-compose.yml + +# Replace MYSQL_ROOT_PASSWORD_FILE with plain MYSQL_ROOT_PASSWORD to avoid: +# - "Secret file not found" in Zabbix 6.0+ web container (secret not mounted) +# - "Both X and X_FILE are set" in MySQL 8.0.46+ entrypoint +# 6.4+ compose files also set _FILE in environment: sections. +sudo sed -i 's/^\(MYSQL_ROOT_PASSWORD_FILE=.*\)/# \1/' env_vars/.env_db_mysql +sudo sed -i 's/^# MYSQL_ROOT_PASSWORD=$/MYSQL_ROOT_PASSWORD=root_pwd/' env_vars/.env_db_mysql +sudo sed -i 's/MYSQL_ROOT_PASSWORD_FILE=\/run\/secrets\/MYSQL_ROOT_PASSWORD/MYSQL_ROOT_PASSWORD=root_pwd/' compose_databases.yaml 2>/dev/null + docker-compose -f ./docker-compose.yml up -d -# wait for full set up -sleep 1m + +echo "---> Waiting for Zabbix ..." +WAITED=0 +until curl -sf http://localhost:80/ > /dev/null 2>&1; do + sleep 5 + WAITED=$((WAITED + 5)) + if [ $WAITED -ge 300 ]; then + echo "ERROR: Zabbix not ready after 300s" + docker-compose -f ./docker-compose.yml ps + docker-compose -f ./docker-compose.yml logs --tail=20 + exit 1 + fi +done \ No newline at end of file