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
- name: Configurer le hostname
hostname:
name: "Gitea"
name: "{{ ansible_hostname }}"
become: yes
# 6. Changer le mot de passe root
@ -80,17 +80,22 @@
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: Installer les dépendances requises pour ajouter un dépôt
apt:
name: ["apt-transport-https", "ca-certificates", "lsb-release", "curl"]
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
apt:
@ -146,4 +151,11 @@
msg: "Redémarrage après configuration."
pre_reboot_delay: 5
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
user:
name: "{{ user }}"
password: "{{ root_password | password_hash('sha512') }}"
password: "{{ user_password | password_hash('sha512') }}" # Utilisation de la variable dynamique
shell: /bin/bash
groups: sudo
state: present
become: yes
# 8. Installer les paquets nécessaires
- name: Installer les paquets nécessaires
apt:
name: ["sudo", "vim", "curl", "git", "htop", "gnupg", "apache2"]
state: present
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
apt:
name: ["apt-transport-https", "ca-certificates", "lsb-release", "curl"]
state: present
become: yes
# 8. Ajouter le dépôt Sury pour PHP 8.3
# 10. 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
@ -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
become: yes
# 11. Mettre à jour et upgrader le système
- name: Mettre à jour et upgrader le système
apt:
update_cache: yes
upgrade: dist
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
apt:
name:
@ -125,33 +126,26 @@
state: restarted
become: yes
# 11. Configurer Apache avec PHP 8.3
#- name: Activer PHP 8.3 dans Apache
#command: a2enmod php8.3
#become: yes
# 13. Redémarrer Apache
- name: Redémarrer Apache
systemd:
name: apache2
state: restarted
become: yes
# 14. Activer les modules rewrite et expires dans Apache
- name: Activer les modules rewrite et expires dans Apache
command: a2enmod rewrite expires
become: yes
# 15. Redémarrer Apache après activation des modules
- name: Redémarrer Apache après activation des modules
systemd:
name: apache2
state: restarted
become: yes
- name: Redémarrer la machine
reboot:
msg: "Redémarrage après configuration."
pre_reboot_delay: 5
become: yes
# 16. Remplacer "clean" par le hostname dans /etc/hosts
- name: Remplacer "clean" par le hostname dans /etc/hosts
replace:
path: /etc/hosts
@ -159,3 +153,18 @@
replace: "{{ ansible_hostname }}"
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
# 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