evandam.conda

evandam.conda

Status budowy

Zarządzaj swoimi środowiskami conda za pomocą Ansible. Twórz nowe środowiska conda, instaluj, aktualizuj i usuwaj pakiety.

Podobnie jak moduł pip, ten moduł wspiera przekazywanie listy do pola name. Umożliwia to szybkie i efektywne korzystanie z komend conda.

Rola została zaprojektowana, aby udostępnić moduł conda do wykorzystania w kolejnych zadaniach.

Wymagania

  • conda (przetestowany na 4.5.0 i nowszych)

Przykład podstawowego playbooka

---
- name: Test evandam.conda
  hosts: all
  roles:
    - role: evandam.conda
  tasks:
    - name: Aktualizacja conda
      conda:
        name: conda
        state: latest
        executable: /opt/conda/bin/conda
    - name: Utworzenie środowiska conda
      conda:
        name: python
        version: 3.7
        environment: python3
        state: present
    - name: Instalacja pakietów w środowisku
      conda:
        name:
          - pandas
          - numpy
          - tensorflow
        environment: python3
    - name: Instalacja R, używając wersjonowanej nazwy
      conda:
        name: r-base=3.5.0

Przykład z pętlą zmiennych i przyspieszeniem Mamba

Załóżmy, że mamy plik yaml z listą (./software/conda.yaml), definiującą wszystkie nasze środowiska i pakiety przygotowane do instalacji w ten sposób:

Quality_control:
 - afterqc
 - multiqc
 - trimmomatic
Assembly:
 - spades
 - megahit

To może być korzystne z kilku powodów. Po pierwsze, można oddzielić różne wdrożenia i konfiguracje oprogramowania w oddzielnych gałęziach git, odnosząc się tylko do tego pliku. Po drugie, jeśli masz współpracowników, którzy nie są zaznajomieni z gitem, muszą zająć się jedynie edytowaniem tego konkretnego pliku, aby zaktualizować jakiekolwiek wdrożenia oprogramowania, co można zrobić łatwo, np. edytując ten plik w przeglądarce. Po trzecie, korzystając z pętli zmiennych, znacznie upraszcza nasz kod. Jak pokazano w następnym przykładzie.

Następujący playbook składa się z 3 oddzielnych części (zakładając, że anaconda jest już zainstalowana):

  1. Parsuje wcześniej wspomniany plik conda.yaml, aby nasze docelowe środowiska i pakiety były gotowe do użytku. (optymalnie, kanały powinny być również parsowane w ten sposób, ale w tym przykładzie jesteśmy leniwi i twardo kodujemy je tutaj)
  2. Instaluje Mambę w podstawowym środowisku (zobacz na dole za wyjaśnienie).
  3. Przechodzi przez naszą zmienną "envs", tworząc każde zdefiniowane środowisko i instalując jego pakiety przy użyciu Mamby.
---
- name: Instalacja środowisk Conda i pakietów
  hosts: my_remote_machine
  roles:
    - role: evandam.conda
  remote_user: admin
  become: yes
  tasks:
    - include_vars:
      file: ./software/conda.yaml
      name: envs
    - name: Instalacja Mamby w podstawowym środowisku za pomocą standardowego conda
      become_user: user
      conda:
        environment: base
        name: mamba
        state: latest
        channels:
          - conda-forge
        executable: /opt/miniconda3/bin/conda
    - name: Tworzenie środowisk Conda i instalacja pakietów przy użyciu Mamby zamiast domyślnego Conda
      become_user: user
      conda:
        environment: "{{item.key}}"
        name: "{{item.value}}"
        state: latest
        channels:
          - bioconda
          - conda-forge
          - defaults
        executable: /opt/miniconda3/bin/mamba
      loop: "{{  envs  |  dict2items  }}"

Notatki o Mambie

Jednym z niedogodności korzystania z Anacondy jako menedżera pakietów są rozbudowane kanały. W przypadku niektórych pakietów, szczególnie z conda-forge, rozwiązywacz środowisk może zużywać godziny obliczeń, aby ustalić zależności, zanim jakakolwiek instalacja się rozpocznie. Rozwiązaniem jest Mamba/Micromamba. Mamba opakowuje wykonywalny plik conda, implementując rozwiązywacz w C++, co czyni go niezwykle szybkim (zauważ zmianę polecenia wykonawczego z conda na mamba w ostatnim zadaniu). Jako przykład z prawdziwego świata, przy ponad 30 środowiskach dla wdrożenia kursu studenckiego, czas wdrożenia zmniejszył się z 2,5 godziny do 15 minut!

Licencja

BSD

O projekcie

Manage conda environments and packages

Zainstaluj
ansible-galaxy install evandam.conda
Licencja
mit
Pobrania
60.7k
Właściciel