Comment installer Ansible sur Ubuntu

Ansible est un outil open source qui vous permet de provisionner, configurer, gérer et déployer des applications. Il aide à exécuter l’infrastructure en tant que code, essentiellement un outil d’automatisation. Ansible fonctionne sur les systèmes Linux, de type Unix et Windows. C’est un outil gratuit écrit en Python.

En utilisant Ansible, l’automatisation et le contrôle d’un grand nombre de serveurs sont simplifiés. Cela a rendu le système admin ou un ingénieur DevOps gère tous les serveurs à partir d’un seul nœud de contrôle.

Contrairement à Chef et Puppet, Ansible n’a besoin d’aucun logiciel spécial pour être installé sur les nœuds. Ansible utilise SSH pour exécuter des tâches et un fichier YAML pour définir les informations de mise à disposition.

Ce tutoriel vous montrera comment installer ansible sur Ubuntu 20.04 et apprendre les bases.

Nœud de contrôle et hôtes Ansible

Les nœuds de contrôle Ansible sont un ordinateur sur lequel Ansible est installé et contrôle un ou plusieurs hôtes distants. Les nœuds de contrôle communiquent avec les hôtes ou les nœuds via SSH à l’aide d’outils de ligne de commande ou de scripts de configuration (playbooks).

Les hôtes ou les nœuds gérés sont des périphériques réseau ou des serveurs gérés par ansible. Ansible simplifie l’opération en utilisant SSH, de sorte que les machines hôtes ne nécessitent que l’exécution du service SSH et l’ouverture du port.

Dans la section suivante, nous apprenons à configurer un nœud de contrôle et à récupérer les informations des hôtes.

Exigences

  • Un nœud de contrôle avec une paire de clés ssh
  • Un ou plusieurs hôtes – serveurs distants avec clé publique ssh ajoutée

Pour la démonstration, nous utiliserons une machine Ubuntu 20.04 à ces deux fins.

Installer Ansible sur Ubuntu

Les composants Ansible sont installés sur le nœud de contrôle. La commande suivante pour installer Ansible sur Ubuntu.

Tout d’abord, obtenez une liste mise à jour de tous les packages à partir de leurs sources :

$ sudo apt update

Maintenant, pour installer ansible, tapez :

$ sudo apt install ansible

Configurer le nœud de contrôle et les hôtes

Il est recommandé de créer un utilisateur non root avec sudo privilèges sur le nœud de contrôle Ansible. Configurez ensuite une paire de clés SSH pour cet utilisateur.

Créez un nouvel utilisateur non root :

$ sudo adduser controller

Ensuite, vous devez attribuer sudo permission a controller utilisateur:

$ sudo usermod -aG sudo controller

Maintenant, vous pouvez vous connecter au controller session utilisateur et générer une clé SSH :

$ su - controller
$ ssh-keygen

Sortir:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/controller/.ssh/id_rsa):
Created directory '/home/controller/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/controller/.ssh/id_rsa
Your public key has been saved in /home/controller/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:R033P2ygbVuZv5jJdRbIZtaPG8Af7ZFL2pE9vbzQgP0 controller@linoxide
The key's randomart image is:
+---[RSA 3072]----+
| . . |
| o . . |
| . .. .|
| . .* =.O|
| S .oo@.^=|
| . =o%+@|
| ++E*|
| . *++|
| =.o |
+----[SHA256]-----+

Nous devons activer le SSH sans mot de passe depuis Ansible Control Node vers chaque hôte. Fondamentalement, nous devons copier la clé publique du nœud de contrôle dans le fichier allowed_keys sur chaque hôte.

Dans ce tutoriel, nous utiliserons deux hôtes ansibles : host1@ip_address_1 et host2@ip_address_2.

Sur le nœud de contrôle Ansible, exécutez la commande suivante pour copier la clé publique sur les serveurs hôtes :

$ ssh-copy-id host1@ip_address_1
$ ssh-copy-id host2@ip_address_2

Mise en place du fichier d’inventaire

Ansible utilise le inventory file pour stocker des informations sur les serveurs distants (hôtes) gérés par Ansible Control Node. Les hôtes peuvent être organisés en groupes ou sous-groupes.

Le fichier d’inventaire ansible par défaut est situé à /etc/ansible/hosts, mais vous pouvez créer le fichier d’inventaire n’importe où et vous devez indiquer le chemin d’accès à votre fichier d’inventaire à l’aide de la -i paramètre lors de l’exécution des commandes Ansible.

Maintenant, vous pouvez ouvrir le fichier d’inventaire avec votre éditeur préféré et le modifier comme suit :

$ sudo vim /etc/ansible/hosts

Notez que remplacez les adresses IP ci-dessous par les adresses IP de vos hôtes Ansible.

[servers]
server1 ansible_host=178.0.113.111
server2 ansible_host=178.0.113.112

Vérifiez l’inventaire par la commande suivante :

$ ansible-inventory --list -y

Sortir:

all:
children:
servers:
hosts:
server1:
ansible_host: 178.0.113.111
server2:
ansible_host: 178.0.113.112
ungrouped: {}

Tester la connexion

Il est temps de vérifier si Ansible peut se connecter aux serveurs distants. Vous pouvez utiliser le -u argument pour spécifier l’utilisateur distant sur les serveurs. Pour example:

$ ansible all -m ping -u root

La commande utilise ansible ping module pour vérifier la connectivité du nœud de contrôle Ansible aux serveurs distants.

server1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}

Lorsque vous recevez un pong réponse des serveurs distants, vous pouvez exécuter des commandes et des playbooks ansible sur ces serveurs.

Exécuter un Ad-hoc commande sur les hôtes ansible distants, pour example:

$ ansible all -a "df -h" -u root

Sortir:

server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 2.3M 744M 1% /run
/dev/sda1 20G 4.7G 15G 25% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop1 130M 130M 0 100% /snap/google-cloud-sdk/161
/dev/loop0 32M 32M 0 100% /snap/snapd/10238
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 1.7M 745M 1% /run
/dev/sda1 20G 4.2G 16G 22% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/1932
/dev/loop1 32M 32M 0 100% /snap/snapd/10492
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001

Conclusion

Ansible appartient désormais à Redhat et apporte de nombreuses améliorations au code. Ansible Tower est la version entreprise d’Ansible où vous pouvez gérer les serveurs à partir d’une interface utilisateur Web moderne.

Dans ce tutoriel, vous avez appris à installer ansible sur Ubuntu et la configuration de base à travers des exemples. Merci d’avoir lu et s’il vous plaît laissez votre suggestion dans la section commentaire ci-dessous.