Ansible
Ansible est une plateforme de gestion de configuration open-source, qui automatise le déploiement, la gestion et l'orchestration de l'infrastructure informatique. Que ce soit pour le provisionnement de serveurs, la configuration d'applications ou la gestion de données, Ansible simplifie ces tâches en utilisant une approche basée sur le langage de description YAML (YAML Ain't Markup Language) et le protocole SSH pour la communication avec les machines distantes.
Prérequis
Avoir 3 machines (master, worker1 et worker2) avec serveur ssh
apt install openssh-server
Autoriser root et pubkey :
Relancer le service :
systemctl restart ssh
systemctl restart sshd
Faire l'échange de clé :
ssh-keygen
ssh-copy-id root@ip-srv
Mettre a jour le fichier hosts :
nano /etc/hosts
Installation
apt install ansible
Créer fichier de configuration :
mkdir /etc/ansible
nano /etc/ansible/ansible.cfg
voici quelques options de configurations :
[defaults]
# Chemin vers les inventaires par défaut
inventory = /etc/ansible/inventory
# Utilisateur SSH par défaut
remote_user = root
# Chemin vers la clé SSH par défaut
#private_key_file = ~/.ssh/id_rsa
# Options de configuration pour le comportement de ssh
#[ssh_connection]
#ssh_args = -o ControlMaster=auto -o ControlPersist=60s
Puis créer le fichier inventory :
nano /etc/ansible/inventory
ajouter vos nodes :
[master]
192.168.1.104
[worker1]
192.168.1.105
[worker2]
192.168.1.106
[workers]
192.168.1.105
192.168.1.106
Vérification avec un ping sur tous les nodes
ansible all -m ping
Playbook
Les playbooks vont nous aider a effectuer des taches sur nos nodes de manière automatisée, avoir une bibliotèque bien fournie permet de gérer ses serveurs en en temps record :)
N'hésitez pas à faire travailler chatGPT
Création d'un playbook pour installer nginx :
nano nginx_install_debian.yml
Le modifier comme suit pour lancer l'installation sur les workers :
---
- name: Install Nginx on Debian
hosts: workers
become: yes
tasks:
- name: Update package cache
apt:
update_cache: yes
- name: Install Nginx
apt:
name: nginx
state: present
- name: Start Nginx service
service:
name: nginx
state: started
enabled: yes
Lancer le playbook avec la commande :
ansible-playbook nginx_install_debian.yml
On se rend sur l'url afin de vérifier que tout fonctionne :
Shell
On peut aussi envoyer du shell sur nos nodes, préparer plusieurs scripts pour les tâches récurrentes et ajouter les à votre bibliotèques :)
Check de la mémoire sur chaque node :
ansible all -m shell -a "free -m"
Mettre a jour les paquets sur les nodes :
ansible all -m apt -a "update_cache=yes upgrade=dist"
On peut aussi le nom de machine que nous avons déclarer dans inventory :
L'ip fonctionne aussi mais on perd du temps à l'écrire ;)