conda

evandam.conda

Статус сборки

Управляйте своими окружениями conda с помощью Ansible. Создавайте новые окружения conda, устанавливайте, обновляйте и удаляйте пакеты.

Подобно модулю pip, этот модуль поддерживает передачу списка в поле name. Это обеспечивает быструю и эффективную работу с командами conda.

Роль создана, чтобы сделать модуль conda доступным для использования в последующих задачах.

Требования

  • conda (тестировалось на 4.5.0 и выше)

Пример базового плейбука

---
- name: Тестирование evandam.conda
  hosts: all
  roles:
    - role: evandam.conda
  tasks:
    - name: Обновить conda
      conda:
        name: conda
        state: latest
        executable: /opt/conda/bin/conda
    - name: Создать окружение conda
      conda:
        name: python
        version: 3.7
        environment: python3
        state: present
    - name: Установить некоторые пакеты в окружение
      conda:
        name:
          - pandas
          - numpy
          - tensorflow
        environment: python3
    - name: Установить R, используя версию
      conda:
        name: r-base=3.5.0

Пример с изменением переменных и ускорением Mamba

Предположим, у нас есть yaml-словарь/список в файле (./software/conda.yaml), который определяет все наши окружения и их пакеты, подготовленные для установки, следующим образом:

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

Это может быть полезно по нескольким причинам. Во-первых, вы можете разделять разные развертывания и программные настройки на отдельных git-ветках, ссылаясь только на этот файл. Во-вторых, если у вас есть коллеги, которые не разбираются в git, им нужно будет беспокоиться только об редактировании этого конкретного файла, чтобы обновить любые необходимые программные развертывания, и это можно сделать легко, например, редактируя этот файл в браузере. В-третьих, используя цикл по переменным, мы значительно упрощаем наш код. Как видно в следующем примере.

Следующий плейбук состоит из 3 отдельных частей (предполагается, что anaconda уже установлена):

  1. Он разбирает ранее упомянутый conda.yaml, чтобы наши целевые окружения и пакеты были заранее определены. (Оптимально, также следует разбирать каналы подобным образом, но в этом примере мы ленивы и жестко кодируем их.)
  2. Устанавливает Mamba в базовом окружении (подробности ниже).
  3. Проходит по нашей переменной "envs", создавая каждое определенное окружение и устанавливая его пакеты с помощью Mamba.
---
- name: Установить окружения Conda и пакеты
  hosts: my_remote_machine
  roles:
    - role: evandam.conda
  remote_user: admin
  become: yes
  tasks:
    - include_vars:
      file: ./software/conda.yaml
      name: envs
    - name: Установить Mamba в базовом окружении с использованием стандартного conda
      become_user: user
      conda:
        environment: base
        name: mamba
        state: latest
        channels:
          - conda-forge
        executable: /opt/miniconda3/bin/conda
    - name: Создать окружения Conda и установить пакеты с использованием Mamba вместо стандартного 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  }}"

Заметки о Mamba

Одним из недостатков использования Anaconda как менеджера пакетов является баг, связанный с большими каналами. Для некоторых пакетов, особенно от conda-forge, решатель окружения может использовать часы вычислений, чтобы выяснить зависимости еще до того, как начнется установка. Решение: Mamba/Micromamba. Mamba оборачивает исполняемый файл conda, реализуя решатель на C++, что делает его невероятно быстрым (обратите внимание на изменение директивы исполняемого файла: с conda на mamba в последней задаче). В качестве примера из реальной жизни, с более чем 30 окружениями для развертывания учебного курса, это сократило время развертывания с 2,5 часов до 15 минут!

Лицензия

BSD

О проекте

Manage conda environments and packages

Установить
ansible-galaxy install evandam/evandam.conda
Лицензия
mit
Загрузки
55197
Владелец