Si vous êtes administrateur système, il est important de disposer d'un moyen cohérent de gérer tous les serveurs et ordinateurs que vous utilisez. Les systèmes de gestion de configuration peuvent grandement simplifier ce processus. Ils gèrent tous les systèmes de manière efficace depuis un emplacement centralisé.
Sur Linux, il existe plusieurs systèmes de gestion de configuration disponibles. Par exemple, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine, etc. Alors que des outils comme Puppet et Chef ont tendance à être plus complexes et avancés, Ansible offre simplicité et facilité d'utilisation. Vous n'avez pas besoin d'installer de logiciel client supplémentaire sur les nœuds pour faire fonctionner Ansible. À la place, Ansible utilise SSH pour gérer et automatiser les systèmes. Ansible est un logiciel open-source. Il est également hautement évolutif, cohérent et fiable.
Ce guide montre comment installer et configurer Ansible sur Ubuntu 20.04.
Ansible sur Ubuntu
Ansible peut réaliser trois types d'automatisation :
-
Provisionnement : Il permet de mettre en place différents serveurs en fonction des besoins de l'infrastructure.
-
Gestion de configuration : Il peut effectuer diverses modifications de configuration sur les serveurs. Par exemple, démarrer et arrêter des services, installer des applications et des mises à jour, appliquer des politiques de sécurité, etc.
-
Déploiement d'applications : Il facilite le DevOps grâce au déploiement automatisé d'applications développées en interne vers le système de production.
Ansible peut fonctionner parfaitement dans presque tous les environnements informatiques – qu'il s'agisse de serveurs hébergés ou traditionnels, de plateformes de virtualisation ou dans le cloud. Il prend également en charge la gestion de divers systèmes tels que les bases de données, les réseaux, les pare-feu, les périphériques de stockage et bien d'autres. CloudSigma prend également en charge Ansible pour notre infrastructure cloud.
Prérequis
Pour ce guide, nous avons besoin de quelques machines :
-
Nœud de contrôle : Le nœud de contrôle est le nœud central qui se connecte à tous les nœuds hôtes, distribue les tâches et gère divers aspects du système. Le nœud de contrôle peut être n'importe quoi – une machine locale ou un serveur distant.
-
Nœud hôte : Les hôtes Ansible sont les machines que le nœud de contrôle Ansible peut automatiser.
Comme le suggère le titre du guide, toutes ces machines doivent être configurées avec Ubuntu 20.04 et disposer des derniers packages. Voici un guide rapide sur la configuration d'un serveur Ubuntu. Comme Ansible utilise SSH pour se connecter aux machines, tous les nœuds hôtes doivent être correctement configurés avec les clés SSH du nœud de contrôle. Assurez-vous que tous les nœuds hôtes ont la clé SSH publique du nœud de contrôle ajoutée au fichier authentication_keys . Suivez notre tutoriel pour apprendre comment générer et ajouter des clés SSH aux serveurs Linux.
Étape 1 : Installation d'Ansible
Dans le cas d'Ubuntu, il n'est pas nécessaire de configurer de package ou de dépôt supplémentaire. Ansible est directement disponible depuis les serveurs de packages officiels d'Ubuntu. Effectuer des modifications au niveau du système nécessite un accès administratif – l'utilisateur root ou un utilisateur non-root avec les privilèges sudo. Le fichier sudoers gère les autorisations sudo pour les utilisateurs et les groupes.
Tout d'abord, nous allons installer Ansible sur l'ordinateur qui servira de nœud de contrôle. Pour installer Ansible sur le nœud de contrôle, exécutez les commandes suivantes :
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Si vous allez utiliser un mot de passe comme mécanisme d'authentification SSH, vous devez avoir le package sshpass installé :
|
1 |
sudo apt install sshpass |

Étape 2 : Configuration du fichier d'inventaire
Dans Ansible, the inventory file contient des informations sur tous les hôtes qu'Ansible va gérer. Il peut s'agir de dizaines ou de centaines de serveurs enregistrés dans le fichier d'inventaire. Les serveurs peuvent également être divisés en groupes et sous-groupes. Généralement, le fichier d'inventaire est utilisé pour établir des variables qui ne seront valides que pour les hôtes ou groupes spécifiques. C'est une technique utile pour écrire des playbooks et des modèles. Certaines variables peuvent également influencer la façon dont un playbook est exécuté.
Ansible est fourni avec un fichier d'inventaire par défaut. Tout d'abord, ouvrez le fichier dans un éditeur de texte :
|
1 |
sudo vim /etc/ansible/hosts |

Par défaut, le fichier d'inventaire contient divers exemples pour référence. Voici un exemple avec un groupe nommé servers contenant trois serveurs différents. La variable ansible_python_interpreter définit l'interpréteur Python pour tous les hôtes inclus dans l'inventaire. Avec la directive ansible_user, nous pouvons déclarer le compte utilisateur auquel Ansible se connectera :
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Ensuite, sauvegardez le fichier et fermez l'éditeur. Pour vérifier l'inventaire, exécutez la commande suivante :
|
1 |
ansible-inventory --list -y |
La sortie devrait ressembler à ceci :

Étape 3 : Test de connexion
Après avoir configuré le fichier d'inventaire, nous devons tester si Ansible peut se connecter à ces serveurs via SSH. Nous pouvons le faire en pingant simplement tous les nœuds hôtes. Depuis le nœud de contrôle, pinguez tous les nœuds hôtes :
|
1 |
ansible all -m ping |
Le module ping vérifie les éléments suivants :
-
L'accessibilité de l'hôte
-
La validité des identifiants SSH
-
La capacité des hôtes à exécuter des modules Ansible à l'aide de Python
La sortie devrait ressembler à ceci :

Si la réponse d'un nœud particulier est pong, cela signifie que le nœud est prêt à exécuter des commandes et des playbooks Ansible sur le serveur.
Étape 4 : Exécution de commandes ad hoc
Il s'agit d'une étape facultative. Cependant, elle peut être utile pour vérifier la pleine fonctionnalité d'Ansible sur les serveurs distants. Cette section peut également servir d'introduction de base à l'utilisation et à la configuration supplémentaires d'Ansible. Une fois que nous avons confirmé la connectivité aux nœuds, nous pouvons commencer à exécuter des commandes ad hoc et des playbooks. Toute commande que vous exécuteriez normalement sur les serveurs distants peut être exécutée avec Ansible sur tous les serveurs.
Ici, exécutez la commande suivante. Elle vérifiera l'utilisation du disque sur tous les nœuds en même temps :
|
1 |
ansible all -a "df -h" |

Nous pouvons également exécuter divers modules Ansible à l'aide de la fonctionnalité de commande ad hoc, tout comme nous avons exécuté le module ping pour les tests. Par exemple, le module apt fonctionne avec le gestionnaire de paquets APT sur Ubuntu. Il peut gérer les paquets sur un nœud Ubuntu distant. Notez qu'il nécessite l'autorisation root pour effectuer des modifications au niveau du système. Le nœud distant doit autoriser la connexion root ou l'utilisateur doit avoir l'autorisation d'exécuter des tâches administratives.
Dans l'exemple suivant, Ansible installe Nginx sur tous les nœuds hôtes :
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Qu'en est-il de l'exécution de commandes sur un seul serveur uniquement ? Nous utiliserons le surnom du serveur (attribué dans le fichier d'inventaire) pour spécifier le serveur :
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Nous pouvons également spécifier plusieurs serveurs. Déclarez chaque surnom de serveur cible avec deux-points comme délimiteur :
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Réflexions finales
Dans ce guide, nous vous avons présenté une méthode étape par étape pour installer Ansible et configurer un fichier d'inventaire afin d'exécuter des commandes ad hoc depuis le nœud de contrôle Ansible. Une fois configuré, le nœud de contrôle peut exécuter n'importe quelle commande ou playbook que vous souhaitez lancer sur les hôtes.
Bonne informatique !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.