105 lines
4.0 KiB
Bash
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 -----"
|