Ansible: plusieurs éléments intéressants
This commit is contained in:
parent
8a3de5338c
commit
e78e8e4c98
4
ansible/ansible.cfg
Normal file
4
ansible/ansible.cfg
Normal file
@ -0,0 +1,4 @@
|
||||
[defaults]
|
||||
inventory = ./inventory/hosts.yml
|
||||
remote_user = your_user
|
||||
host_key_checking = False
|
||||
79
ansible/install.sh
Executable file
79
ansible/install.sh
Executable file
@ -0,0 +1,79 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
zenity --error --title="Erreur" --text="Tous les champs sont obligatoires."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Lister les playbooks disponibles
|
||||
PLAYBOOK_DIR="./playbooks"
|
||||
PLAYBOOKS=($(ls $PLAYBOOK_DIR/*.yml 2>/dev/null))
|
||||
|
||||
# Vérifier s'il y a des playbooks disponibles
|
||||
if [ ${#PLAYBOOKS[@]} -eq 0 ]; then
|
||||
zenity --error --title="Erreur" --text="Aucun playbook trouvé dans $PLAYBOOK_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Créer une liste avec des sauts de ligne pour Zenity
|
||||
playbook_list=$(printf "%s\n" "${PLAYBOOKS[@]##*/}")
|
||||
|
||||
# Demander à l'utilisateur de choisir un playbook
|
||||
selected_playbook=$(echo -e "$playbook_list" | zenity --list --title="Sélectionner un playbook" --column="Playbooks")
|
||||
|
||||
# Vérifier si l'utilisateur a annulé
|
||||
if [ $? -ne 0 ]; then
|
||||
zenity --error --title="Annulé" --text="Sélection du playbook annulée."
|
||||
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"
|
||||
|
||||
# Créer un fichier JSON contenant les variables Ansible
|
||||
vars_file="vars.json"
|
||||
cat <<EOF > "$vars_file"
|
||||
{
|
||||
"ansible_hostname": "$ansible_hostname",
|
||||
"user_password": "$smauro_password"
|
||||
}
|
||||
EOF
|
||||
|
||||
# Exécuter le playbook sélectionné
|
||||
ansible-playbook -i "$inventory_file" -u root --ask-become-pass "$PLAYBOOK_DIR/$selected_playbook" -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 $selected_playbook a été exécuté avec succès !"
|
||||
|
||||
57
ansible/install_fullserver_web.sh
Executable file
57
ansible/install_fullserver_web.sh
Executable file
@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
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"
|
||||
|
||||
# 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
|
||||
|
||||
# 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 !"
|
||||
|
||||
2
ansible/inventory/dynamic_inventory.ini
Normal file
2
ansible/inventory/dynamic_inventory.ini
Normal file
@ -0,0 +1,2 @@
|
||||
[server_web]
|
||||
192.168.1.116 ansible_user=root ansible_ssh_pass='testtest' ansible_hostname='EvoTechSphere' user_password='QH~6iZUJLkT3>u<'}E`L*6X['
|
||||
4
ansible/inventory/hosts.yml
Normal file
4
ansible/inventory/hosts.yml
Normal file
@ -0,0 +1,4 @@
|
||||
[defaults]
|
||||
inventory = ./inventory/hosts.yml
|
||||
remote_user = smauro
|
||||
host_key_checking = False
|
||||
5
ansible/inventory/inventory.ini
Normal file
5
ansible/inventory/inventory.ini
Normal file
@ -0,0 +1,5 @@
|
||||
[debian_vm]
|
||||
192.168.1.34 ansible_user=smauro ansible_ssh_pass=testtest
|
||||
|
||||
[server_web]
|
||||
192.168.1.116 ansible_user=root ansible_ssh_pass=testtest
|
||||
188
ansible/playbooks/debian_fullserver_web.yml
Normal file
188
ansible/playbooks/debian_fullserver_web.yml
Normal file
@ -0,0 +1,188 @@
|
||||
- hosts: server_web
|
||||
vars:
|
||||
user: "smauro"
|
||||
root_password: "testtest"
|
||||
tasks:
|
||||
# 1. Passer à root et installer sudo (si pas déjà installé)
|
||||
- name: Passer à root et installer sudo
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
command: apt install sudo -y
|
||||
vars:
|
||||
ansible_become_pass: "{{ root_password }}"
|
||||
register: result
|
||||
when: ansible_facts.packages['sudo'] is not defined
|
||||
|
||||
- name: Afficher le résultat de l'installation de sudo
|
||||
debug:
|
||||
var: result
|
||||
|
||||
# 2. Ajouter l'utilisateur au groupe sudo
|
||||
- name: Ajouter l'utilisateur au groupe sudo
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
groups: sudo
|
||||
append: yes
|
||||
become: yes
|
||||
become_user: root
|
||||
when: ansible_facts.packages['sudo'] is defined
|
||||
|
||||
# 3. Modifier le fichier sources.list
|
||||
- name: Modifier le fichier sources.list
|
||||
copy:
|
||||
dest: /etc/apt/sources.list
|
||||
content: |
|
||||
deb http://deb.debian.org/debian/ bookworm main non-free-firmware
|
||||
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware
|
||||
|
||||
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
|
||||
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware
|
||||
|
||||
# bookworm-updates, to get updates before a point release is made;
|
||||
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
|
||||
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
|
||||
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
|
||||
become: yes
|
||||
|
||||
# 4. Mettre à jour les paquets
|
||||
- name: Mettre à jour les paquets
|
||||
apt:
|
||||
update_cache: yes
|
||||
become: yes
|
||||
|
||||
# 5. Configurer le hostname
|
||||
- name: Configurer le hostname
|
||||
hostname:
|
||||
name: "{{ ansible_hostname }}"
|
||||
become: yes
|
||||
|
||||
# 6. Changer le mot de passe root
|
||||
- name: Changer le mot de passe root
|
||||
user:
|
||||
name: root
|
||||
password: "{{ root_password | password_hash('sha512') }}"
|
||||
become: yes
|
||||
|
||||
# 7. Configurer l'utilisateur smauro
|
||||
- name: Configurer l'utilisateur smauro
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
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", "net-tools"]
|
||||
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
|
||||
|
||||
# 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
|
||||
|
||||
- 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
|
||||
|
||||
# 11. Mettre à jour et upgrader le système
|
||||
- name: Mettre à jour et upgrader le système
|
||||
apt:
|
||||
update_cache: yes
|
||||
upgrade: dist
|
||||
become: yes
|
||||
|
||||
# 12. Installer PHP 8.3 et modules requis
|
||||
- name: Installer PHP 8.3 et modules requis
|
||||
apt:
|
||||
name:
|
||||
- php8.3-cli
|
||||
- php8.3-fpm
|
||||
- php8.3-common
|
||||
- php8.3-mbstring
|
||||
- php8.3-xml
|
||||
- php8.3-curl
|
||||
- php8.3-zip
|
||||
- php8.3-gd
|
||||
- php8.3-mysql
|
||||
state: present
|
||||
become: yes
|
||||
|
||||
- name: Redémarrer PHP 8.3-FPM
|
||||
systemd:
|
||||
name: php8.3-fpm
|
||||
state: restarted
|
||||
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: Mettre à jour /etc/hosts avec le hostname
|
||||
lineinfile:
|
||||
path: /etc/hosts
|
||||
regexp: '^127\.0\.0\.1\s+'
|
||||
line: "127.0.0.1 localhost {{ ansible_hostname }}"
|
||||
state: present
|
||||
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
|
||||
|
||||
- name: Déployer le script MOTD personnalisé
|
||||
copy:
|
||||
src: ../sources/99-motd # Chemin relatif depuis où tu exécutes le playbook
|
||||
dest: /etc/update-motd.d/99-motd
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
become: yes
|
||||
|
||||
- name: Redémarrer la machine
|
||||
command: "nohup bash -c 'sleep 5 && reboot' &"
|
||||
async: 1
|
||||
poll: 0
|
||||
ignore_errors: yes
|
||||
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
|
||||
#ignore_errors: yes
|
||||
148
ansible/playbooks/debian_fullserver_web.yml.BACKUP
Normal file
148
ansible/playbooks/debian_fullserver_web.yml.BACKUP
Normal file
@ -0,0 +1,148 @@
|
||||
- hosts: server_web
|
||||
vars:
|
||||
user: "smauro"
|
||||
root_password: "testtest"
|
||||
tasks:
|
||||
# 1. Passer à root et installer sudo (si pas déjà installé)
|
||||
- name: Passer à root et installer sudo
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
command: apt install sudo -y
|
||||
vars:
|
||||
ansible_become_pass: "{{ root_password }}"
|
||||
register: result
|
||||
when: ansible_facts.packages['sudo'] is not defined
|
||||
|
||||
- name: Afficher le résultat de l'installation de sudo
|
||||
debug:
|
||||
var: result
|
||||
|
||||
# 2. Ajouter l'utilisateur au groupe sudo
|
||||
- name: Ajouter l'utilisateur au groupe sudo
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
groups: sudo
|
||||
append: yes
|
||||
become: yes
|
||||
become_user: root
|
||||
when: ansible_facts.packages['sudo'] is defined
|
||||
|
||||
# 3. Modifier le fichier sources.list
|
||||
- name: Modifier le fichier sources.list
|
||||
copy:
|
||||
dest: /etc/apt/sources.list
|
||||
content: |
|
||||
deb http://deb.debian.org/debian/ bookworm main non-free-firmware
|
||||
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware
|
||||
|
||||
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
|
||||
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware
|
||||
|
||||
# bookworm-updates, to get updates before a point release is made;
|
||||
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
|
||||
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
|
||||
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
|
||||
become: yes
|
||||
|
||||
# 4. Mettre à jour les paquets
|
||||
- name: Mettre à jour les paquets
|
||||
apt:
|
||||
update_cache: yes
|
||||
become: yes
|
||||
|
||||
# 5. Configurer le hostname
|
||||
- name: Configurer le hostname
|
||||
hostname:
|
||||
name: "Gitea"
|
||||
become: yes
|
||||
|
||||
# 6. Changer le mot de passe root
|
||||
- name: Changer le mot de passe root
|
||||
user:
|
||||
name: root
|
||||
password: "{{ root_password | password_hash('sha512') }}"
|
||||
become: yes
|
||||
|
||||
# 7. Configurer l'utilisateur smauro
|
||||
- name: Configurer l'utilisateur smauro
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
password: "{{ root_password | password_hash('sha512') }}"
|
||||
shell: /bin/bash
|
||||
groups: sudo
|
||||
state: present
|
||||
become: yes
|
||||
|
||||
- name: Installer les paquets nécessaires
|
||||
apt:
|
||||
name: ["sudo", "vim", "curl", "git", "htop", "gpg"]
|
||||
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" | sudo tee /etc/apt/sources.list.d/sury-php.list
|
||||
become: yes
|
||||
|
||||
- name: Ajouter la clé GPG du dépôt Sury
|
||||
apt_key:
|
||||
url: https://packages.sury.org/php/apt.gpg
|
||||
state: present
|
||||
become: yes
|
||||
|
||||
- name: Mettre à jour et upgrader le système
|
||||
apt:
|
||||
update_cache: yes
|
||||
upgrade: dist
|
||||
become: yes
|
||||
|
||||
# 9. Installer PHP 8.3 et ses extensions
|
||||
- name: Installer PHP 8.3 et modules requis
|
||||
apt:
|
||||
name:
|
||||
- php8.3-cli
|
||||
- php8.3-fpm
|
||||
- php8.3-common
|
||||
- php8.3-mbstring
|
||||
- php8.3-xml
|
||||
- php8.3-curl
|
||||
- php8.3-zip
|
||||
- php8.3-gd
|
||||
- php8.3-mysql
|
||||
state: present
|
||||
become: yes
|
||||
|
||||
- name: Redémarrer PHP 8.3-FPM
|
||||
systemd:
|
||||
name: php8.3-fpm
|
||||
state: restarted
|
||||
become: yes
|
||||
|
||||
# 10. Configurer Apache avec PHP 8.3
|
||||
- name: Activer PHP 8.3 dans Apache
|
||||
command: a2enmod php8.3
|
||||
become: yes
|
||||
|
||||
- name: Redémarrer Apache
|
||||
systemd:
|
||||
name: apache2
|
||||
state: restarted
|
||||
become: yes
|
||||
|
||||
- name: Activer les modules rewrite et expires dans Apache
|
||||
command: a2enmod rewrite expires
|
||||
become: yes
|
||||
|
||||
- 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
|
||||
|
||||
129
ansible/playbooks/debian_fullserver_without_web.yml
Normal file
129
ansible/playbooks/debian_fullserver_without_web.yml
Normal file
@ -0,0 +1,129 @@
|
||||
- hosts: server_web
|
||||
vars:
|
||||
user: "smauro"
|
||||
root_password: "testtest"
|
||||
tasks:
|
||||
# 1. Passer à root et installer sudo (si pas déjà installé)
|
||||
- name: Passer à root et installer sudo
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
command: apt install sudo -y
|
||||
vars:
|
||||
ansible_become_pass: "{{ root_password }}"
|
||||
register: result
|
||||
when: ansible_facts.packages['sudo'] is not defined
|
||||
|
||||
- name: Afficher le résultat de l'installation de sudo
|
||||
debug:
|
||||
var: result
|
||||
|
||||
# 2. Ajouter l'utilisateur au groupe sudo
|
||||
- name: Ajouter l'utilisateur au groupe sudo
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
groups: sudo
|
||||
append: yes
|
||||
become: yes
|
||||
become_user: root
|
||||
when: ansible_facts.packages['sudo'] is defined
|
||||
|
||||
# 3. Modifier le fichier sources.list
|
||||
- name: Modifier le fichier sources.list
|
||||
copy:
|
||||
dest: /etc/apt/sources.list
|
||||
content: |
|
||||
deb http://deb.debian.org/debian/ bookworm main non-free-firmware
|
||||
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware
|
||||
|
||||
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
|
||||
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware
|
||||
|
||||
# bookworm-updates, to get updates before a point release is made;
|
||||
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
|
||||
deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
|
||||
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
|
||||
become: yes
|
||||
|
||||
# 4. Mettre à jour les paquets
|
||||
- name: Mettre à jour les paquets
|
||||
apt:
|
||||
update_cache: yes
|
||||
become: yes
|
||||
|
||||
# 5. Configurer le hostname
|
||||
- name: Configurer le hostname
|
||||
hostname:
|
||||
name: "{{ ansible_hostname }}"
|
||||
become: yes
|
||||
|
||||
# 6. Changer le mot de passe root
|
||||
- name: Changer le mot de passe root
|
||||
user:
|
||||
name: root
|
||||
password: "{{ root_password | password_hash('sha512') }}"
|
||||
become: yes
|
||||
|
||||
# 7. Configurer l'utilisateur smauro
|
||||
- name: Configurer l'utilisateur smauro
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
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", "net-tools"]
|
||||
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
|
||||
|
||||
# 11. Mettre à jour et upgrader le système
|
||||
- name: Mettre à jour et upgrader le système
|
||||
apt:
|
||||
update_cache: yes
|
||||
upgrade: dist
|
||||
become: yes
|
||||
|
||||
- name: Mettre à jour /etc/hosts avec le hostname
|
||||
lineinfile:
|
||||
path: /etc/hosts
|
||||
regexp: '^127\.0\.0\.1\s+'
|
||||
line: "127.0.0.1 localhost {{ ansible_hostname }}"
|
||||
state: present
|
||||
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
|
||||
|
||||
- name: Déployer le script MOTD personnalisé
|
||||
copy:
|
||||
src: ../sources/99-motd # Chemin relatif depuis où tu exécutes le playbook
|
||||
dest: /etc/update-motd.d/99-motd
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
become: yes
|
||||
|
||||
- name: Redémarrer la machine
|
||||
command: "nohup bash -c 'sleep 5 && reboot' &"
|
||||
async: 1
|
||||
poll: 0
|
||||
ignore_errors: yes
|
||||
become: yes
|
||||
88
ansible/playbooks/debian_setup.yml
Normal file
88
ansible/playbooks/debian_setup.yml
Normal file
@ -0,0 +1,88 @@
|
||||
---
|
||||
- hosts: debian_vm
|
||||
vars:
|
||||
user: "smauro"
|
||||
root_password: "testtest"
|
||||
tasks:
|
||||
# 1. Passer à root et installer sudo
|
||||
- name: Passer à root et installer sudo
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
command: apt install sudo -y
|
||||
vars:
|
||||
ansible_become_pass: "{{ root_password }}" # Le mot de passe root est passé ici
|
||||
register: result
|
||||
|
||||
- name: Afficher le résultat de l'installation de sudo
|
||||
debug:
|
||||
var: result
|
||||
|
||||
# 2. Ajouter l'utilisateur au groupe sudo
|
||||
- name: Ajouter l'utilisateur au groupe sudo
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
groups: sudo
|
||||
append: yes
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
|
||||
# 3. Mettre à jour les paquets
|
||||
- name: Mettre à jour les paquets
|
||||
apt:
|
||||
update_cache: yes
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
|
||||
# 4. Configurer le hostname
|
||||
- name: Configurer le hostname
|
||||
hostname:
|
||||
name: "ntp01deb"
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
|
||||
# 5. Changer le mot de passe root
|
||||
- name: Changer le mot de passe root
|
||||
user:
|
||||
name: root
|
||||
password: "{{ root_password | password_hash('sha512') }}"
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
|
||||
# 6. Configurer l'utilisateur smauro
|
||||
- name: Configurer l'utilisateur smauro
|
||||
user:
|
||||
name: "{{ user }}"
|
||||
password: "{{ root_password | password_hash('sha512') }}"
|
||||
shell: /bin/bash
|
||||
groups: sudo
|
||||
state: present
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
|
||||
- name: Installer les paquets nécessaires
|
||||
apt:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
loop:
|
||||
- sudo
|
||||
- vim
|
||||
- curl
|
||||
- git
|
||||
- htop
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
|
||||
- name: Redémarrer la machine
|
||||
reboot:
|
||||
msg: "Redémarrage après configuration."
|
||||
pre_reboot_delay: 5
|
||||
become: yes
|
||||
become_user: root
|
||||
become_method: su
|
||||
42
ansible/sources/99-motd
Normal file
42
ansible/sources/99-motd
Normal file
@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Définition des couleurs
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
PURPLE='\033[0;35m'
|
||||
CYAN='\033[0;36m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Récupération des informations
|
||||
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
|
||||
RAM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
|
||||
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}')
|
||||
IP_ADDRESS=$(hostname -I | cut -d' ' -f1)
|
||||
HOSTNAME=$(hostname)
|
||||
USERS_CONNECTED=$(who | wc -l)
|
||||
OS_INFO=$(lsb_release -d | cut -f2)
|
||||
OS_VERSION=$(lsb_release -r | cut -f2)
|
||||
UPDATES_AVAILABLE=$(apt list --upgradable 2>/dev/null | grep -c "/")
|
||||
|
||||
# Affichage de la bannière
|
||||
echo -e "${NC}"
|
||||
echo -e "${RED}----------------------------------------------------------------------${NC}"
|
||||
echo -e "${GREEN}1. Utilisation du Processeur: ${CPU_USAGE}%${NC}"
|
||||
echo -e "${BLUE}2. Utilisation de la RAM: ${RAM_USAGE}%${NC}"
|
||||
echo -e "${PURPLE}3. Utilisation du disque: ${DISK_USAGE}${NC}"
|
||||
echo -e "${CYAN}4. Adresse IP de la machine ipv4: ${IP_ADDRESS}${NC}"
|
||||
echo -e "${GREEN}5. Nom de la machine: ${HOSTNAME}${NC}"
|
||||
echo -e "${RED}6. Nombre d'utilisateurs connectés: ${USERS_CONNECTED}${NC}"
|
||||
echo -e "${CYAN}7. Système d'exploitation: ${OS_INFO}${NC}"
|
||||
echo -e "${CYAN}8. Version de l'OS: ${OS_VERSION}${NC}"
|
||||
echo -e "${RED}----------------------------------------------------------------------${NC}"
|
||||
echo -e "${NC}"
|
||||
|
||||
if [ $UPDATES_AVAILABLE -gt 0 ]; then
|
||||
echo -e "${RED}Des mises à jour sont disponibles.${NC}"
|
||||
echo -e "${NC}"
|
||||
else
|
||||
echo -e "${GREEN}Aucune mise à jour disponible.${NC}"
|
||||
echo -e "${NC}"
|
||||
fi
|
||||
Loading…
x
Reference in New Issue
Block a user