Il est possible de proposer “plusieurs environnements virtuels Python”, intégrant des versions de Python et d'Ansible différentes.
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
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"
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
$ 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).
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
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.
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/'