cchurch.virtualenv
VirtualEnv
Configurez un environnement virtuel Python et installez/mettez à jour les exigences. Nécessite Ansible 2.8 ou version ultérieure.
Le support pour les versions d'Ansible < 2.8 a été abandonné à partir de la version 0.7.0.
Exigences
Lorsque become
est utilisé (c'est-à-dire que virtualenv_user
n'est pas égal à ansible_user
ou ansible_ssh_user
), les paquets OS nécessaires pour soutenir become_method
(par exemple, sudo
) doivent être installés avant d'utiliser ce rôle.
Lorsque aucun de ansible_user
, ansible_ssh_user
ou ansible_become_user
n'est root
, les paquets OS nécessaires pour fournir la commande virtualenv
doivent être installés par d'autres moyens avant d'utiliser ce rôle.
Variables du rôle
Les variables suivantes peuvent être définies pour personnaliser ce rôle :
virtualenv_path
: Répertoire cible dans lequel créer/met à jour l'environnement virtuel (nécessaire).virtualenv_user
: Utilisateur à devenir pour créer/met à jour l'environnement virtuel ; par défaut, c'est l'utilisateur actuel (i.e.ansible_user
ouansible_ssh_user
).virtualenv_default_os_packages
: Paquets OS requis pour créer un environnement virtuel. Généralement, il n'est pas nécessaire de changer cette option à moins de fonctionner sur un système utilisant unansible_pkg_mgr
différent ; par défaut c'est{ apt: ['python-dev', 'python-virtualenv'], yum: ['python-devel', 'python-virtualenv'] }
.virtualenv_os_packages
: Paquets OS à installer pour soutenir l'environnement virtuel, indexés paransible_pkg_mgr
; par défaut c'est{}
.virtualenv_easy_install_packages
: Paquets Python à installer globalement en utilisanteasy_install
; par défaut c'est[]
.virtualenv_easy_install_executable
: Exécutable alternatif à utiliser pour les paquetseasy_install
globaux ; par défaut c'estomit
pour utiliser la commandeeasy_install
trouvée dans le chemin.virtualenv_global_packages
: Paquets Python à installer globalement en utilisantpip
; par défaut c'est[]
.virtualenv_pip_executable
: Exécutable alternatif à utiliser pour les paquetspip
globaux ; par défaut c'estomit
pour utiliser la commandepip
trouvée dans le chemin.virtualenv_command
: Exécutable alternatif à utiliser pour créer l'environnement virtuel ; par défaut c'estomit
pour utiliser la commandevirtualenv
trouvée dans le chemin.virtualenv_python
: Version de Python à utiliser pour créer l'environnement virtuel ; par défaut c'estomit
pour utiliser l'interpréteur Python utilisé par Ansible.virtualenv_default_package
: Paquet par défaut à installer lors de la création de l'environnement virtuel ; par défaut c'estpip
.virtualenv_site_packages
: Booléen indiquant si l'environnement virtuel utilisera des paquets globaux ; par défaut c'estnon
.virtualenv_pre_packages
: Paquets Python à installer avecpip
à l'intérieur de l'environnement virtuel avant les fichiers de exigences ; par défaut c'est[]
. Cette option peut également être utilisée pour supprimer des paquets qui ne sont plus nécessaires dans l'environnement virtuel.virtualenv_requirements
: Liste des fichiers de exigences à installer avecpip
à l'intérieur de l'environnement virtuel ; par défaut c'est[]
. Ces chemins doivent déjà être présents sur le système distant.virtualenv_post_packages
: Paquets Python à installer avecpip
à l'intérieur de l'environnement virtuel après les fichiers de exigences ; par défaut c'est[]
. Cette option peut également être utilisée pour supprimer des paquets qui ne sont plus nécessaires dans l'environnement virtuel.virtualenv_recreate
: Booléen indiquant s'il faut supprimer et recréer l'environnement virtuel ; par défaut c'estnon
.
La variable suivante peut être définie pour l'exécution du play ou du rôle (mais pas comme une variable de groupe ou d'hôte dans l'inventaire) :
virtualenv_notify_on_updated
: Nom du gestionnaire à notifier lorsque l'environnement virtuel a été créé ou mis à jour. Par défaut, c'est"virtualenv updated"
; il est généralement recommandé que les gestionnaires personnalisés écoutent"virtualenv updated"
au lieu de changer le nom de notification.
Chaque élément d'une liste de paquets ci-dessus peut être spécifié comme une chaîne avec seulement le nom du paquet ou comme un hash avec des clés name
, state
ou version
, par exemple :
- package1
- name: package2
state: absent
- name: package3
version: 1.2
Les listes de paquets OS sont un hash indexé par le gestionnaire de paquets, par exemple :
apt:
- package1
- name: package2-dev
state: absent
yum:
- package1
- name: package2-devel
state: absent
foo_pkg_mgr:
- foo-package1
Ce rôle peut créer un environnement virtuel en tant qu'un autre utilisateur, spécifié par virtualenv_user
, et utilisera la méthode become
spécifiée pour l'hôte/play/tâche. Les paquets OS et globaux ne seront installés que lorsque ansible_user
, ansible_ssh_user
ou ansible_become_user
est root
. Les combinaisons d'utilisateurs suivantes sont listées ci-dessous avec leurs résultats attendus :
ansible_user=root
: Les paquets OS et globaux seront installés ; l'environnement virtuel sera détenu parroot
.ansible_user=root virtualenv_user=other
: Les paquets OS et globaux seront installés ;become
sera utilisé ; l'environnement virtuel sera détenu parother
.ansible_user=other
: Les paquets OS et globaux ne seront pas installés ; l'environnement virtuel sera détenu parother
.ansible_user=other virtualenv_user=another
: Les paquets OS et globaux ne seront pas installés ;become
sera utilisé ; l'environnement virtuel sera détenu paranother
. Cette combinaison peut échouer siother
ne peut pas deveniranother
. La note Ansible 2.1 ci-dessous peut également s'appliquer dans ce cas.ansible_user=other ansible_become_user=root
: Les paquets OS et globaux seront installés ;become
sera utilisé ; l'environnement virtuel sera détenu parother
.ansible_user=other ansible_become_user=root virtualenv_user=another
: Les paquets OS et globaux seront installés ;become
sera utilisé ; l'environnement virtuel sera détenu paranother
. Vous devrez peut-être définirallow_world_readable_tmpfiles
dans votreansible.cfg
(qui génère toujours un avertissement au lieu d'une erreur) ou utiliser une autre approche pour soutenir un utilisateur non privilégié devenant un autre utilisateur non privilégié.
Exemple de Playbook
L'exemple de playbook suivant installe libjpeg
comme dépendance système, crée ou met à jour un environnement virtuel, installe des paquets spécifiques, installe les exigences, puis supprime un ancien paquet qui n'est plus nécessaire :
- hosts: all
roles:
- name: cchurch.virtualenv
vars:
virtualenv_path: ~/env
virtualenv_os_packages:
apt: [libjpeg-dev]
yum: [libjpeg-devel]
virtualenv_pre_packages:
- name: Django
version: 1.11.26
- Pillow
virtualenv_requirements:
- ~/src/requirements.txt
virtualenv_post_packages:
- name: PIL
state: absent
handlers:
- name: gestionnaire d'environnement virtuel personnalisé
debug:
msg: "l'environnement virtuel dans {{ virtualenv_path }} a été mis à jour."
listen: virtualenv updated
Licence
BSD
Informations sur l'auteur
Chris Church (cchurch)
Configure and update a Python virtualenv.
ansible-galaxy install cchurch.virtualenv