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
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
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
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
18. Comment configurer et utiliser LVM sur Ubuntu Server : un guide complet – 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
Sommaire
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 :
- Nœud de contrôle : une machine (votre système local ou un serveur dédié) sur laquelle Ansible est installé.
- Serveurs cibles : serveurs Ubuntu (sur site ou dans le cloud) que vous souhaitez configurer.
- 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
- Mettre à jour et à niveau les paquets : garantit que le serveur dispose des dernières mises à jour et des derniers correctifs de sécurité.
- Installer les paquets courants : installe des outils essentiels comme
curl,wgetetgit. - Activer UFW : configure le pare-feu pour autoriser l'accès SSH.
- Créer un nouvel utilisateur : ajoute un nouvel utilisateur avec des privilèges sudo.
- 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”