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 ;)