Comment installer et configurer Ansible sur Ubuntu 16.04

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 il a une surcharge beaucoup plus petite pour commencer.

Dans ce guide, nous expliquerons comment installer Ansible sur un serveur Ubuntu 16.04 et expliquerons quelques bases sur l’utilisation du logiciel.

Comment fonctionne Ansible?

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.

Tout ordinateur que vous pouvez administrer via SSH, vous pouvez également administrer via Ansible.

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 au format de sérialisation YAML en raison de leur nature expressive et de leur 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.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

  • Un serveur Ubuntu 16.04 avec un utilisateur sudo non root et des clés SSH, que vous pouvez configurer en suivantthis initial server setup tutorial, y compris l'étape 4

[[step-1 -—- Installing-ansible]] == Étape 1 - Installation d'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. Nous utiliserons un serveur Ubuntu 16.04 pour cette section.

Le meilleur moyen d’obtenir Ansible pour Ubuntu est d’ajouter le fichier PPA (archive de paquetage personnel) du projet à votre système. Nous pouvons ajouter le PPA Ansible en tapant la commande suivante:

sudo apt-add-repository ppa:ansible/ansible

Appuyez surENTER pour accepter l'ajout de PPA.

Ensuite, nous devons actualiser l’index des paquets de notre système afin qu’il soit informé des paquets disponibles dans le PPA. Ensuite, nous pouvons installer le logiciel:

sudo apt-get update
sudo apt-get install ansible

Comme nous l'avons mentionné ci-dessus, Ansible communique principalement avec les ordinateurs clients via SSH. Bien qu'il 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 lié aux conditions préalables pour configurer des clés SSH, si ce n’est déjà fait.

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

[[step-2 -—- configuring-ansible-hosts]] == É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 nano /etc/ansible/hosts

Vous verrez un fichier qui contient de nombreux exemples de configuration, dont aucun ne fonctionnera réellement pour nous puisque ces hôtes sont constitués. Pour commencer, commençons par commenter toutes les lignes de ce fichier en ajoutant un «#» avant chaque ligne.

Nous conserverons ces exemples dans le fichier pour nous aider dans la configuration si nous voulons implémenter des scénarios plus complexes à l'avenir.

Une fois que toutes les lignes sont commentées, nous pouvons commencer à ajouter nos hôtes réels.

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

[group_name]
alias ansible_ssh_host=your_server_ip

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.

Dans notre scénario, nous imaginons donc disposer de trois serveurs que nous allons contrôler avec Ansible. Ces serveurs sont accessibles depuis le serveur Ansible en tapant:

ssh root@your_server_ip

Vous ne devriez pas être invité à entrer un mot de passe si vous l'avez configuré correctement. Nous supposerons que les adresses IP de nos serveurs sont192.0.2.1,192.0.2.2 et192.0.2.3. Nous allons configurer cela afin que nous puissions nous référer à ceux-ci individuellement en tant quehost1,host2 ethost3, ou en tant que groupe en tant queservers.

C'est le bloc que nous devrions ajouter à notre fichier hosts pour accomplir ceci:

[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3

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

Avec nos paramètres actuels, si nous essayions de nous connecter à l'un de ces hôtes avec Ansible, la commande échouerait (en supposant que vous ne fonctionniez pas en tant qu'utilisateur root). En effet, votre clé SSH est intégrée pour l'utilisateur root sur les systèmes distants et Ansible essaiera par défaut de se connecter en tant qu'utilisateur actuel. Une tentative de connexion obtiendra cette erreur:

Erreur de connexion Ansible

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

Sur le serveur Ansible, nous utilisons un utilisateur appelédemo. Ansible essaiera de se connecter à chaque hôte avecssh demo@server. Cela ne fonctionnera pas si l'utilisateur de la démonstration n'est pas sur le système distant.

Nous pouvons créer un fichier qui indique à tous les serveurs du groupe «serveurs» de se connecter à l’aide de l’utilisateur root.

Pour ce faire, nous allons créer un répertoire dans la structure de configuration Ansible appelégroup_vars. Dans ce dossier, nous pouvons créer des fichiers au format YAML pour chaque groupe que nous voulons configurer:

sudo mkdir /etc/ansible/group_vars
sudo nano /etc/ansible/group_vars/servers

Nous pouvons mettre notre configuration ici. Les fichiers YAML commencent par «-», alors assurez-vous de ne pas oublier cette partie.

/etc/ansible/group_vars/servers

---
ansible_ssh_user: root

Enregistrez et fermez ce fichier lorsque vous avez terminé.

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 à/etc/ansible/group_vars/all. Les hôtes individuels peuvent être configurés en créant des fichiers dans un répertoire à/etc/ansible/host_vars.

[[step-3 -—- using-simple-ansible-commands]] == Étape 3 - Utilisation de simples commandes 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

Sortie Ping

host1 | 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.

Le «tout» signifie tous les hôtes. Nous pourrions tout aussi facilement spécifier un groupe:

ansible -m ping servers

Nous pourrions également spécifier un hôte individuel:

ansible -m ping host1

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

ansible -m ping host1:host2

La partie-m ping de la commande est une instruction à Ansible d'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.

Le module ping ne prend pas vraiment d'argument, mais nous pouvons essayer une autre commande pour voir comment cela fonctionne. Nous passons des arguments dans un script en tapant-a.

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

Sortie Shell

host1 | 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. Nous avons vérifié qu'Ansible pouvait communiquer avec chaque hôte et nous avons utilisé la commandeansible 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. Nous avons mis en place de bonnes bases pour travailler avec nos serveurs via Ansible, mais ce sera le cas dans un prochain article, quand nous expliquerons comment utiliser Playbooks pour automatiser la configuration de vos ordinateurs distants.

Related