Gérer les dépendances#

Objectif

Ajouter des dépendances Python et Ansible à un projet.

Prérequis#

Échauffement#

Pour éviter des problèmes communs de construction de package Pip, commencez par lancer :

> pip3 install -U pip wheel setuptools --no-cache-dir 

Création d’un fichier de requirements Pip#

Créez un fichier requirements.txt avec notre version préférée d’Ansible pour le projet.

1#
2# requirements.txt
3#
4ansible-core==2.14.2

Une fois ceci fait, nous pouvons rapatrier les dépendances listées avec la commande :

> pip3 install -U --no-cache-dir -r requirements.txt 

Création d’un fichier de requirements Ansible Galaxy#

Créez un fichier requirements.yml avec un rôle et une collection tirés de la plateforme centrale Ansible Galaxy :

 1#
 2# requirements.yml
 3#
 4---
 5# Install roles from Ansible Galaxy.
 6roles:
 7  - name: geerlingguy.java
 8    version: 1.9.6
 9
10# Install collections from Ansible Galaxy.
11collections:
12  - name: community.general
13    version: 4.5.0
14  - name: ansible.posix

Une fois ceci fait, nous pouvons rapatrier les dépendances listées avec la commande :

> ansible-galaxy install -fr requirements.yml

Vous pouvez observer que la collection et le rôle sont installés dans un sous-répertoire de .direnv.

Création d’un Makefile basique pour simplifier la mise à jour des dépendances#

Comme nous sommes des gens d’automatisation, la complexité des commandes précédentes sera mieux placée dans un fichier Makefile :

 1.PHONY: prepare
 2prepare-desc = "Prepare local workspace"
 3prepare:
 4	@echo "==> $(env-desc)"
 5
 6	@[ -d "${PWD}/.direnv" ] || (echo "Venv not found: ${PWD}/.direnv" && exit 1)
 7	@pip3 install -U pip wheel setuptools --no-cache-dir && \
 8	echo "[  OK  ] PIP + WHEEL + SETUPTOOLS" || \
 9	echo "[FAILED] PIP + WHEEL + SETUPTOOLS"
10
11	@pip3 install -U --no-cache-dir -r "${PWD}/requirements.txt" && \
12	echo "[  OK  ] PIP REQUIREMENTS" || \
13	echo "[FAILED] PIP REQUIREMENTS"
14	
15	@ansible-galaxy install -fr "${PWD}/requirements.yml" && \
16	echo "[  OK  ] ANSIBLE-GALAXY REQUIREMENTS" || \
17	echo "[FAILED] ANSIBLE-GALAXY REQUIREMENTS"

Vous pouvez relancer la procédure complète de rapatriement des dépendances avec la commande :

> make prepare

Ligne d’arrivée#

Félicitations, vous avez maintenant l’expérience de la gestion des dépendances Python et Ansible, ce qui vous servira à coup sûr dans vos futurs projets. Vous avez également complété les exercices qui vous permettent de poser des bases saines pour tout projet Ansible.