#!/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"