cchurch.virtualenv

Build-Status Galaxy

VirtualEnv

Konfigurieren Sie eine Python-Virtualenv und installieren/aktualisieren Sie die Anforderungen. Erfordert Ansible 2.8 oder höher.

Die Unterstützung für Ansible-Versionen < 2.8 wurde ab Version 0.7.0 eingestellt.

Anforderungen

Wenn become verwendet wird (d.h. virtualenv_user ist nicht gleich ansible_user oder ansible_ssh_user), müssen die erforderlichen Betriebssystempakete zur Unterstützung von become_method (z.B. sudo) installiert werden, bevor diese Rolle verwendet wird.

Wenn keiner von ansible_user, ansible_ssh_user oder ansible_become_user root ist, müssen die erforderlichen Betriebssystempakete, um den Befehl virtualenv bereitzustellen, auf andere Weise installiert werden, bevor diese Rolle verwendet wird.

Variablen der Rolle

Die folgenden Variablen können definiert werden, um diese Rolle anzupassen:

  • virtualenv_path: Zielverzeichnis, in dem die Virtualenv erstellt/aktualisiert werden soll (erforderlich).
  • virtualenv_user: Benutzer, der zum Erstellen/Aktualisieren der Virtualenv verwendet werden soll; Standard ist der aktuelle Benutzer (d.h. ansible_user oder ansible_ssh_user).
  • virtualenv_default_os_packages: Betriebssystempakete, die erforderlich sind, um eine Virtualenv zu erstellen. Es ist normalerweise nicht nötig, diese Option zu ändern, es sei denn, Sie verwenden ein System mit einem anderen ansible_pkg_mgr; Standard ist { apt: ['python-dev', 'python-virtualenv'], yum: ['python-devel', 'python-virtualenv'] }.
  • virtualenv_os_packages: Betriebssystempakete, die installiert werden müssen, um die Virtualenv zu unterstützen, indexiert nach ansible_pkg_mgr; Standard ist {}.
  • virtualenv_easy_install_packages: Python-Pakete, die global mit easy_install installiert werden sollen; Standard ist [].
  • virtualenv_easy_install_executable: Alternativer Befehl für globale easy_install-Pakete; Standard ist omit, um den Befehl easy_install im Pfad zu verwenden.
  • virtualenv_global_packages: Python-Pakete, die global mit pip installiert werden sollen; Standard ist [].
  • virtualenv_pip_executable: Alternativer Befehl für globale pip-Pakete; Standard ist omit, um den Befehl pip im Pfad zu verwenden.
  • virtualenv_command: Alternativer Befehl zum Erstellen der Virtualenv; Standard ist omit, um den Befehl virtualenv im Pfad zu verwenden.
  • virtualenv_python: Python-Version, die zum Erstellen der Virtualenv verwendet werden soll; Standard ist omit, um den von Ansible verwendeten Python-Interpreter zu verwenden.
  • virtualenv_default_package: Standardpaket, das beim Erstellen der Virtualenv installiert werden soll; Standard ist pip.
  • virtualenv_site_packages: Boolean, der angibt, ob die Virtualenv globale Site-Pakete verwenden wird; Standard ist no.
  • virtualenv_pre_packages: Python-Pakete, die innerhalb der Virtualenv vor den Anforderungsdateien installiert werden sollen; Standard ist []. Diese Option kann auch verwendet werden, um Pakete zu entfernen, die in der Virtualenv nicht mehr benötigt werden.
  • virtualenv_requirements: Liste der Anforderungsdateien, die innerhalb der Virtualenv installiert werden sollen; Standard ist []. Diese Pfade müssen bereits auf dem entfernten System vorhanden sein.
  • virtualenv_post_packages: Python-Pakete, die innerhalb der Virtualenv nach den Anforderungsdateien installiert werden sollen; Standard ist []. Diese Option kann auch verwendet werden, um Pakete zu entfernen, die in der Virtualenv nicht mehr benötigt werden.
  • virtualenv_recreate: Boolean, der angibt, ob die Virtualenv gelöscht und neu erstellt werden soll; Standard ist no.

Die folgende Variable kann für den Play oder den Rollaufruf definiert werden (aber nicht als Inventargruppe oder Hostvariable):

  • virtualenv_notify_on_updated: Handlername, um zu benachrichtigen, wenn die Virtualenv erstellt oder aktualisiert wurde. Der Standard ist "virtualenv updated"; es wird allgemein empfohlen, dass benutzerdefinierte Handler auf "virtualenv updated" hören, anstatt den Benachrichtigungsnamen zu ändern.

Jeder Artikel in einer Paketliste oben kann als Zeichenkette mit nur dem Paketnamen oder als Hash mit den Schlüsseln name, state oder version angegeben werden, z.B.:

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

Betriebssystem-Paketlisten sind ein Hash, der nach dem Paketmanager indiziert ist, z.B.:

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

Diese Rolle kann eine Virtualenv als ein anderer Benutzer erstellen, der durch virtualenv_user angegeben ist, und verwendet die für den Host/Play/Task angegebene become_method. Betriebssystem- und globale Pakete werden nur installiert, wenn ansible_user, ansible_ssh_user oder ansible_become_user root ist. Die folgenden Beispielkombinationen von Benutzern sind aufgeführt mit ihren erwarteten Ergebnissen:

  • ansible_user=root: Betriebssystem- und globale Pakete werden installiert; die Virtualenv gehört root.
  • ansible_user=root virtualenv_user=other: Betriebssystem- und globale Pakete werden installiert; become wird verwendet; die Virtualenv gehört other.
  • ansible_user=other: Betriebssystem- und globale Pakete werden nicht installiert; die Virtualenv gehört other.
  • ansible_user=other virtualenv_user=another: Betriebssystem- und globale Pakete werden nicht installiert; become wird verwendet; die Virtualenv gehört another. Diese Kombination kann fehlschlagen, wenn other nicht another werden kann. Die Ansible 2.1-Anmerkung unten könnte auch in diesem Fall zutreffen.
  • ansible_user=other ansible_become_user=root: Betriebssystem- und globale Pakete werden installiert; become wird verwendet; die Virtualenv gehört other.
  • ansible_user=other ansible_become_user=root virtualenv_user=another: Betriebssystem- und globale Pakete werden installiert; become wird verwendet; die Virtualenv gehört another. Möglicherweise müssen Sie allow_world_readable_tmpfiles in Ihrer ansible.cfg definieren (was immer noch eine Warnung anzeigt, anstatt einen Fehler auszulösen) oder einen anderen Ansatz verwenden, um einen nicht privilegierten Benutzer zu unterstützen, der einen anderen nicht privilegierten Benutzer wird.

Beispiel-Playbook

Das folgende Beispiel-Playbook installiert libjpeg als Systemabhängigkeit, erstellt oder aktualisiert eine Virtualenv, installiert spezifische Pakete, installiert Anforderungen und entfernt dann ein altes Paket, das nicht mehr benötigt wird:

- 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: benutzerdefinierter Virtualenv-Handler
      debug:
        msg: "Virtualenv in {{ virtualenv_path }} wurde aktualisiert."
      listen: virtualenv updated

Lizenz

BSD

Autoreninformation

Chris Church (cchurch)

Über das Projekt

Configure and update a Python virtualenv.

Installieren
ansible-galaxy install cchurch.virtualenv
Lizenz
other
Downloads
33.6k
Besitzer
Python/Django/Ansible, will code for sweet tea and beer.