Lors des déploiements, les administrateurs systèmes ou  les développeurs sont souvent confrontés à des tâches répétitives et chronophages, telles que l'ajout d'utilisateurs, la configuration de pare-feux, ou encore la mise à jour de paquets sur plusieurs machines. Ces processus manuels peuvent rapidement devenir fastidieux, surtout lorsqu'ils doivent être répétés sur de nombreux serveurs. C’est ici qu’Ansible intervient, offrant une solution puissante pour automatiser ces tâches et simplifier la gestion des infrastructures. Dans cet article, nous verrons comment utiliser Ansible pour automatiser la configuration de vos serveurs et rendre vos déploiements plus efficaces.

Pourquoi Ansible ?

Ansible est un outil open-source qui permet d’automatiser la gestion de configurations, le déploiement de logiciels, et l'exécution de tâches diverses sur un grand nombre de serveurs simultanément. Contrairement à d'autres outils, Ansible ne nécessite pas l'installation d'agents sur les serveurs cibles, ce qui le rend simple à utiliser et à déployer. Avec Ansible, vous pouvez gérer toute une infrastructure sans avoir à vous connecter manuellement à chaque serveur.

Cas Pratique : Automatiser la Configuration de VPS avec Ansible

Prenons un exemple concret pour illustrer l’efficacité d’Ansible. Supposons que vous venez de configurer un nouveau serveur VPS sous Ubuntu et que vous devez effectuer les tâches suivantes :

  • Mettre à jour le système.
  • Créer un nouvel utilisateur avec des droits sudo.
  • Configurer un pare-feu pour sécuriser le serveur.

Traditionnellement, vous devriez exécuter manuellement une série de commandes pour accomplir cela, ce qui devient fastidieux surtout si vous gérez plusieurs serveurs. Avec Ansible, vous pouvez automatiser l’ensemble de ce processus.

apt update && apt upgrade
adduser user
usermod -aG sudo user
visudo
user ALL=(ALL: ALL) ALL
su - user
sudo apt install ufw
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
Linode interface

Voici notre linode vps ubuntu sur lequel on fera notre test

Étape 1 : Installer Ansible

Commencez par installer Ansible sur votre machine locale. Une fois installé, vous pouvez utiliser Ansible pour gérer vos serveurs distants.

Étape 2 : Configurer l'Accès SSH

Pour permettre à Ansible de se connecter à votre serveur sans avoir à entrer de mot de passe à chaque fois, vous devez configurer une clé SSH :

  1. Générer une clé SSH :
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_ansible

2.Copier la clé publique sur le serveur VPS :

ssh-copy-id -i ~/.ssh/id_ed25519_ansible.pub root@198.74.53.10

ensuite on va créer un fichier 

nano ~/.ssh/config  

et on va mettre ce contenu à l'intérieur, comme mot de passe, qui permet à Ansible de se connecter au VPS.

Host serveur1
    HostName 198.74.53.10
    User root
    IdentityFile ~/.ssh/id_ed25519_ansible

Étape 3 : Configurer l’Inventaire Ansible

L'inventaire est un fichier qui liste les serveurs que vous souhaitez gérer avec Ansible. Créez un fichier inventory et ajoutez-y l’adresse IP de votre VPS ainsi que les informations d'accès :

[webservers]
serveur1 ansible_host=198.74.53.10 ansible_user=root  ansible_ssh_private_key_file=~/.ssh/id_ed25519_ansible

On va maintenant faire un ping pour voir Ansible arrive à communiquer avec notre vps 

Notre configuration a bien fonctionné.

Nous allons donc créer notre playbook qui permettra de configurer automatiquement notre VPS.

Nous voulons créer un utilisateur nommé 'ange' avec le mot de passe 'Ange@2024'.

Voici comment nous allons procéder dans un premier temps :

c’est le mot passe  chiffrée qu’on donnera à notre utilisateur ange 

Étape 4 : Créer un Playbook Ansible

Un playbook est un fichier YAML dans lequel vous décrivez les tâches que vous souhaitez automatiser. Voici un exemple de playbook install.yml pour configurer automatiquement votre serveur :

- hosts: all
  become: yes
  tasks:
    - name: Mettre à jour les paquets APT et effectuer une mise à niveau
      apt:
        update_cache: yes
        upgrade: dist
    - name: Ajouter un nouvel utilisateur 'ange'
      user:
        name: ange
        state: present
        shell: /bin/bash
        password: "$6$hkqIpLeUpM3K.55k$V2Q7aajJ.qsSdzpAteDKJvAE3Z0nj2D7ldYiyVSG5bH2Nt8FKXDRgpCfcDhnRPWyI4s51TDx4pAcVkDA75Q9T1"
        comment: "Utilisateur de gestion des données"
        createhome: yes
    - name: Ajouter l'utilisateur 'ange' au groupe sudo
      user:
        name: ange
        groups: sudo
        append: yes
    - name: Configurer 'sudoers' pour l'utilisateur 'ange'
      lineinfile:
        path: /etc/sudoers
        state: present
        regexp: '^ange ALL='
        line: 'ange ALL=(ALL:ALL) ALL'
        validate: 'visudo -cf %s'
    - name: Installer UFW (Uncomplicated Firewall)
      apt:
        name: ufw
        state: present
    - name: Autoriser les connexions SSH via UFW
      ufw:
        rule: allow
        name: OpenSSH
    - name: Autoriser les connexions HTTPS via UFW
      ufw:
        rule: allow
        port: 443
        proto: tcp
    - name: Activer UFW
      ufw:
        state: enabled
        policy: allow

Étape 5 : Exécuter le Playbook

Pour lancer la configuration, exécutez simplement la commande suivante :

Ansible se connectera à votre serveur, exécutera les tâches décrites dans le playbook, et configurera votre VPS automatiquement.

Vérification

Une fois le playbook exécuté, vous pouvez vérifier manuellement si l'utilisateur a été créé et si le pare-feu a été configuré en vous connectant à votre serveur :

Vous devriez être en mesure de vous connecter et de constater que les ports spécifiés ont bien été ouverts par UFW.

Conclusion

Cet exemple montre à quel point Ansible peut simplifier la gestion des serveurs, en automatisant des tâches répétitives et chronophages. Ce que vous faisiez manuellement en plusieurs minutes, vous pouvez désormais le réaliser en quelques secondes, et ce, sur des centaines de serveurs si nécessaire. Et ce n’est que le début : Ansible offre une multitude d’autres fonctionnalités que nous explorerons dans de futurs articles, notamment le déploiement simultané sur plusieurs serveurs.

Avec Ansible, dites adieu aux tâches répétitives et bonjour à une gestion plus efficace et plus fiable de vos infrastructures.

@Youssouf Hamed CHERIF