containerAdmin/run_admin_container.sh
2025-05-20 09:49:22 +00:00

105 lines
4.0 KiB
Bash

#!/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://<username>@${REPO_CORE_URL_RAW}"
echo "[DEBUG] URL de REPO_ENV (sans token pour log): https://<username>@${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 -----"