Aller au contenu

Installer Ansible sur le Control Host

Ansible

Objectif de cet atelier pratique

  • Aborder en détail les différentes manières d'installer Ansible sur les distributions Linux les plus courantes

Control Host vs. Target Hosts

Imaginons le réseau informatique d'un petit lycée local :

  • 1 serveur proxy filtrant

  • 1 serveur de fichiers

  • 1 serveur de sauvegardes

  • 4 postes de travail au secrétariat

  • 8 postes de travail dans la salle info

  • 8 ordinateurs portables

Vous serez peut-être surpris d'apprendre que la collection d'outils Ansible ne sera installée sur aucune de ces machines, du moins dans une configuration classique. En effet, l'administrateur système du lycée utilisera Ansible sur son ordinateur portable sous Linux pour gérer la configuration de tout ce parc informatique.

  • Dans le jargon d'Ansible, cette machine fait office de Control Host.

  • Les machines de l'école (serveurs, postes de travail, portables) sont les Target Hosts.

  • Ansible est installé sur le seul Control Host (le portable de l'administrateur système).

  • Les Target Hosts ont besoin uniquement de SSH et de Python, et c'est tout.

  • Notez bien l'absence de tout agent sur les Target Hosts.

Théorie vs. pratique

La réalité du terrain est un peu plus complexe, mais je vais éviter de vous embrouiller dès le départ.

Installer Ansible sur le Control Host

En règle générale, Ansible est fourni par les dépôts de paquets des principales distributions Linux. Red Hat Enterprise Linux et son clone Rocky Linux constituent des exceptions peu glorieuses. Dans ce cas, il faudra passer par le dépôt tiers EPEL.

Placez-vous dans le répertoire du premier atelier pratique :

$ cd ~/formation-ansible/atelier-01

Rocky Linux

Démarrez la VM Rocky Linux :

$ vagrant up rocky

Connectez-vous à cette VM :

$ vagrant ssh rocky

Dans la configuration par défaut de cette distribution, seuls les dépôts officiels sont activés :

$ dnf repolist
repo id           repo name
appstream         Rocky Linux 9 - AppStream
baseos            Rocky Linux 9 - BaseOS
extras            Rocky Linux 9 - Extras

L'ajout du dépôt tiers EPEL peut s'effectuer par l'installation du paquet correspondant :

$ sudo dnf install -y epel-release

L'utilisation de ce dépôt nécessite l'activation du dépôt officiel Code Ready Builder (CRB) :

$ sudo crb enable
Enabling CRB repo
CRB repo is enabled and named: crb

Ansible est désormais disponible et peut être installé :

$ sudo dnf install -y ansible

Vérifiez si l'installation s'est bien déroulée :

$ ansible --version
ansible [core 2.14.17]
  config file = /etc/ansible/ansible.cfg
  ...

Quittez la VM :

$ exit

Supprimez la VM :

$ vagrant destroy -f rocky

Debian

Démarrez la VM Debian :

$ vagrant up debian

Connectez-vous à cette VM :

$ vagrant ssh debian

Mettez à jour les informations sur les paquets :

$ sudo apt update

Ansible est fourni par les dépôts officiels de la distribution :

$ apt-cache search --names-only ansible
ansible - Configuration management, deployment, and task execution system
ansible-core - Configuration management, deployment, and task execution system
ansible-lint - lint tool for Ansible playbooks
...

Installez Ansible :

$ sudo apt install -y ansible

Vérifiez si l'installation s'est bien déroulée :

$ ansible --version
ansible [core 2.14.18]
  config file = None
  ...

Quittez la VM :

$ exit

Supprimez la VM :

$ vagrant destroy -f debian

OpenSUSE Leap

Démarrez la VM OpenSUSE :

$ vagrant up suse

Connectez-vous à cette VM :

$ vagrant ssh suse

Mettez à jour les informations sur les paquets :

$ sudo zypper refresh

Ansible est fourni par les dépôts officiels de la distribution :

$ zypper search ansible
...
S | Name           | Summary                                    | Type
--+----------------+--------------------------------------------+--------------
  | ansible        | SSH-based configuration management system  | paquet
  | ansible        | SSH-based configuration management system  | paquet source
  | ansible-cmdb   | Ansible Configuration Management Database  | paquet
  | ansible-doc    | Documentation for Ansible                  | paquet
  | ansible-runner | Package for interfacing with Ansible       | paquet
  | ansible-test   | Tool for testing ansible plugin and module | paquet

Installez Ansible :

$ sudo zypper install -y ansible

Vérifiez si l'installation s'est bien déroulée :

$ ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  ...

Quittez la VM :

$ exit

Supprimez la VM :

$ vagrant destroy -f suse

Installer Ansible avec PIP et Virtualenv

Il peut arriver que vous soyez embêté pour installer Ansible :

  • Votre distribution Linux ne propose pas de paquet Ansible.

  • Elle en propose un, mais il est obsolète.

  • Les dépôts de paquets tiers ne sont pas une option.

Dans ce cas, vous pouvez toujours installer Ansible par le biais du gestionnaire de paquets Python PIP (Package Installer for Python). L'approche saine consiste ici à utiliser Virtualenv pour éviter de spammer votre système et créer des conflits avec les paquets Python inclus dans la distribution.

Démarrez la VM Debian :

$ vagrant up debian

Connectez-vous à cette VM :

$ vagrant ssh debian

Mettez à jour les informations sur les paquets :

$ sudo apt update

Installez PIP et Virtualenv :

$ sudo apt install -y python3-pip python3-venv

Initialisez l'environnement Virtualenv :

$ python3 -m venv ~/.venv/ansible

Nommer l'environnement virtuel

Le nom du répertoire est une convention et peut être choisi librement. Tant qu'à faire, j'ai opté pour quelque chose de parlant dans le contexte.

Lancez Virtualenv :

$ source ~/.venv/ansible/bin/activate
(ansible) $

Mettez à jour PIP pour cette première utilisation :

(ansible) $ pip install --upgrade pip

Installez Ansible :

(ansible) $ pip install ansible

Vérifiez si l'installation s'est bien déroulée :

(ansible) $ ansible --version
ansible [core 2.18.1]
  config file = None
  ...

Quittez l'environnement Virtualenv :

(ansible) $ deactivate

Quittez la VM :

$ exit

Supprimez la VM :

$ vagrant destroy -f debian

À vous de jouer !

Challenge n° 1

  • Démarrez la VM ubuntu depuis le répertoire atelier-01.

  • Connectez-vous à cette VM.

  • Rafraîchissez les informations sur les paquets.

  • Recherchez le paquet ansible avec les options qui vont bien.

  • Installez le paquet officiel fourni par la distribution.

  • Vérifiez si l'installation s'est bien déroulée.

  • Notez la version d'Ansible.

  • Déconnectez-vous et supprimez la VM.

Challenge n° 2

Répétez le challenge précédent en configurant un dépôt PPA (Personal Package Archive) pour Ansible :

$ sudo apt-add-repository ppa:ansible/ansible

Notez la version fournie par ce dépôt tiers et comparez avec la version officielle du challenge précédent.

Challenge n° 3

Lancez une VM Rocky Linux et installez Ansible en utilisant PIP et Virtualenv.

Rocky Linux et Virtualenv

Notez bien que contrairement à Debian, le paquet python3-venv n'est pas nécessaire ici, étant donné que Virtualenv fait partie des modules standard de Python dans cette distribution.