From 33d072138d9451d417b6ac88d655d936be31e650 Mon Sep 17 00:00:00 2001 From: Stephane M B079 Date: Wed, 12 Feb 2025 14:37:19 +0100 Subject: [PATCH] =?UTF-8?q?Ansible:=20plusieurs=20=C3=A9l=C3=A9ments=20int?= =?UTF-8?q?=C3=A9ressants?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 11-Ansible/Old/install_fullserver_web.sh | 12 ++--- 11-Ansible/install_fullserver_web.sh | 57 +++++++++++++++++++----- 2 files changed, 52 insertions(+), 17 deletions(-) diff --git a/11-Ansible/Old/install_fullserver_web.sh b/11-Ansible/Old/install_fullserver_web.sh index a99cc7a..16e8592 100755 --- a/11-Ansible/Old/install_fullserver_web.sh +++ b/11-Ansible/Old/install_fullserver_web.sh @@ -1,12 +1,13 @@ #!/bin/bash -# Demande à l'utilisateur l'adresse IP et le hostname +# Demande à l'utilisateur l'adresse IP, le hostname et le mot de passe pour l'utilisateur "smauro" read -p "Entrez l'adresse IP de la machine cible : " target_ip read -p "Entrez le nouveau hostname : " ansible_hostname +read -p "Entrez le mot de passe pour l'utilisateur smauro : " smauro_password -# Vérification que l'IP et le hostname ne sont pas vides -if [[ -z "$target_ip" || -z "$ansible_hostname" ]]; then - echo "Erreur : L'adresse IP et le hostname ne peuvent pas être vides." +# Vérification que l'IP, le hostname et le mot de passe ne sont pas vides +if [[ -z "$target_ip" || -z "$ansible_hostname" || -z "$smauro_password" ]]; then + echo "Erreur : L'adresse IP, le hostname et le mot de passe ne peuvent pas être vides." exit 1 fi @@ -16,7 +17,8 @@ echo "[server_web]" > $inventory_file echo "$target_ip ansible_user=root ansible_ssh_pass=testtest" >> $inventory_file # Exécution du playbook avec les variables dynamiques -ansible-playbook -i "$inventory_file" -u root --ask-become-pass playbooks/debian_fullserver_web.yml -e "ansible_hostname=$ansible_hostname" +ansible-playbook -i "$inventory_file" -u root --ask-become-pass playbooks/debian_fullserver_web.yml -e "ansible_hostname=\"$ansible_hostname\" user_password=\"$smauro_password\"" # Supprimer le fichier d'inventaire dynamique après utilisation rm -f $inventory_file + diff --git a/11-Ansible/install_fullserver_web.sh b/11-Ansible/install_fullserver_web.sh index 16e8592..d704184 100755 --- a/11-Ansible/install_fullserver_web.sh +++ b/11-Ansible/install_fullserver_web.sh @@ -1,24 +1,57 @@ #!/bin/bash -# Demande à l'utilisateur l'adresse IP, le hostname et le mot de passe pour l'utilisateur "smauro" -read -p "Entrez l'adresse IP de la machine cible : " target_ip -read -p "Entrez le nouveau hostname : " ansible_hostname -read -p "Entrez le mot de passe pour l'utilisateur smauro : " smauro_password +# 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 -# Vérification que l'IP, le hostname et le mot de passe ne sont pas vides +# 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 - echo "Erreur : L'adresse IP, le hostname et le mot de passe ne peuvent pas être vides." + zenity --error --title="Erreur" --text="Tous les champs sont obligatoires." 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 +echo "[server_web]" > "$inventory_file" +echo "$target_ip ansible_user=root ansible_ssh_pass=testtest" >> "$inventory_file" -# Exécution du playbook avec les variables dynamiques -ansible-playbook -i "$inventory_file" -u root --ask-become-pass playbooks/debian_fullserver_web.yml -e "ansible_hostname=\"$ansible_hostname\" user_password=\"$smauro_password\"" +# Créer un fichier JSON contenant les variables Ansible (Évite les problèmes de quotes) +vars_file="vars.json" +cat < "$vars_file" +{ + "ansible_hostname": "$ansible_hostname", + "user_password": "$smauro_password" +} +EOF -# Supprimer le fichier d'inventaire dynamique après utilisation -rm -f $inventory_file +# Exécuter le playbook Ansible +ansible-playbook -i "$inventory_file" -u root --ask-become-pass playbooks/debian_fullserver_web.yml -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 a été exécuté avec succès !"