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 permis à l'administrateur système ou à l'ingénieur DevOps de gérer 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 les tâches et le fichier YAML pour définir les informations de provisionnement.
Ce tutoriel vous montrera comment installer ansible sur Ubuntu 20.04 et apprendre les bases.
Nœud de contrôle Ansible et hôtes
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 nécessitent uniquement 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 des informations auprès 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 aux 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 des privilèges sudo 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
autorisation au 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
Sortie :
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 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 authorized_keys sur chaque hôte.
Dans ce tutoriel, nous utiliserons deux hôtes ansible :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
Configuration 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 se trouve dans /etc/ansible/hosts
, mais vous pouvez créer le fichier d'inventaire à n'importe quel endroit et vous devez indiquer le chemin d'accès à votre fichier d'inventaire en utilisant le -i
paramètre lors de l'exécution de 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 à l'aide de la commande suivante :
$ ansible-inventory --list -y
Sortie :
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. Par exemple :
$ ansible all -m ping -u root
La commande utilise ansible ping
module pour vérifier la connectivité entre Ansible Control Node et les 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 depuis les serveurs distants, vous pouvez exécuter des commandes ansibles et des playbooks sur ces serveurs.
Exécution d'un Ad-hoc
commande sur des hôtes ansibles distants, par exemple :
$ ansible all -a "df -h" -u root
Sortie :
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 maintenant à Redhat et apporte de nombreuses améliorations au code. Ansible Tower est la version d'entreprise d'Ansible où vous pouvez gérer des 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 des commentaires ci-dessous.