cchurch.virtualenv

Statut de la construction Galaxy

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 ou ansible_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 un ansible_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 par ansible_pkg_mgr ; par défaut c'est {}.
  • virtualenv_easy_install_packages: Paquets Python à installer globalement en utilisant easy_install ; par défaut c'est [].
  • virtualenv_easy_install_executable: Exécutable alternatif à utiliser pour les paquets easy_install globaux ; par défaut c'est omit pour utiliser la commande easy_install trouvée dans le chemin.
  • virtualenv_global_packages: Paquets Python à installer globalement en utilisant pip ; par défaut c'est [].
  • virtualenv_pip_executable: Exécutable alternatif à utiliser pour les paquets pip globaux ; par défaut c'est omit pour utiliser la commande pip trouvée dans le chemin.
  • virtualenv_command: Exécutable alternatif à utiliser pour créer l'environnement virtuel ; par défaut c'est omit pour utiliser la commande virtualenv trouvée dans le chemin.
  • virtualenv_python: Version de Python à utiliser pour créer l'environnement virtuel ; par défaut c'est omit 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'est pip.
  • virtualenv_site_packages: Booléen indiquant si l'environnement virtuel utilisera des paquets globaux ; par défaut c'est non.
  • virtualenv_pre_packages: Paquets Python à installer avec pip à 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 avec pip à 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 avec pip à 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'est non.

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 par root.
  • ansible_user=root virtualenv_user=other: Les paquets OS et globaux seront installés ; become sera utilisé ; l'environnement virtuel sera détenu par other.
  • ansible_user=other: Les paquets OS et globaux ne seront pas installés ; l'environnement virtuel sera détenu par other.
  • 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 par another. Cette combinaison peut échouer si other ne peut pas devenir another. 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 par other.
  • 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 par another. Vous devrez peut-être définir allow_world_readable_tmpfiles dans votre ansible.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)

À propos du projet

Configure and update a Python virtualenv.

Installer
ansible-galaxy install cchurch.virtualenv
Licence
other
Téléchargements
33.6k
Propriétaire
Python/Django/Ansible, will code for sweet tea and beer.