Ansible: plusieurs éléments intéressants

This commit is contained in:
Stephane M B079 2025-02-12 12:05:18 +01:00
parent 055e23acf0
commit 282871f0da
4 changed files with 77 additions and 32 deletions

View File

@ -54,7 +54,7 @@
# 5. Configurer le hostname # 5. Configurer le hostname
- name: Configurer le hostname - name: Configurer le hostname
hostname: hostname:
name: "Gitea" name: "{{ ansible_hostname }}"
become: yes become: yes
# 6. Changer le mot de passe root # 6. Changer le mot de passe root
@ -80,17 +80,22 @@
state: present state: present
become: yes become: yes
# 8. Ajouter le dépôt Sury pour PHP 8.3 - name: Installer les dépendances requises pour ajouter un dépôt
#- name: Ajouter le dépôt Sury pour PHP 8.3 apt:
#shell: echo "deb https://packages.sury.org/php/ bookworm main" | tee /etc/apt/sources.list.d/sury-php.list name: ["apt-transport-https", "ca-certificates", "lsb-release", "curl"]
#become: yes state: present
become: yes
# 8. Ajouter le dépôt Sury pour PHP 8.3
- name: Ajouter le dépôt Sury pour PHP 8.3
shell: echo "deb https://packages.sury.org/php/ bookworm main" | tee /etc/apt/sources.list.d/sury-php.list
become: yes
- name: Ajouter la clé GPG du dépôt Sury
shell: curl -fsSL https://packages.sury.org/php/apt.gpg | tee /etc/apt/trusted.gpg.d/sury-php.gpg > /dev/null
become: yes
# 9. Ajouter la clé GPG du dépôt Sury
#- name: Ajouter la clé GPG du dépôt Sury via apt_key
# apt_key:
#url: https://packages.sury.org/php/apt.gpg
#state: present
#become: yes
- name: Mettre à jour et upgrader le système - name: Mettre à jour et upgrader le système
apt: apt:
@ -146,4 +151,11 @@
msg: "Redémarrage après configuration." msg: "Redémarrage après configuration."
pre_reboot_delay: 5 pre_reboot_delay: 5
become: yes become: yes
- name: Remplacer "clean" par le hostname dans /etc/hosts
replace:
path: /etc/hosts
regexp: '\bclean\b'
replace: "{{ ansible_hostname }}"
become: yes

View File

@ -0,0 +1,22 @@
#!/bin/bash
# Demande à l'utilisateur l'adresse IP et le hostname
read -p "Entrez l'adresse IP de la machine cible : " target_ip
read -p "Entrez le nouveau hostname : " ansible_hostname
# 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."
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
# 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"
# Supprimer le fichier d'inventaire dynamique après utilisation
rm -f $inventory_file

View File

@ -68,26 +68,27 @@
- name: Configurer l'utilisateur smauro - name: Configurer l'utilisateur smauro
user: user:
name: "{{ user }}" name: "{{ user }}"
password: "{{ root_password | password_hash('sha512') }}" password: "{{ user_password | password_hash('sha512') }}" # Utilisation de la variable dynamique
shell: /bin/bash shell: /bin/bash
groups: sudo groups: sudo
state: present state: present
become: yes become: yes
# 8. Installer les paquets nécessaires
- name: Installer les paquets nécessaires - name: Installer les paquets nécessaires
apt: apt:
name: ["sudo", "vim", "curl", "git", "htop", "gnupg", "apache2"] name: ["sudo", "vim", "curl", "git", "htop", "gnupg", "apache2"]
state: present state: present
become: yes become: yes
# 9. Installer les dépendances requises pour ajouter un dépôt
- name: Installer les dépendances requises pour ajouter un dépôt - name: Installer les dépendances requises pour ajouter un dépôt
apt: apt:
name: ["apt-transport-https", "ca-certificates", "lsb-release", "curl"] name: ["apt-transport-https", "ca-certificates", "lsb-release", "curl"]
state: present state: present
become: yes become: yes
# 10. Ajouter le dépôt Sury pour PHP 8.3
# 8. Ajouter le dépôt Sury pour PHP 8.3
- name: Ajouter le dépôt Sury pour PHP 8.3 - name: Ajouter le dépôt Sury pour PHP 8.3
shell: echo "deb https://packages.sury.org/php/ bookworm main" | tee /etc/apt/sources.list.d/sury-php.list shell: echo "deb https://packages.sury.org/php/ bookworm main" | tee /etc/apt/sources.list.d/sury-php.list
become: yes become: yes
@ -96,14 +97,14 @@
shell: curl -fsSL https://packages.sury.org/php/apt.gpg | tee /etc/apt/trusted.gpg.d/sury-php.gpg > /dev/null shell: curl -fsSL https://packages.sury.org/php/apt.gpg | tee /etc/apt/trusted.gpg.d/sury-php.gpg > /dev/null
become: yes become: yes
# 11. Mettre à jour et upgrader le système
- name: Mettre à jour et upgrader le système - name: Mettre à jour et upgrader le système
apt: apt:
update_cache: yes update_cache: yes
upgrade: dist upgrade: dist
become: yes become: yes
# 10. Installer PHP 8.3 et ses extensions # 12. Installer PHP 8.3 et modules requis
- name: Installer PHP 8.3 et modules requis - name: Installer PHP 8.3 et modules requis
apt: apt:
name: name:
@ -125,33 +126,26 @@
state: restarted state: restarted
become: yes become: yes
# 11. Configurer Apache avec PHP 8.3 # 13. Redémarrer Apache
#- name: Activer PHP 8.3 dans Apache
#command: a2enmod php8.3
#become: yes
- name: Redémarrer Apache - name: Redémarrer Apache
systemd: systemd:
name: apache2 name: apache2
state: restarted state: restarted
become: yes become: yes
# 14. Activer les modules rewrite et expires dans Apache
- name: Activer les modules rewrite et expires dans Apache - name: Activer les modules rewrite et expires dans Apache
command: a2enmod rewrite expires command: a2enmod rewrite expires
become: yes become: yes
# 15. Redémarrer Apache après activation des modules
- name: Redémarrer Apache après activation des modules - name: Redémarrer Apache après activation des modules
systemd: systemd:
name: apache2 name: apache2
state: restarted state: restarted
become: yes become: yes
- name: Redémarrer la machine # 16. Remplacer "clean" par le hostname dans /etc/hosts
reboot:
msg: "Redémarrage après configuration."
pre_reboot_delay: 5
become: yes
- name: Remplacer "clean" par le hostname dans /etc/hosts - name: Remplacer "clean" par le hostname dans /etc/hosts
replace: replace:
path: /etc/hosts path: /etc/hosts
@ -159,3 +153,18 @@
replace: "{{ ansible_hostname }}" replace: "{{ ansible_hostname }}"
become: yes become: yes
# 17. Retirer 'PermitRootLogin yes' dans /etc/ssh/sshd_config
- name: Retirer ou modifier 'PermitRootLogin yes' dans /etc/ssh/sshd_config
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^PermitRootLogin\s+yes'
line: 'PermitRootLogin no'
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
become: yes

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