diff --git a/11-Ansible/Old/debian_fullserver_web.yml b/11-Ansible/Old/debian_fullserver_web.yml index e5e07f5..26709ec 100644 --- a/11-Ansible/Old/debian_fullserver_web.yml +++ b/11-Ansible/Old/debian_fullserver_web.yml @@ -168,3 +168,14 @@ msg: "Redémarrage après configuration." pre_reboot_delay: 5 become: yes + + # 19. Attendre que la machine soit de nouveau accessible + - name: Attendre que la machine soit de nouveau accessible + wait_for_connection: + timeout: 300 + become: no + + # 20. Confirmation + - name: Confirmer que la VM est de nouveau accessible + debug: + msg: "La VM {{ ansible_hostname }} est de nouveau accessible !" diff --git a/11-Ansible/Old/install_fullserver_web.sh b/11-Ansible/Old/install_fullserver_web.sh index 16e8592..d704184 100755 --- a/11-Ansible/Old/install_fullserver_web.sh +++ b/11-Ansible/Old/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 !" diff --git a/11-Ansible/debian_fullserver_web.yml b/11-Ansible/debian_fullserver_web.yml index 26709ec..714062c 100644 --- a/11-Ansible/debian_fullserver_web.yml +++ b/11-Ansible/debian_fullserver_web.yml @@ -162,20 +162,18 @@ state: present become: yes - # 18. Redémarrer la machine - name: Redémarrer la machine - reboot: - msg: "Redémarrage après configuration." - pre_reboot_delay: 5 + command: "nohup bash -c 'sleep 5 && reboot' &" + async: 1 + poll: 0 + ignore_errors: yes become: yes - # 19. Attendre que la machine soit de nouveau accessible - - name: Attendre que la machine soit de nouveau accessible - wait_for_connection: - timeout: 300 - become: no - # 20. Confirmation - - name: Confirmer que la VM est de nouveau accessible - debug: - msg: "La VM {{ ansible_hostname }} est de nouveau accessible !" + # 18. Redémarrer la machine + #- name: Redémarrer la machine + # reboot: + #msg: "Redémarrage après configuration." + #pre_reboot_delay: 5 + #become: yes + #ignore_errors: yes