prod/ansible-prod/ansible/generate_vault_from_inventory.sh
2025-10-30 11:13:38 +01:00

48 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# === Chemins ===
INVENTORY_FILE="inventory/inventory.ini"
VAULT_FILE="group_vars/all/vault.yml"
TMP_FILE="$(mktemp)"
VARS_DIR="group_vars/all"
mkdir -p "$VARS_DIR"
# === Liste des hôtes à traiter ===
HOSTS=()
while IFS= read -r line; do
[[ "$line" =~ ^# ]] && continue # Ignore les commentaires
[[ "$line" =~ ^\[.*\]$ ]] && continue # Ignore les sections [group]
[[ -z "$line" ]] && continue # Ignore les lignes vides
HOSTNAME=$(echo "$line" | awk '{print $1}')
HOSTS+=("$HOSTNAME")
done < "$INVENTORY_FILE"
# === Collecte des mots de passe ===
declare -A PASSWORDS
echo "🛡️ Entrez les mots de passe sudo pour chaque hôte de l'inventaire :"
for HOST in "${HOSTS[@]}"; do
echo -n "🔐 $HOST: "
read -s PASSWORD
echo
PASSWORDS["$HOST"]="$PASSWORD"
done
# === Construction du fichier YAML temporaire ===
echo "become_passwords:" > "$TMP_FILE"
for HOST in "${HOSTS[@]}"; do
echo " \"$HOST\": \"${PASSWORDS[$HOST]}\"" >> "$TMP_FILE"
done
# === Pause facultative pour vérification ===
echo
echo "✅ Tous les mots de passe ont été saisis."
echo "Appuie sur Entrée pour chiffrer le fichier avec Ansible Vault..."
read
# === Chiffrement avec ansible-vault ===
ansible-vault encrypt "$TMP_FILE" --output "$VAULT_FILE"
rm -f "$TMP_FILE"
echo "🔒 Fichier chiffré créé : $VAULT_FILE"