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.