Ansible

Ansible est un outil open source très puissant pour l’automatisation de la gestion de l’infrastrucutre IT, il prend en charge la gestion des configuration, déploiement des application, cloud provisionning et l’orchestration de plusieurs noeds.

Ansible est un outil Agentless (c’est à dire qu’il ne faut pas installer des agents ou utilitaires sur les machines cibles afin de les gérer) il ne nécessite aussi pas de dépendences ou logiciels tier il suffit juste d’editer des fichiers de configuration en yaml pour pouvoir executer les commandes de configuration ou déploiement ou…

Les notions de base d’Ansible

Ansible fonctionne en utilisant des fichiers de configuration appelés « playbooks », qui sont écrits en YAML (Yet Another Markup Language). Les playbooks définissent un ensemble de tâches à exécuter sur des hôtes cibles, organisés en rôles pour une meilleure modularité et réutilisabilité. Voici les concepts clés :

Inventaire : Une liste des noeuds (serveurs décrit par leur hostname) gérés par Ansible, organisés en groupes pour faciliter le ciblage des actions.
Modules : Des unités de code réutilisables qui effectuent des tâches spécifiques, comme la gestion de paquets, la configuration de services, ou la manipulation de fichiers.
Playbooks : Des fichiers de configuration YAML qui décrivent et orchestrent l’exécution des modules sur les hôtes spécifiés.
Rôles : Des collections de tâches, variables, fichiers et templates organisés de manière modulaire.

Comment installer Ansible ?

Sur Debian/ubuntu

 sudo apt-get update
 sudo apt-get -y install software-properties-common
 sudo apt-add-repository ppa:ansible/ansible
 sudo apt-get update
 sudo apt-get install -y ansible

Sur Redhat/CentOS/Rocky Linux

sudo yum update -y
sudo yum install epel-release -y
sudo yum install ansible -y
# Pour s'assurer de la version Ansible installée
ansible --version

Avantages d’Ansible

1- Simplicité et facilité d’utilisation

2- Flexibilité et puissance: large gamme de commandes, tâches qui peut executer pour configurer des serveurs, déployer des applications, orchestration des Workflows.

3- Communauté active et support entreprise de Redhat: puisque c’est un outil Open Source vous trouvez des milliers de PlayBook partagés et la documentation détaillé ainsi que des centaines de Threads dans les Forums du DevOps.

Ansible est supporté par Redhat qui propose des plateformes de gestion d’Ansible dédiées aux Entreprises « Red Hat Ansible Automation Platform »

Comment faire une configuration via Ansible

Après avoir ajouter les noeuds cibles (Target servers) via la commande ssh-copy-id on ajoute les noeuds ou sereurs sur le fichiers d’inventaire localisé sur /etc/ansible/hosts comme suit:

node1
node2
[webservers]
srvweb01.kuntacloud.dz
srvweb02.kuntacloud.dz

[dbserveurs]
srvdb01.kuntacloud.dz
srvdb02.kuntacloud.dz

Remarque sur le fichier d’inventaire on peut cibler le noeud explicitement ou soit par son groupe e.g « webserver »

Exemple: Executer la commande « ping google.com » sur tous les serveurs web avec Ansible

$ ansible webservers -m command -a "ping google.com"

Maintenat si on a plusieurs actions dépendentes entre elles on doit editer un fichier YAML pour décrires ces actions, exemple on voudrait installer et démarrer le serveur web Apache sur Linux Redhat/CentOS/Rocky on crée le fichier YAML « deploiement_apache.yaml » suivant

---
- name: Installer et démarrer Apache
  hosts: webservers
  become: yes

  tasks:
    - name: Installer Apache
      yum:
        name: httpd
        state: present

    - name: Démarrer Apache
      service:
        name: httpd
        state: started

Après on execute le Playbook comme suit:

ansible-playbook deploiement_apache.yaml

Ansible est un outil d’automatisation puissant et flexible qui simplifie la gestion des systèmes informatiques.

Sa simplicité d’utilisation, sa nature sans agent, et son large éventail de fonctionnalités en font un choix de premier plan pour les administrateurs système et les équipes DevOps. En adoptant Ansible, les organisations peuvent améliorer leur efficacité opérationnelle, réduire les erreurs humaines, et se concentrer sur des tâches à plus forte valeur ajoutée. L’automatisation avec Ansible est une étape clé vers une infrastructure plus agile et résiliente.