#!/bin/bash set -e set -o pipefail echo "[DEBUG] ----- DÉBUT DU SCRIPT -----" echo "[DEBUG] UID: $(id -u), GID: $(id -g), User: $(whoami)" echo "[DEBUG] Contenu de /etc/passwd:" cat /etc/passwd || echo "Impossible de lire /etc/passwd" echo "[DEBUG] Contenu de /etc/group:" cat /etc/group || echo "Impossible de lire /etc/group" # vars via Semaphore UI / Variable Group MAIN_BR="${MAIN_BR:-main}" ENV="${ENV:-staging}" ENV_BR="${ENV_BR:-main}" PLAYBOOK_FILE="${PLAYBOOK_FILE:-base.yaml}" echo "[DEBUG] MAIN_BR: $MAIN_BR" echo "[DEBUG] ENV: $ENV" echo "[DEBUG] ENV_BR: $ENV_BR" echo "[DEBUG] PLAYBOOK_FILE: $PLAYBOOK_FILE" # --- VALIDATION DES IDENTIFIANTS GIT --- echo "[DEBUG] Vérification de GIT_USERNAME et GIT_TOKEN..." if [ -z "$GIT_USERNAME" ]; then echo "[ERROR] La variable d'environnement GIT_USERNAME n'est pas définie ou est vide !" exit 1 else echo "[INFO] GIT_USERNAME est défini : $GIT_USERNAME" fi if [ -z "$GIT_TOKEN" ]; then echo "[ERROR] La variable d'environnement GIT_TOKEN n'est pas définie ou est vide !" exit 1 else echo "[INFO] GIT_TOKEN est défini (valeur masquée pour la sécurité)." fi REPO_CORE_URL_RAW="git.felcloud.io/felcloud/ansible_core_init_ansible.git" REPO_ENV_URL_RAW="git.felcloud.io/felcloud/ansible_env_staging.git" REPO_CORE="https://$(echo "$GIT_USERNAME" | sed 's/@/%40/g'):$(echo "$GIT_TOKEN" | sed 's/@/%40/g')@${REPO_CORE_URL_RAW}" REPO_ENV="https://$(echo "$GIT_USERNAME" | sed 's/@/%40/g'):$(echo "$GIT_TOKEN" | sed 's/@/%40/g')@${REPO_ENV_URL_RAW}" # Afficher les URLs SANS le token pour le débogage echo "[DEBUG] URL de REPO_CORE (sans token pour log): https://@${REPO_CORE_URL_RAW}" echo "[DEBUG] URL de REPO_ENV (sans token pour log): https://@${REPO_ENV_URL_RAW}" # Vérifier si GIT_SSH_COMMAND est défini if [ -n "$GIT_SSH_COMMAND" ]; then echo "[WARN] GIT_SSH_COMMAND est défini à : $GIT_SSH_COMMAND" echo "[WARN] Tentative de le dé-définir..." unset GIT_SSH_COMMAND fi if [ -n "$GIT_SSH" ]; then echo "[WARN] GIT_SSH est défini à : $GIT_SSH" echo "[WARN] Tentative de le dé-définir..." unset GIT_SSH fi echo "[INFO] Clonage des dépôts en utilisant HTTPS..." echo "[INFO] Clonage de https://${REPO_CORE_URL_RAW} sur la branche $ENV_BR..." GIT_TRACE=1 GIT_TRACE_PACKET=1 git clone --branch "$ENV_BR" "$REPO_CORE" ansible_core_init_ansible || { echo "[FATAL] Échec du clonage de ${REPO_CORE_URL_RAW}. Vérifiez les identifiants, l'URL, les permissions du jeton et les logs GIT_TRACE ci-dessus."; exit 1; } echo "[INFO] Clonage réussi de ${REPO_CORE_URL_RAW}." echo "[INFO] Clonage de https://${REPO_ENV_URL_RAW}..." GIT_TRACE=1 GIT_TRACE_PACKET=1 git clone "$REPO_ENV" ansible_env_staging || { echo "[FATAL] Échec du clonage de ${REPO_ENV_URL_RAW}. Vérifiez les identifiants, l'URL, les permissions du jeton et les logs GIT_TRACE ci-dessus."; exit 1; } echo "[INFO] Clonage réussi de ${REPO_ENV_URL_RAW}." # Optionnel : Afficher la configuration Git pour voir s'il y a des 'insteadOf' echo "[DEBUG] Configuration Git globale :" git config --global --list || echo "Aucune config globale Git ou erreur." echo "[DEBUG] Configuration Git système :" git config --system --list || echo "Aucune config système Git ou erreur." cd ansible_core_init_ansible echo "[INFO] Construction de l'image Docker localement..." docker build --no-cache --build-arg branch=fix_packages_dependencies -t ansible-pulumi:local . cd .. echo "[INFO] Exécution du conteneur admin avec le playbook : $PLAYBOOK_FILE" docker run --rm -it \ -v "$(pwd)/ansible_env_staging:/home/cloud/ansible_env_staging" \ -e MAIN_BR="$MAIN_BR" \ -e ENV="$ENV" \ -e ENV_BR="$ENV_BR" \ ansible-pulumi:local bash -c " set -e; \ echo '[CONTAINER] Répertoire courant : \$(pwd)'; \ cd /home/cloud/ansible-pulumi && \ source /home/cloud/venv/bin/activate && \ ansible-playbook playbooks/${PLAYBOOK_FILE} -i /home/cloud/ansible_env_staging/hosts" echo "[INFO] Tâche terminée." echo "[DEBUG] ----- FIN DU SCRIPT -----"