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
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 :
- 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.