Installer Ansible#

Objectif

Installation d’Ansible sur un poste de travail.

Note

Cet exercice a été validé sur un système Debian Bullseye. Il se peut que vous ayez besoin d’adapter quelques éléments pour pouvoir reproduire sur d’autres sytèmes (les contributions sont les bienvenues).

Prérequis#

Pour que tout se passe comme prévu, vous aurez besoin que soient installés sur votre machine de travail :

  • Python > 3.7.3 et les modules venv et pip ;

  • direnv.

Il y a trop de configurations de systèmes pour pouvoir couvrir tous les cas ici. Notre cas de référence sur Debian Bullseye n’est pas tiré de nulle part : cette configuration permet à de nombreux professionnels de gagner leur vie en étant productif au quotidien (Debian sur laptop, aujourd’hui ce n’est pas un problème).

Pour notre cas de référence donc, atteindre ces prérequis passe par le lancement des commandes suivantes :

$ sudo apt update 
$ sudo apt install direnv python3 python3-pip python3-venv -y
$ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
$ source ~/.bashrc

Nota Bene

  • Si vous êtes sous Ubuntu, les commandes sont valides également.

  • Si vous n’utilisez pas Bash comme shell par défaut, reportez vous à la doc de direnv pour l’intégrer à votre shell préféré.

  • Si vous êtes sous Windows, un WSL bien configuré doit vous permettre de faire ça (n’hésitez pas à contribuer un guide en PR sur le projet).

Création du virtualenv#

Pour respecter l’isolation, nous allons créer un virtualenv global à tous nos futurs projets. Chaque projet pourra ensuite venir surcharger ce virtualenv avec le sien propre pour isoler ses dépendances.

  • Création de notre espace de travail Ansible

$ mkdir ~/ansible-workspaces
$ cd ~/ansible-workspaces
  • Création d’un fichier .envrc pour indiquer à direnv de créer un virtualenv

# ~/ansible-workspaces/.envrc
layout python3
  • Référencement du .envrc auprès de direnv

$ direnv allow .

Activation automatique du virtualenv

Si vous lancez la commande which python3 depuis le répertoire ~/ansible-workspaces ou en dehors, vous n’obtenez pas le même chemin. Direnv active automatiquement le virtualenv qu’il crée lorsque votre shell se trouve dans un sous-répertoire comparé à l’emplacement du fichier .envrc.

Installation d’Ansible#

Maintenant que notre virtualenv est prêt, une simple commande nous permet d’y installer Ansible :

$ pip install ansible-core 

Installation locale

Si vous lancez la commande which ansible depuis le répertoire ~/ansible-workspaces, vous pourrez observer que le binaire qui répond est situé dans le virtualenv créé juste avant.

Ligne d’arrivée#

Félicitations, vous venez d’installer Ansible dans un virtualenv. Si vous lancez la commande which ansible depuis le répertoire ~/ansible-workspaces, vous pourrez observer que le binaire qui répond est situé dans le virtualenv créé juste avant.

$ which ansible
/home/user/ansible-workspaces/.direnv/python-3.9.2/bin/ansible

$ ansible --version
ansible [core 2.12.3]
  config file = None
  configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/user/ansible-workspaces/.direnv/python-3.9.2/lib/python3.9/site-packages/ansible
  ansible collection location = /home/user/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/user/ansible-workspaces/.direnv/python-3.9.2/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
  jinja version = 3.1.0
  libyaml = True