#!/bin/bash # Vérifier si Zenity est installé if ! command -v zenity &> /dev/null; then echo "Zenity n'est pas installé. Installation en cours..." sudo apt update && sudo apt install -y zenity fi # Afficher une popup d'avertissement zenity --warning --title="⚠️ Attention ⚠️" --width=400 --text="Ce script va modifier la configuration du serveur. Assurez-vous d'avoir une sauvegarde." # Demander les informations avec Zenity user_input=$(zenity --forms --title="Configuration du serveur" --text="Renseignez les informations :" \ --add-entry="Adresse IP" \ --add-entry="Nouveau hostname" \ --add-password="Mot de passe smauro") # Vérifier si l'utilisateur a annulé if [ $? -ne 0 ]; then zenity --error --title="Annulé" --text="L'installation a été annulée." exit 1 fi # Extraire les valeurs target_ip=$(echo "$user_input" | awk -F '|' '{print $1}') ansible_hostname=$(echo "$user_input" | awk -F '|' '{print $2}') smauro_password=$(echo "$user_input" | awk -F '|' '{print $3}') # Vérifier les entrées if [[ -z "$target_ip" || -z "$ansible_hostname" || -z "$smauro_password" ]]; then zenity --error --title="Erreur" --text="Tous les champs sont obligatoires." exit 1 fi # Lister les playbooks disponibles PLAYBOOK_DIR="./playbooks" PLAYBOOKS=($(ls $PLAYBOOK_DIR/*.yml 2>/dev/null)) # Vérifier s'il y a des playbooks disponibles if [ ${#PLAYBOOKS[@]} -eq 0 ]; then zenity --error --title="Erreur" --text="Aucun playbook trouvé dans $PLAYBOOK_DIR" exit 1 fi # Créer une liste avec des sauts de ligne pour Zenity playbook_list=$(printf "%s\n" "${PLAYBOOKS[@]##*/}") # Demander à l'utilisateur de choisir un playbook selected_playbook=$(echo -e "$playbook_list" | zenity --list --title="Sélectionner un playbook" --column="Playbooks") # Vérifier si l'utilisateur a annulé if [ $? -ne 0 ]; then zenity --error --title="Annulé" --text="Sélection du playbook annulée." exit 1 fi # Créer un fichier d'inventaire dynamique inventory_file="dynamic_inventory.ini" echo "[server_web]" > "$inventory_file" echo "$target_ip ansible_user=root ansible_ssh_pass=testtest" >> "$inventory_file" # Créer un fichier JSON contenant les variables Ansible vars_file="vars.json" cat < "$vars_file" { "ansible_hostname": "$ansible_hostname", "user_password": "$smauro_password" } EOF # Exécuter le playbook sélectionné ansible-playbook -i "$inventory_file" --ask-vault-pass "$PLAYBOOK_DIR/$selected_playbook" -e "@$vars_file" -u root # Supprimer les fichiers temporaires rm -f "$inventory_file" "$vars_file" # Afficher un message de succès zenity --info --title="Installation terminée" --text="Le playbook $selected_playbook a été exécuté avec succès !"