Comment installer et configurer Ansible sur CentOS 7

introduction

Les systèmes de gestion de la configuration sont conçus pour faciliter le contrôle d’un grand nombre de serveurs aux administrateurs et aux équipes d’exploitation. Ils vous permettent de contrôler de nombreux systèmes différents de manière automatisée à partir d’un emplacement central. Bien qu’il existe de nombreux systèmes de gestion de la configuration courants disponibles pour les systèmes Linux, tels que Chef et Puppet, ils sont souvent plus complexes que beaucoup de gens le souhaitent ou le souhaitent. * Ansible * est une excellente alternative à ces options car ses frais généraux sont beaucoup moins importants.

Ansible fonctionne en configurant les ordinateurs clients à partir d’un ordinateur avec des composants Ansible installés et configurés. Il communique sur des canaux SSH normaux afin de récupérer des informations à partir de machines distantes, d’émettre des commandes et de copier des fichiers. C’est pourquoi un système Ansible ne nécessite l’installation d’aucun logiciel supplémentaire sur les ordinateurs clients. C’est une des façons qu’Ansible simplifie l’administration des serveurs. Tout serveur disposant d’un port SSH exposé peut être placé sous l’ombrage de la configuration d’Ansible, quel que soit son stade de vie.

Ansible adopte une approche modulaire, facilitant l’utilisation des fonctionnalités du système principal pour traiter des scénarios spécifiques. Les modules peuvent être écrits dans n’importe quelle langue et communiquer en JSON standard. Les fichiers de configuration sont principalement écrits dans le format de sérialisation de données YAML en raison de son caractère expressif et de sa similitude avec les langages de balisage courants. Ansible peut interagir avec les clients via des outils de ligne de commande ou ses scripts de configuration appelés Playbooks.

Dans ce guide, vous installerez Ansible sur un serveur CentOS 7 et apprendrez les bases de l’utilisation du logiciel.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de Ansible

Pour commencer à explorer Ansible en tant que moyen de gestion de nos divers serveurs, nous devons installer le logiciel Ansible sur au moins une machine.

Pour obtenir Ansible pour CentOS 7, assurez-vous d’abord que le référentiel CentOS 7 EPEL est installé:

sudo yum install epel-release

Une fois le référentiel installé, installez Ansible avec + yum +:

sudo yum install ansible

Nous disposons maintenant de tous les logiciels nécessaires pour administrer nos serveurs via Ansible.

Étape 2 - Configuration des hôtes Ansible

Ansible conserve la trace de tous les serveurs connus via un fichier "hôtes". Nous devons d’abord configurer ce fichier avant de pouvoir commencer à communiquer avec nos autres ordinateurs.

Ouvrez le fichier avec les privilèges root comme ceci:

sudo vi /etc/ansible/hosts

Vous verrez un fichier contenant beaucoup d’exemples de configurations commentés. Conservez ces exemples dans le fichier pour vous aider à comprendre la configuration d’Ansible si vous souhaitez implémenter des scénarios plus complexes à l’avenir.

Le fichier hosts est assez flexible et peut être configuré de différentes manières. La syntaxe que nous allons utiliser ressemble à ceci:

Exemple de fichier hosts

[]
alias ansible_ssh_host=

+ Nom_groupe + est une balise organisationnelle qui vous permet de faire référence à tous les serveurs répertoriés avec un mot. L’alias est juste un nom pour faire référence à ce serveur.

Imaginez que vous souhaitiez contrôler trois serveurs avec Ansible. Ansible communique avec les ordinateurs clients via SSH. Ainsi, chaque serveur que vous souhaitez gérer doit être accessible à partir du serveur Ansible en tapant:

ssh root@

Vous ne devriez pas être invité à entrer un mot de passe. Bien qu’Ansible soit capable de gérer l’authentification SSH basée sur un mot de passe, les clés SSH aident à simplifier les choses. Vous pouvez suivre le didacticiel Comment utiliser les clés SSH avec les droplets DigitalOcean pour configurer des clés SSH sur chaque hôte si vous ne l’avez pas déjà fait.

Nous supposerons que les adresses IP de nos serveurs sont + 192.0.2.1 +, + 192.0.2.2 + et + 192.0.2.3 +. Configurons-le de manière à pouvoir y faire référence individuellement en tant que + host1 +, '+ host2 + et + host3 + , ou en tant que groupe en tant que + serveurs + `. Pour le configurer, vous ajouteriez ce bloc à votre fichier hosts:

/ etc / ansible / hosts

[servers]
host1 ansible_ssh_host=
host2 ansible_ssh_host=
host3 ansible_ssh_host=

Les hôtes peuvent être dans plusieurs groupes et les groupes peuvent configurer des paramètres pour tous leurs membres. Essayons ceci maintenant.

Ansible essaiera par défaut de se connecter aux hôtes distants en utilisant votre nom d’utilisateur actuel. Si cet utilisateur n’existe pas sur le système distant, une tentative de connexion entraînera l’erreur suivante:

Ansible connection errorhost1 | UNREACHABLE! => {
   "changed": false,
   "msg": "Failed to connect to the host via ssh.",
   "unreachable": true
}

Disons spécifiquement à Ansible qu’il devrait se connecter aux serveurs du groupe «serveurs» avec l’utilisateur * sammy *. Créez un répertoire dans la structure de configuration Ansible appelé + group_vars +.

sudo mkdir /etc/ansible/group_vars

Dans ce dossier, nous pouvons créer des fichiers au format YAML pour chaque groupe que nous voulons configurer:

sudo nano /etc/ansible/group_vars/servers

Ajoutez ce code au fichier:

/ etc / ansible / group_vars / servers

---
ansible_ssh_user:

Les fichiers YAML commencent par «-», assurez-vous de ne pas oublier cette partie.

Enregistrez et fermez ce fichier lorsque vous avez terminé. Maintenant, Ansible utilisera toujours l’utilisateur * sammy * pour le groupe + servers +, quel que soit l’utilisateur actuel.

Si vous souhaitez spécifier des détails de configuration pour chaque serveur, quelle que soit l’association de groupe, vous pouvez placer ces détails dans un fichier sous + / etc / ansible / group_vars / all +. Des hôtes individuels peuvent être configurés en créant des fichiers dans un répertoire `` / / etc / ansible / host_vars + `.

Étape 3 - Utiliser des commandes simples Ansible

Maintenant que nos hôtes sont configurés et que suffisamment de détails de configuration nous permettent de nous connecter avec succès à nos hôtes, nous pouvons essayer notre toute première commande.

Envoyez une requête ping à tous les serveurs que vous avez configurés en tapant:

ansible -m ping all

Ansible retournera la sortie comme ceci:

Outputhost1 | SUCCESS => {
   "changed": false,
   "ping": "pong"
}

host3 | SUCCESS => {
   "changed": false,
   "ping": "pong"
}

host2 | SUCCESS => {
   "changed": false,
   "ping": "pong"
}

Il s’agit d’un test de base permettant de s’assurer que Ansible est connecté à tous ses hôtes.

La partie + -m ping + de la commande est une instruction à Ansible pour utiliser le module "ping". Ce sont essentiellement des commandes que vous pouvez exécuter sur vos hôtes distants. Le module ping fonctionne de nombreuses manières, comme l’utilitaire ping normal sous Linux, mais il vérifie plutôt la connectivité Ansible.

La partie + all + signifie «tous les hôtes». Vous pouvez également spécifier un groupe:

ansible -m ping servers

Vous pouvez également spécifier un hôte individuel:

ansible -m ping host1

Vous pouvez spécifier plusieurs hôtes en les séparant par des deux points:

ansible -m ping host1:host2

Le module + shell nous permet d’envoyer une commande de terminal à l’hôte distant et de récupérer les résultats. Par exemple, pour connaître l’utilisation de la mémoire sur notre machine hôte1, nous pourrions utiliser:

ansible -m shell -a 'free -m' host1

Comme vous pouvez le constater, vous passez des arguments dans un script en utilisant le commutateur + -a +. Voici à quoi pourrait ressembler la sortie:

Outputhost1 | SUCCESS | rc=0 >>
            total       used       free     shared    buffers     cached
Mem:          3954        227       3726          0         14         93
-/+ buffers/cache:        119       3834
Swap:            0          0          0

Conclusion

À ce stade, votre serveur Ansible doit être configuré pour communiquer avec les serveurs que vous souhaitez contrôler. Vous pouvez vérifier qu’Ansible peut communiquer avec chaque hôte sur lequel vous savez utiliser la commande + ansible + pour exécuter des tâches simples à distance.

Bien que cela soit utile, nous n’avons pas couvert la fonctionnalité la plus puissante de Ansible dans cet article: les livres de lecture. Vous avez configuré une base de travail idéale pour travailler avec vos serveurs via Ansible. Votre prochaine étape consiste donc à apprendre à utiliser Playbooks pour faire le gros du travail à votre place. Pour en savoir plus, consultez Configuration Management 101: Rédiger des livres de lecture et https://www.digitalocean.com/. communauté / tutoriels / comment-créer-ansible-playbooks-à-automatiser-la-configuration-du-système-sur-ubuntu [Comment créer des playbooks pour automatiser la configuration du système sur Ubuntu]