cchurch.virtualenv

Estado de Construcción Galaxy

VirtualEnv

Configura un entorno virtual de Python e instala/actualiza los requisitos. Se requiere Ansible 2.8 o posterior.

El soporte para versiones de Ansible < 2.8 se eliminó a partir de la versión 0.7.0.

Requisitos

Cuando se utiliza become (es decir, virtualenv_user no es igual a ansible_user o ansible_ssh_user), los paquetes del sistema operativo necesarios para soportar become_method (por ejemplo, sudo) deben estar instalados antes de usar este rol.

Cuando ninguno de ansible_user, ansible_ssh_user o ansible_become_user es root, los paquetes del sistema operativo necesarios para proporcionar el comando virtualenv deben instalarse de alguna otra manera antes de usar este rol.

Variables del Rol

Las siguientes variables pueden definirse para personalizar este rol:

  • virtualenv_path: Directorio objetivo donde crear/actualizar el entorno virtual (requerido).
  • virtualenv_user: Usuario que se convertirá para crear/actualizar el entorno virtual; el valor predeterminado es el usuario actual (es decir, ansible_user o ansible_ssh_user).
  • virtualenv_default_os_packages: Paquetes del sistema operativo necesarios para crear un entorno virtual. Normalmente no hay necesidad de cambiar esta opción a menos que se trabaje en un sistema con un ansible_pkg_mgr diferente; el valor predeterminado es { apt: ['python-dev', 'python-virtualenv'], yum: ['python-devel', 'python-virtualenv'] }.
  • virtualenv_os_packages: Paquetes del sistema operativo a instalar para soportar el entorno virtual, indexados por ansible_pkg_mgr; el valor predeterminado es {}.
  • virtualenv_easy_install_packages: Paquetes de Python a instalar globalmente usando easy_install; el valor predeterminado es [].
  • virtualenv_easy_install_executable: Ejecutable alternativo a usar para paquetes globales de easy_install; el valor predeterminado es omit para usar el comando easy_install encontrado en el path.
  • virtualenv_global_packages: Paquetes de Python a instalar globalmente usando pip; el valor predeterminado es [].
  • virtualenv_pip_executable: Ejecutable alternativo a usar para paquetes globales de pip; el valor predeterminado es omit para usar el comando pip encontrado en el path.
  • virtualenv_command: Ejecutable alternativo a usar para crear el entorno virtual; el valor predeterminado es omit para usar el comando virtualenv encontrado en el path.
  • virtualenv_python: Versión de Python a utilizar para crear el entorno virtual; el valor predeterminado es omit para utilizar el intérprete de Python usado por Ansible.
  • virtualenv_default_package: Paquete predeterminado a instalar al crear el entorno virtual; el valor predeterminado es pip.
  • virtualenv_site_packages: Booleano que indica si el entorno virtual utilizará paquetes globales; el valor predeterminado es no.
  • virtualenv_pre_packages: Paquetes de Python a instalar con pip dentro del entorno virtual antes de los archivos de requisitos; el valor predeterminado es []. Esta opción también se puede usar para remover paquetes que ya no se necesitan en el entorno virtual.
  • virtualenv_requirements: Lista de archivos de requisitos a instalar con pip dentro del entorno virtual; el valor predeterminado es []. Estas rutas deben estar ya presentes en el sistema remoto.
  • virtualenv_post_packages: Paquetes de Python a instalar con pip dentro del entorno virtual después de los archivos de requisitos; el valor predeterminado es []. Esta opción también se puede usar para remover paquetes que ya no se necesitan en el entorno virtual.
  • virtualenv_recreate: Booleano que indica si se debe eliminar y recrear el entorno virtual; el valor predeterminado es no.

La siguiente variable puede definirse para la ejecución del play o del rol (pero no como una variable de grupo o de host en el inventario):

  • virtualenv_notify_on_updated: Nombre del manejador para notificar cuando el entorno virtual fue creado o actualizado. El valor predeterminado es "virtualenv updated"; generalmente se recomienda que los manejadores personalizados escuchen "virtualenv updated" en lugar de cambiar el nombre de la notificación.

Cada ítem en una lista de paquetes anterior puede especificarse como una cadena con solo el nombre del paquete o como un hash con las claves name, state o version, por ejemplo:

- package1
- name: package2
  state: absent
- name: package3
  version: 1.2

Las listas de paquetes del sistema operativo son un hash indexado por el administrador de paquetes, por ejemplo:

apt:
  - package1
  - name: package2-dev
    state: absent
yum:
  - package1
  - name: package2-devel
    state: absent
foo_pkg_mgr:
  - foo-package1

Este rol puede crear un entorno virtual como otro usuario, especificado por virtualenv_user, y usará el become_method especificado para el host/play/tarea. Los paquetes del sistema operativo y globales solo se instalarán cuando ansible_user, ansible_ssh_user o ansible_become_user sea root. A continuación se enumeran los ejemplos de combinaciones de usuarios con sus resultados esperados:

  • ansible_user=root: Se instalarán los paquetes del sistema operativo y globales; el entorno virtual será propiedad de root.
  • ansible_user=root virtualenv_user=otro: Se instalarán los paquetes del sistema operativo y globales; se usará become; el entorno virtual será propiedad de otro.
  • ansible_user=otro: No se instalarán los paquetes del sistema operativo y globales; el entorno virtual será propiedad de otro.
  • ansible_user=otro virtualenv_user=otro: No se instalarán los paquetes del sistema operativo y globales; se usará become; el entorno virtual será propiedad de otro. Esta combinación puede fallar si otro no puede convertirse en otro. También podría aplicarse la nota sobre Ansible 2.1 en este caso.
  • ansible_user=otro ansible_become_user=root: Se instalarán los paquetes del sistema operativo y globales; se usará become; el entorno virtual será propiedad de otro.
  • ansible_user=otro ansible_become_user=root virtualenv_user=otro: Se instalarán los paquetes del sistema operativo y globales; se usará become; el entorno virtual será propiedad de otro. Puede ser necesario definir allow_world_readable_tmpfiles en tu ansible.cfg (que aún generará una advertencia en lugar de un error) o usar otro enfoque para permitir que un usuario no privilegiado se convierta en otro usuario no privilegiado.

Ejemplo de Playbook

El siguiente playbook de ejemplo instala libjpeg como una dependencia del sistema, crea o actualiza un entorno virtual, instala paquetes específicos, instala requisitos y luego elimina un paquete antiguo que ya no se necesita:

- 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: manejador de virtualenv personalizado
      debug:
        msg: "el entorno virtual en {{ virtualenv_path }} fue actualizado."
      listen: virtualenv updated

Licencia

BSD

Información del Autor

Chris Church (cchurch)

Acerca del proyecto

Configure and update a Python virtualenv.

Instalar
ansible-galaxy install cchurch.virtualenv
Licencia
other
Descargas
33.6k
Propietario
Python/Django/Ansible, will code for sweet tea and beer.