24. Automatiser la configuration d'Ubuntu Server avec Ansible : un guide pratique

Introduction

Configurer et gérer des serveurs manuellement peut être un processus fastidieux et sujet aux erreurs, en particulier dans des environnements comportant plusieurs serveurs ou des tâches de configuration répétitives. Ansible, un puissant outil d'automatisation informatique open source, simplifie ce processus en vous permettant d'automatiser facilement le provisionnement, la configuration et la gestion des serveurs. Dans ce guide « 24. Automatiser la configuration d'Ubuntu Server avec Ansible : un guide pratique » nous vous guiderons à travers les bases de l'utilisation d'Ansible pour automatiser la configuration d'Ubuntu Server. À la fin, vous apprendrez à écrire et à exécuter des playbooks Ansible pour simplifier les tâches courantes des serveurs, améliorer l'efficacité et garantir la cohérence dans l'ensemble de votre infrastructure.


Articles précédents :

01. Introduction à Ubuntu Server – SysOSX: AI & Cloud

02. Comment configurer votre premier serveur Ubuntu : guide du débutant – SysOSX: AI & Cloud

03. Maîtriser la ligne de commande Linux pour Ubuntu Server – SysOSX: AI & Cloud

04. Gestion des utilisateurs et des autorisations sur Ubuntu Server : un guide complet – SysOSX: AI & Cloud

05. Bases des réseaux pour Ubuntu Server : un guide complet – SysOSX: AI & Cloud

06. Installer et gérer des logiciels sur Ubuntu Server : un guide complet – SysOSX: AI & Cloud

07.Corriger et mettre à jour Ubuntu Server : un guide complet – SysOSX: AI & Cloud

08. Sécuriser votre serveur Ubuntu : étapes pratiques de durcissement et de protection – SysOSX: AI & Cloud

09. Audit et journalisation des serveurs Ubuntu

10. Outils de surveillance système pour Ubuntu Server : un guide complet – SysOSX: AI & Cloud

11. Journalisation centralisée pour serveurs Ubuntu : un guide indispensable – SysOSX: AI & Cloud

12. Audit et conformité pour Ubuntu Server : meilleures pratiques – SysOSX: AI & Cloud

13. Configurer votre serveur Ubuntu pour l'hébergement et les applications web : le guide ultime – SysOSX: AI & Cloud

14. Héberger plusieurs sites web sur un seul serveur Ubuntu : conseils utiles – SysOSX: AI & Cloud

15. Gérer le stockage et les disques sur Ubuntu Server : guide simple – SysOSX: AI & Cloud

16. Configurer les services de partage de fichiers sur Ubuntu Server : un guide complet – SysOSX: AI & Cloud

17. Configurer un serveur de base de données sécurisé sur Ubuntu : MySQL vs MariaDB – SysOSX: AI & Cloud

18. Comment configurer et utiliser LVM sur Ubuntu Server : un guide complet – SysOSX: AI & Cloud

19. Introduction à la virtualisation avec KVM : guide du débutant pour Ubuntu Server – SysOSX: AI & Cloud

20. Comment installer Docker sur Ubuntu Server : un guide étape par étape de la conteneurisation – SysOSX: AI & Cloud

21. Premiers pas avec LXD : installez des conteneurs facilement + aide-mémoire – SysOSX: AI & Cloud

22. Premiers pas avec Podman sur Ubuntu Server : un guide complet – SysOSX: AI & Cloud

23. Déployer Ubuntu Server dans le cloud : un guide étape par étape – SysOSX: AI & Cloud



Pourquoi utiliser Ansible pour l'automatisation des serveurs ?

Ansible est largement utilisé pour l'automatisation des serveurs en raison de sa simplicité et de sa puissance. Voici pourquoi c'est un excellent choix :

  • Sans agent : Ansible ne nécessite l'installation d'aucun logiciel agent sur les serveurs cibles. Il utilise SSH pour communiquer.
  • Syntaxe déclarative : les playbooks Ansible utilisent YAML, une syntaxe lisible par l'humain, qui facilite la définition des états souhaités.
  • Configurations réutilisables : écrivez des playbooks une seule fois et réutilisez-les sur plusieurs serveurs.
  • Idempotent : Ansible garantit que les tâches ne sont exécutées que si nécessaire, évitant ainsi les opérations redondantes.
  • Extensibilité : Ansible prend en charge un large éventail de modules pour des tâches comme l'installation de paquets, la gestion de fichiers et la configuration de services.

Prérequis

Avant de nous lancer dans l'automatisation de la configuration d'Ubuntu Server avec Ansible, assurez-vous de disposer des éléments suivants :

  1. Nœud de contrôle : une machine (votre système local ou un serveur dédié) sur laquelle Ansible est installé.
  2. Serveurs cibles : serveurs Ubuntu (sur site ou dans le cloud) que vous souhaitez configurer.
  3. Accès SSH : assurez-vous qu'un accès SSH sans mot de passe est configuré entre le nœud de contrôle et les serveurs cibles.

Étape 1 : installer Ansible

1.1 Installer Ansible sur le nœud de contrôle

Sur votre nœud de contrôle (par exemple, votre machine locale sous Ubuntu), installez Ansible :

sudo apt update  
sudo apt install ansible -y  

1.2 Vérifier l'installation

Vérifiez la version installée d'Ansible pour vous assurer qu'il est correctement installé :

ansible --version  

Exemple de sortie :

ansible 2.10.8
  config file = None
  configured module search path = ['/home/uadmin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Feb  4 2025, 14:57:36) [GCC 11.4.0]


Étape 2 : configurer l'accès SSH

Ansible communique avec les serveurs cibles via SSH. Vous devrez configurer un accès SSH sans mot de passe depuis le nœud de contrôle vers les serveurs cibles.

2.1 Générer une paire de clés SSH

Si vous n'avez pas encore de paire de clés SSH, générez-en une :

ssh-keygen -t rsa -b 2048  

2.2 Copier la clé SSH vers les serveurs cibles

Utilisez la commande suivante pour copier votre clé publique vers le ou les serveurs cibles :

ssh-copy-id ubuntu@<target-server-ip>  

Testez l'accès SSH pour vous assurer qu'il fonctionne sans mot de passe :

ssh ubuntu@<target-server-ip>  


Étape 3 : définir votre inventaire

Ansible utilise un fichier d'inventaire pour définir les serveurs cibles à gérer.

3.1 Créer un fichier d'inventaire

Créez un fichier nommé inventory dans votre répertoire de travail :

nano inventory  

Ajoutez les adresses IP ou les noms d'hôte des serveurs cibles. Par exemple :

[ubuntu_servers]  
192.168.50.42  
192.168.50.145

Enregistrez et quittez le fichier (Ctrl+O puis Ctrl+X).

3.2 Tester la connectivité

Utilisez le ping module pour tester la connectivité avec les serveurs cibles :

ansible -i inventory ubuntu_servers -m ping  

Exemple de sortie :

192.168.50.145 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
192.168.50.42 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}


Étape 4 : écrire votre premier playbook Ansible

Les playbooks Ansible sont des fichiers YAML qui définissent les tâches que vous souhaitez automatiser. Créons un playbook pour automatiser la configuration d'un serveur Ubuntu.

4.1 Créer un fichier playbook

Créez un fichier nommé setup.yml :

nano setup.yml  

4.2 Définir le playbook

Ajoutez le contenu suivant au playbook :

---  
- name: Configure Ubuntu Server  
  hosts: ubuntu_servers  
  become: true  

  tasks:  
    - name: Update and upgrade apt packages  
      apt:  
        update_cache: yes  
        upgrade: dist  

    - name: Install common packages  
      apt:  
        name:  
          - curl  
          - wget  
          - git  
          - build-essential  
        state: present  

    - name: Enable UFW and allow SSH  
      ufw:  
        rule: allow  
        name: OpenSSH  
        state: enabled  

    - name: Create a new user  
      user:  
        name: devuser  
        password: "{{ 'password123' | password_hash('sha512') }}"  
        state: present  
        groups: sudo  

Explication des tâches

  1. Mettre à jour et à niveau les paquets : garantit que le serveur dispose des dernières mises à jour et des derniers correctifs de sécurité.
  2. Installer les paquets courants : installe des outils essentiels comme curl, wget et git.
  3. Activer UFW : configure le pare-feu pour autoriser l'accès SSH.
  4. Créer un nouvel utilisateur : ajoute un nouvel utilisateur avec des privilèges sudo.
  5. Définir le nom d'hôte : configure le nom d'hôte du serveur.

Enregistrez et quittez le fichier.


Étape 5 : exécuter le playbook

Exécutez le playbook pour appliquer les configurations :

ansible-playbook -i inventory setup.yml  

Ansible consignera la progression de chaque tâche. Si toutes les tâches se terminent avec succès, votre serveur Ubuntu sera entièrement configuré.

Sortie ci-dessous :

uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml

PLAY [Configure Ubuntu Server] ***************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]

TASK [Update and upgrade apt packages] *******************************************************************************
^X^C [ERROR]: User interrupted execution
uadmin@u2204-001:~$ sudo nano setup.yml
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml

PLAY [Configure Ubuntu Server] ***************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]

TASK [Update and upgrade apt packages] *******************************************************************************
ok: [192.168.50.42]
ok: [192.168.50.145]

TASK [Install common packages] ***************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]

TASK [Enable UFW and allow SSH] **************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]

TASK [Create a new user] *********************************************************************************************
changed: [192.168.50.42]
changed: [192.168.50.145]

PLAY RECAP ***********************************************************************************************************
192.168.50.145             : ok=5    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.168.50.42              : ok=5    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0



Étape 6 : vérifier la configuration

6.1 Vérifier les paquets installés

Connectez-vous à l'un des serveurs cibles et vérifiez que les paquets courants ont bien été installés :

curl --version  
git --version  

6.2 Vérifier l'état du pare-feu

Vérifiez que le pare-feu est activé :

sudo ufw status  

6.3 Vérifier le nouvel utilisateur

Assurez-vous que le nouvel utilisateur a bien été créé :

cat /etc/passwd | grep devuser  


Cas d'utilisation avancés

Une fois à l'aise avec les playbooks de base, vous pouvez explorer des cas d'utilisation plus avancés :

  • Déployer des applications : utilisez Ansible pour installer et configurer des serveurs web (par exemple Nginx, Apache) ou des bases de données (par exemple MySQL, PostgreSQL).
  • Gérer plusieurs environnements : créez des fichiers d'inventaire distincts pour les environnements de staging, de production et de développement.
  • Utiliser des rôles : organisez vos playbooks en rôles réutilisables pour les configurations complexes.
  • Intégration avec CI/CD : automatisez la configuration des serveurs dans le cadre de votre pipeline CI/CD.

Référence :

Documentation Ansible — Documentation de la communauté Ansible


Conclusion

Ansible est un outil puissant pour automatiser la configuration des serveurs. Dans ce guide, nous avons couvert :

  • Installer Ansible sur le nœud de contrôle.
  • Configurer l'accès SSH aux serveurs cibles.
  • Écrire et exécuter un playbook de base pour automatiser la configuration d'Ubuntu Server.

En tirant parti d'Ansible, vous pouvez gagner du temps, réduire les erreurs et garantir la cohérence dans l'ensemble de votre infrastructure. Que vous gériez un seul serveur ou des centaines, Ansible est un outil essentiel pour les flux de travail DevOps modernes.

2 thoughts on “24. Automating Ubuntu Server Setup with Ansible: A Practical Guide”

Laisser un commentaire