1. Créer un jeu de cle de privee / publique pour la connexion ssh, ne pas mettre de mot de passe (passphrase)
ssh-keygen -t ed25519 -C "ansible@control-serveur"
2. Localiser les clients à l’aide de la commande ping et noter les IP, les clients sont ansible ansible-client1 et ansible-client2
ping ansible-client1
ping ansible-client2
3. Se connecter aux clients et ajouter la cle publique, le compte a utiliser est root et mot de passe formation.
# Pour le client1
ssh root@ansible-client1
# Dans le dossier .ssh ouvrir le fichier authorized_keys
nano .ssh/authorized_keys
# Coller ensuite le cle publique et repeter l'operation
4. Installer Ansible et créer le fichier d inventaire au format yaml, pour des raisons de facilite, on va créer un dossier
apt update
apt install ansible
mkdir ansible
cd ansible
# Créer le fichier inventaire.yaml
nano inventaire.yaml
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
5. Test client avec ansible ping
ansible all -i /root/ansible/inventaire.yaml -m ping -vv
6. Transformer ansible ping en playbook
# Créer le fichier playbook_ping.yaml dans le dossier ansible
nano playbook_ping.yaml
# playbook_ping.yaml
---
- name: Vérification de la connectivité des hôtes
hosts: all
tasks:
- name: Envoyer un ping Ansible aux machines
ping:
# Executer le playbook
ansible-playbook /root/ansible/playbook_ping.yaml -i /root/ansible/inventaire.yaml -v
7. Créer un playbook pour installer les maj sur les serveurs, Debian, afin de simuler un environnement plus large, on édite en premier le fichier d’inventaire pour créer un group Debian
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
children:
debian:
hosts:
ansible-client1:
ansible-client2:
# playbook_debian_update.yaml
---
- name: Mise à jour complète des serveurs Debian
hosts: debian
become: yes
tasks:
- name: Actualiser le cache apt et mettre à jour tous les paquets
apt:
update_cache: yes
upgrade: dist
# Executer le playbook
ansible-playbook /root/ansible/playbook_debian_update.yaml -i /root/ansible/inventaire.yaml -v
8. Installation Apache sur client 1 avec Ansible en utilisant un playbook puis MariaDB sur le client 2
On commence par éditer le fichier d’inventaire pour créer deux nouveaux groupes
# inventaire.yaml
all:
hosts:
ansible-client1:
ansible_host: <IP>
ansible-client2:
ansible_host: <IP>
children:
debian:
hosts:
ansible-client1:
ansible-client2:
webservers:
hosts:
ansible-client1:
databases:
hosts:
ansible-client2:
Création du playbook pour installer Apache :
#playbook_apache_install.yaml
---
- name: Installer Apache
hosts: webservers
become: yes
tasks:
- name: Installer Apache2
apt:
name: apache2
state: present
update_cache: yes
- name: Démarrer Apache
service:
name: apache2
state: started
enabled: yes
Création du playbook MariaDB pour l’installation et la configuration
#playbook_mariadb_install.yaml
---
- name: Installer et configurer MariaDB
hosts: databases
become: yes
vars:
mysql_root_password: SuperRoot123!
app_db: appdb
app_user: appuser
app_password: AppPass123!
tasks:
- name: Installer MariaDB
apt:
name:
- mariadb-server
- python3-pymysql
state: present
update_cache: yes
- name: Démarrer MariaDB
service:
name: mariadb
state: started
enabled: yes
- name: Définir mot de passe root
community.mysql.mysql_user:
name: root
host: localhost
password: "{{ mysql_root_password }}"
login_unix_socket: /run/mysqld/mysqld.sock
check_implicit_admin: true
priv: "*.*:ALL,GRANT"
- name: Supprimer base test
community.mysql.mysql_db:
name: test
state: absent
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Créer base applicative
community.mysql.mysql_db:
name: "{{ app_db }}"
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
- name: Créer utilisateur applicatif
community.mysql.mysql_user:
name: "{{ app_user }}"
password: "{{ app_password }}"
priv: "{{ app_db }}.*:ALL"
host: "%"
state: present
login_user: root
login_password: "{{ mysql_root_password }}"
Exécuter les playbooks :
ansible-playbook /root/ansible/playbook_apache_install.yaml -i /root/ansible/inventaire.yaml -v
ansible-playbook /root/ansible/playbook_mariadb_install.yaml -i /root/ansible/inventaire.yaml -v