====== Python virtual environnement ======
{{tag>mop "gestion système" AWX python venv "virtual env"}}
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 [[https://pypi.org/project/ansible/#history|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/'
===== Liens =====
* [[https://www.redhat.com/sysadmin/virtualenvs-ansible-tower|5 tips for configuring virtualenvs with Ansible Tower]]
* [[https://docs.ansible.com/ansible-tower/latest/html/upgrade-migration-guide/virtualenv.html|Using virtualenv with Ansible Tower]]