Developer Advocate
Les systèmes de gestion de la configuration sont conçus pour rationaliser le processus de contrôle d’un grand nombre de serveurs, pour les administrateurs et les équipes opérationnelles. Ils vous permettent de contrôler de nombreux systèmes différents de manière automatisée à partir d’un point central.
Bien qu’il existe de nombreux outils populaires de gestion de la configuration pour les systèmes Linux, tels que Chef et Puppet, ceux-ci sont souvent plus complexes que ce que beaucoup de gens veulent ou ont besoin. Ansible est une excellente alternative à ces options car il offre une architecture qui ne nécessite pas l’installation de logiciels spéciaux sur les nœuds, utilisant SSH pour exécuter les tâches d’automatisation et les fichiers YAML pour définir les détails de l’approvisionnement.
Dans ce guide, nous verrons comment installer Ansible sur un serveur Ubuntu 20.04 et nous passerons en revue quelques bases de l’utilisation de ce logiciel. Pour un aperçu plus détaillé d’Ansible en tant qu’outil de gestion de la configuration, veuillez vous reporter à la section Introduction à la gestion de la configuration avec Ansible.
Pour suivre ce tutoriel, vous aurez besoin de :
Un nœud de contrôle Ansible : le nœud de contrôle Ansible est la machine que nous utiliserons pour nous connecter aux hôtes Ansible et les contrôler sur SSH. Votre nœud de contrôle Ansible peut être soit votre machine locale, soit un serveur dédié à l’exécution d’Ansible, bien que ce guide suppose que votre nœud de contrôle est un système Ubuntu 20.04. Assurez-vous que le nœud de contrôle a :
ufw
et permettra un accès externe à votre profil d’utilisateur non root, deux éléments qui contribueront à la sécurité du serveur distant.Un ou plusieurs hôtes Ansible : un hôte Ansible est toute machine que votre nœud de contrôle Ansible est configuré pour automatiser. Ce guide suppose que vos hôtes Ansible sont des serveurs Ubuntu 20.04 distants. Assurez-vous que chaque hôte Ansible possède un :
authorized_keys
d’un utilisateur du système. Cet utilisateur peut être soit root, soit un utilisateur régulier avec des privilèges sudo. Pour configurer cela, vous pouvez suivre l’étape 2 de Comment mettre en place les clés SSH sur Ubuntu 20.04.Pour commencer à utiliser Ansible comme moyen de gestion de votre infrastructure de serveur, vous devez installer le logiciel Ansible sur la machine qui servira de nœud de contrôle Ansible. Nous utiliserons pour cela les dépôts Ubuntu par défaut.
Tout d’abord, rafraîchissez l’index des packages de votre système avec :
- sudo apt update
Suite à cette mise à jour, vous pouvez installer le logiciel Ansible avec :
- sudo apt install ansible
Appuyez sur Y
lorsque vous êtes invité à confirmer l’installation.
Votre nœud de contrôle Ansible dispose maintenant de tous les logiciels nécessaires pour administrer vos hôtes. Ensuite, nous verrons comment mettre en place un fichier d’inventaire, afin qu’Ansible puisse communiquer avec vos nœuds gérés.
Le fichier d’inventaire contient des informations sur les hôtes que vous gérerez avec Ansible. Vous pouvez inclure entre un et plusieurs centaines de serveurs dans votre fichier d’inventaire, et les hôtes peuvent être organisés en groupes et sous-groupes. Le fichier d’inventaire est également souvent utilisé pour définir des variables qui ne seront valables que pour des hôtes ou des groupes spécifiques, afin d’être utilisées dans les modèles de développement et les modèles. Certaines variables peuvent également affecter la façon dont un modèle de développement est exécuté, comme la variable ansible_python_interpreter
que nous allons voir dans un instant.
Pour modifier le contenu de votre inventaire Ansible par défaut, ouvrez le fichier/etc/ansible/hosts
en utilisant l’éditeur de texte de votre choix sur votre nœud de contrôle Ansible :
- sudo nano /etc/ansible/hosts
Note : bien qu’Ansible crée généralement un fichier d’inventaire par défaut à l’adresse etc/ansible/hosts
, vous êtes libre de créer des fichiers d’inventaire à l’endroit qui répond le mieux à vos besoins. Dans ce cas, vous devrez fournir le chemin d’accès à votre fichier d’inventaire personnalisé avec le paramètre -i
lors de l’exécution des commandes Ansible et des modèles de développement. L’utilisation de fichiers d’inventaire par projet est une bonne pratique pour minimiser le risque de lancer un modèle de développement sur le mauvais groupe de serveurs.
Le fichier d’inventaire par défaut fourni par l’installation Ansible contient un certain nombre d’exemples que vous pouvez utiliser comme références pour établir votre inventaire. L’exemple suivant définit un groupe nommé [servers]
. avec trois serveurs différents, chacun identifié par un alias personnalisé : server1, server2 et server3. Veillez à remplacer les IP mises en évidence par les adresses IP de vos hôtes Ansible.
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113
[all:vars]
ansible_python_interpreter=/usr/bin/python3
Le sous-groupe all:vars
définit le paramètre d’hôte ansible_python_interpreter
qui sera valable pour tous les hôtes inclus dans cet inventaire. Ce paramètre permet de s’assurer que le serveur distant utilise l’ exécutable /usr/bin/python3
Python 3 au lieu de /usr/bin/python
(Python 2.7) qui n’est pas présent sur les versions récentes d’Ubuntu.
Lorsque vous avez terminé, enregistrez et fermez le fichier en appuyant sur CTRL+X
puis Y
et ENTER
pour confirmer vos modifications.
Chaque fois que vous voulez vérifier votre inventaire, vous pouvez exécuter :
- ansible-inventory --list -y
Vous verrez une sortie similaire à celle-ci, mais contenant votre propre infrastructure de serveur telle que définie dans votre fichier d’inventaire :
Outputall:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}
Maintenant que vous avez configuré votre fichier d’inventaire, vous avez tout ce dont vous avez besoin pour tester la connexion à vos hôtes Ansible.
Après avoir configuré le fichier d’inventaire pour inclure vos serveurs, il est temps de vérifier si Ansible est capable de se connecter à ces serveurs et d’exécuter des commandes via SSH.
Pour ce guide, nous utiliserons le compte root Ubuntu, car c’est généralement le seul compte disponible par défaut sur les serveurs nouvellement créés. Si vos hôtes Ansible ont déjà créé un utilisateur sudo régulier, vous êtes encouragé à utiliser ce compte à la place.
Vous pouvez utiliser l’argument -u
pour spécifier l’utilisateur du système à distance. Lorsqu’il n’est pas fourni, Ansible essaiera de se connecter en tant qu’utilisateur actuel de votre système sur le nœud de contrôle.
Depuis votre machine locale ou votre nœud de contrôle Ansible, exécutez :
- ansible all -m ping -u root
Cette commande utilisera le module ping
intégré d’Ansible pour effectuer un test de connectivité sur tous les nœuds de votre inventaire par défaut, en se connectant en tant que root. Le module ping
testera :
Vous devriez obtenir un résultat similaire à ceci :
Outputserver1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Si c’est la première fois que vous vous connectez à ces serveurs via SSH, il vous sera demandé de confirmer l’authenticité des hôtes auxquels vous vous connectez via Ansible. Lorsque vous y êtes invité, tapez yes
et appuyez ensuite sur ENTRÉE
pour confirmer.
Une fois que vous obtenez une réponse « pong »
d’un hôte, cela signifie que vous êtes prêt à exécuter les commandes Ansible et les playbooks sur ce serveur.
Note : si vous ne parvenez pas à obtenir une réponse positive de vos serveurs, consultez notre guide de triche pour plus d’informations sur la manière d’exécuter les commandes Ansible avec différentes options de connexion.
Après avoir confirmé que votre nœud de contrôle Ansible est capable de communiquer avec vos hôtes, vous pouvez commencer à exécuter des commandes ad-hoc et des modèles de développement sur vos serveurs.
Toute commande que vous exécuteriez normalement sur un serveur distant par SSH peut être exécutée avec Ansible sur les serveurs spécifiés dans votre fichier d’inventaire. A titre d’exemple, vous pouvez vérifier l’utilisation des disques sur tous les serveurs avec :
- ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0
...
La commande surlignée df -h
peut être remplacée par n’importe quelle commande que vous souhaitez.
Vous pouvez également exécuter les modules Ansible via des commandes ad-hoc, comme nous l’avons fait auparavant avec le module ping
pour tester la connexion. Par exemple, voici comment nous pouvons utiliser le module apt
pour installer la dernière version de vim
sur tous les serveurs de votre inventaire :
- ansible all -m apt -a "name=vim state=latest" -u root
Vous pouvez également cibler des hôtes individuels, ainsi que des groupes et des sous-groupes, lorsque vous exécutez les commandes Ansible. Par exemple, c’est ainsi que vous vérifieriez le uptime
de chaque hôte du groupe servers
:
- ansible servers -a "uptime" -u root
Nous pouvons spécifier plusieurs hôtes en les séparant par des points-virgules :
- ansible server1:server2 -m ping -u root
Pour plus d’informations sur l’utilisation d’Ansible, y compris sur l’exécution de modèles de développement pour automatiser la configuration du serveur, vous pouvez consulter notre guide de référence Ansible.
Dans ce guide, vous avez installé Ansible et configuré un fichier d’inventaire pour exécuter des commandes ad-hoc à partir d’un nœud de contrôle Ansible.
Une fois que vous avez confirmé que vous êtes en mesure de vous connecter et de contrôler votre infrastructure à partir d’un contrôleur central Ansible, vous pouvez exécuter n’importe quelle commande ou modèle de développement que vous souhaitez sur ces hôtes.
Pour plus d’informations sur l’utilisation d’Ansible, consultez notre guide des fiches de triche Ansible.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!