Ansible: plusieurs éléments intéressants
This commit is contained in:
parent
33d072138d
commit
afeaa0b384
@ -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 !"
|
||||
|
||||
@ -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 <<EOF > "$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 !"
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user