80 lines
2.7 KiB
Bash
Executable File
80 lines
2.7 KiB
Bash
Executable File
#!/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 <<EOF > "$vars_file"
|
|
{
|
|
"ansible_hostname": "$ansible_hostname",
|
|
"user_password": "$smauro_password"
|
|
}
|
|
EOF
|
|
|
|
# Exécuter le playbook sélectionné
|
|
ansible-playbook -i "$inventory_file" -u root --ask-become-pass "$PLAYBOOK_DIR/$selected_playbook" -e "@$vars_file"
|
|
|
|
# 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 !"
|
|
|