48 lines
1.3 KiB
Bash
Executable File
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"
|
|
|