Python virtual environnement
Il est possible de proposer “plusieurs environnements virtuels Python”, intégrant des versions de Python et d'Ansible différentes.
Prérequis
Création de l'espace de stockage des venv
Nous créons cet espace dans /opt, et lui donnons les droits de l'utilisateur / groupe AWX
$ sudo -i # mkdir /opt/custom-venv # chmod 0755 /opt/custom-venv # chown awx: /opt/custom-venv
Installation de Python Virtualenv
Nous installons Python 3.7 venv
# aptitude install python3-virtualenv
Nous configurons le proxy web pour pouvoir installer des modules Python via pip
# export https_proxy="http://proxy01.in.grohub.org:3128"
Préparation du venv
Création du virtual environnemment
Le profil est à adapter en fonction de la version de Python 3 installée sur le serveur
# python3 -m virtualenv /opt/custom-venv/ansible210 -p /usr/bin/python3.9
Ajout de l'emplacement dans la conf système
$ curl -k -X PATCH --user 'user:passwd' 'https://awx.in.grohub.org/api/v2/settings/system/' -d '{"CUSTOM_VENV_PATHS": ["/opt/custom-venv/"]}' -H 'Content-Type:application/json'
Note : il est possible de faire aussi l'opération via l'IHM (menu Paramètres > Système).
Installation des modules Python
Installation de psutil
Nous mettons à jour pip
# /opt/custom-venv/ansible210/bin/pip install --upgrade pip
Nous installons le module psutil
# /opt/custom-venv/ansible210/bin/pip install psutil
Installation d'Ansible
Nous installons Ansible
# /opt/custom-venv/ansible210/bin/pip install -U "ansible == 2.10.7"
Pourquoi je spécifie la version d'Ansible à installer ? Parce que sinon c'est la dernière version qui est installée (v4.x) qui est très différente des versions 2.x (nombre de fonctionnalités ont été placées dans des collections, et ne font plus partie du core). Pour connaître les versions voir sur pypi.
Post install
Enfin, nous mettons le bon user sur le répertoire du virtual envs
# chown -R awx: /opt/custom-venv/ansible210
Pour vérifier que le virtual env est pris en compte dans la configuration d'AWX
curl -k --user 'user:passwd' 'https://awx.in.grohub.org/api/v2/config/'