cchurch.virtualenv

Status budowy Galaxy

VirtualEnv

Konfiguracja wirtualnego środowiska Pythona i instalacja/aktualizacja wymagań. Wymaga Ansible w wersji 2.8 lub późniejszej.

Obsługa wersji Ansible < 2.8 została usunięta od wersji 0.7.0.

Wymagania

Gdy używana jest opcja become (tj. virtualenv_user różni się od ansible_user lub ansible_ssh_user), wymagane jest zainstalowanie odpowiednich pakietów OS wspierających become_method (np. sudo) przed użyciem tej roli.

Gdy żaden z użytkowników ansible_user, ansible_ssh_user ani ansible_become_user nie jest root, niezbędne pakiety OS do uruchomienia komendy virtualenv muszą być zainstalowane w inny sposób przed użyciem tej roli.

Zmienne roli

Poniższe zmienne mogą być zdefiniowane w celu dostosowania tej roli:

  • virtualenv_path: Katalog docelowy, w którym ma zostać utworzone/zaktualizowane wirtualne środowisko (obowiązkowe).
  • virtualenv_user: Użytkownik, na którego konto ma zostać utworzone/zaktualizowane wirtualne środowisko; domyślnie jest to aktualny użytkownik (tj. ansible_user lub ansible_ssh_user).
  • virtualenv_default_os_packages: Pakiety OS wymagane do utworzenia wirtualnego środowiska. Zwykle nie ma potrzeby zmiany tej opcji, chyba że używasz innego ansible_pkg_mgr; domyślnie to { apt: ['python-dev', 'python-virtualenv'], yum: ['python-devel', 'python-virtualenv'] }.
  • virtualenv_os_packages: Pakiety OS, które mają być zainstalowane w celu wsparcia wirtualnego środowiska, indeksowane przez ansible_pkg_mgr; domyślnie to {}.
  • virtualenv_easy_install_packages: Pakiety Pythona do zainstalowania globalnie przy użyciu easy_install; domyślnie to [].
  • virtualenv_easy_install_executable: Alternatywny executable do użycia dla globalnych pakietów easy_install; domyślnie to omit, aby użyć komendy easy_install znalezionej w ścieżce.
  • virtualenv_global_packages: Pakiety Pythona do zainstalowania globalnie przy użyciu pip; domyślnie to [].
  • virtualenv_pip_executable: Alternatywny executable do użycia dla globalnych pakietów pip; domyślnie to omit, aby użyć komendy pip znalezionej w ścieżce.
  • virtualenv_command: Alternatywny executable do użycia w celu utworzenia wirtualnego środowiska; domyślnie to omit, aby użyć komendy virtualenv znalezionej w ścieżce.
  • virtualenv_python: Wersja Pythona, która ma być użyta do utworzenia wirtualnego środowiska; domyślnie to omit, aby użyć interpretera Pythona używanego przez Ansible.
  • virtualenv_default_package: Domyślny pakiet do zainstalowania przy tworzeniu wirtualnego środowiska; domyślnie to pip.
  • virtualenv_site_packages: Boolean wskazujący, czy wirtualne środowisko ma używać globalnych pakietów; domyślnie to no.
  • virtualenv_pre_packages: Pakiety Pythona do zainstalowania wewnątrz wirtualnego środowiska przed plikami wymagań; domyślnie to []. Ta opcja może być także używana do usunięcia pakietów, które nie są już potrzebne w wirtualnym środowisku.
  • virtualenv_requirements: Lista plików wymagań do zainstalowania w wirtualnym środowisku; domyślnie to []. Te ścieżki muszą być już obecne w zdalnym systemie.
  • virtualenv_post_packages: Pakiety Pythona do zainstalowania w wirtualnym środowisku po plikach wymagań; domyślnie to []. Ta opcja może być także używana do usunięcia pakietów, które nie są już potrzebne w wirtualnym środowisku.
  • virtualenv_recreate: Boolean wskazujący, czy wirtualne środowisko ma zostać usunięte i utworzone na nowo; domyślnie to no.

Poniższa zmienna może być zdefiniowana dla wywołania play lub roli (ale nie jako zmienna grupy lub hosta):

  • virtualenv_notify_on_updated: Nazwa handlera, który ma być powiadomiony, gdy wirtualne środowisko zostało utworzone lub zaktualizowane. Domyślnie to "virtualenv updated"; zazwyczaj zaleca się, aby niestandardowe handlery nasłuchiwały na "virtualenv updated" zamiast zmiany nazwy powiadomienia.

Każdy element na liście pakietów powyżej może być określony jako ciąg z tylko nazwą pakietu lub jako hash z kluczami name, state lub version, np.:

- pakiet1
- name: pakiet2
  state: absent
- name: pakiet3
  version: 1.2

Listy pakietów OS są hashem indeksowanym przez menedżera pakietów, np.:

apt:
  - pakiet1
  - name: pakiet2-dev
    state: absent
yum:
  - pakiet1
  - name: pakiet2-devel
    state: absent
foo_pkg_mgr:
  - foo-pakiet1

Ta rola może tworzyć wirtualne środowisko jako inny użytkownik, określony przez virtualenv_user, i użyje metody become określonej dla hosta/play/task. Pakiety OS i globalne będą instalowane tylko wtedy, gdy ansible_user, ansible_ssh_user lub ansible_become_user to root. Poniżej przedstawiono przykładowe kombinacje użytkowników z oczekiwanymi efektami:

  • ansible_user=root: Pakiety OS i globalne będą zainstalowane; wirtualne środowisko będzie należało do root.
  • ansible_user=root virtualenv_user=other: Pakiety OS i globalne będą zainstalowane; użyta zostanie opcja become; wirtualne środowisko będzie należało do other.
  • ansible_user=other: Pakiety OS i globalne nie będą zainstalowane; wirtualne środowisko będzie należało do other.
  • ansible_user=other virtualenv_user=another: Pakiety OS i globalne nie będą zainstalowane; użyta zostanie opcja become; wirtualne środowisko będzie należało do another. Ta kombinacja może się nie powieść, jeśli other nie może stać się another. Poniższa uwaga dotycząca Ansible 2.1 może również mieć zastosowanie w tym przypadku.
  • ansible_user=other ansible_become_user=root: Pakiety OS i globalne będą zainstalowane; użyta zostanie opcja become; wirtualne środowisko będzie należało do other.
  • ansible_user=other ansible_become_user=root virtualenv_user=another: Pakiety OS i globalne będą zainstalowane; użyta zostanie opcja become; wirtualne środowisko będzie należało do another. Możesz potrzebować zdefiniować allow_world_readable_tmpfiles w swoim ansible.cfg (co nadal wygeneruje ostrzeżenie, a nie błąd) lub użyć innego podejścia, aby pozwolić jednemu użytkownikowi bez uprawnień stać się innym użytkownikiem bez uprawnień.

Przykładowy Playbook

Poniższy przykładowy playbook instaluje libjpeg jako zależność systemową, tworzy lub aktualizuje wirtualne środowisko, instaluje konkretne pakiety, instaluje wymagania, a następnie usuwa stary pakiet, który nie jest już potrzebny:

- 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: niestandardowy handler wirtualnego środowiska
      debug:
        msg: "wirtualne środowisko w {{ virtualenv_path }} zostało zaktualizowane."
      listen: wirtualne środowisko zaktualizowane

Licencja

BSD

Informacje o autorze

Chris Church (cchurch)

O projekcie

Configure and update a Python virtualenv.

Zainstaluj
ansible-galaxy install cchurch.virtualenv
Licencja
other
Pobrania
33.6k
Właściciel
Python/Django/Ansible, will code for sweet tea and beer.