Ansible: plusieurs éléments intéressants

This commit is contained in:
Stephane M B079 2025-02-12 14:37:19 +01:00
parent 7bf85a556c
commit 33d072138d
2 changed files with 52 additions and 17 deletions

View File

@ -1,12 +1,13 @@
#!/bin/bash #!/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 l'adresse IP de la machine cible : " target_ip
read -p "Entrez le nouveau hostname : " ansible_hostname 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 # Vérification que l'IP, le hostname et le mot de passe ne sont pas vides
if [[ -z "$target_ip" || -z "$ansible_hostname" ]]; then if [[ -z "$target_ip" || -z "$ansible_hostname" || -z "$smauro_password" ]]; then
echo "Erreur : L'adresse IP et le hostname ne peuvent pas être vides." echo "Erreur : L'adresse IP, le hostname et le mot de passe ne peuvent pas être vides."
exit 1 exit 1
fi fi
@ -16,7 +17,8 @@ echo "[server_web]" > $inventory_file
echo "$target_ip ansible_user=root ansible_ssh_pass=testtest" >> $inventory_file echo "$target_ip ansible_user=root ansible_ssh_pass=testtest" >> $inventory_file
# Exécution du playbook avec les variables dynamiques # 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 # Supprimer le fichier d'inventaire dynamique après utilisation
rm -f $inventory_file rm -f $inventory_file

View File

@ -1,24 +1,57 @@
#!/bin/bash #!/bin/bash
# Demande à l'utilisateur l'adresse IP, le hostname et le mot de passe pour l'utilisateur "smauro" # Vérifier si Zenity est installé
read -p "Entrez l'adresse IP de la machine cible : " target_ip if ! command -v zenity &> /dev/null; then
read -p "Entrez le nouveau hostname : " ansible_hostname echo "Zenity n'est pas installé. Installation en cours..."
read -p "Entrez le mot de passe pour l'utilisateur smauro : " smauro_password 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 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 exit 1
fi fi
# Créer un fichier d'inventaire dynamique # Créer un fichier d'inventaire dynamique
inventory_file="dynamic_inventory.ini" inventory_file="dynamic_inventory.ini"
echo "[server_web]" > $inventory_file echo "[server_web]" > "$inventory_file"
echo "$target_ip ansible_user=root ansible_ssh_pass=testtest" >> $inventory_file echo "$target_ip ansible_user=root ansible_ssh_pass=testtest" >> "$inventory_file"
# Exécution du playbook avec les variables dynamiques # Créer un fichier JSON contenant les variables Ansible (Évite les problèmes de quotes)
ansible-playbook -i "$inventory_file" -u root --ask-become-pass playbooks/debian_fullserver_web.yml -e "ansible_hostname=\"$ansible_hostname\" user_password=\"$smauro_password\"" 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 # Exécuter le playbook Ansible
rm -f $inventory_file 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 !"