evandam.conda

evandam.conda

Estado de Construcción

Gestiona tu(s) entorno(s) conda con Ansible. Crea nuevos entornos conda, instala, actualiza y elimina paquetes.

Similar al módulo pip, esto permite pasar una lista en el campo name. Esto resulta en un uso rápido y eficiente de los comandos conda.

El rol está diseñado para hacer que el módulo conda esté disponible para su uso en tareas posteriores.

Requisitos

  • conda (probar en 4.5.0 y versiones superiores)

Ejemplo Básico de Playbook

---
- name: Probar evandam.conda
  hosts: all
  roles:
    - role: evandam.conda
  tasks:
    - name: Actualizar conda
      conda:
        name: conda
        state: latest
        executable: /opt/conda/bin/conda
    - name: Crear un entorno conda
      conda:
        name: python
        version: 3.7
        environment: python3
        state: present
    - name: Instalar algunos paquetes en el entorno
      conda:
        name:
          - pandas
          - numpy
          - tensorflow
        environment: python3
    - name: Instalar R, usando un nombre versión
      conda:
        name: r-base=3.5.0

Ejemplo con bucle de variables y aceleración de Mamba

Supongamos que tenemos un archivo yaml-diccionario/lista (./software/conda.yaml), definiendo todos nuestros entornos y los paquetes listos para instalar de la siguiente manera:

Control_de_calidad:
 - afterqc
 - multiqc
 - trimmomatic
Ensamblaje:
 - spades
 - megahit

Esto puede ser beneficioso por varias razones. Primero, puedes separar diferentes implementaciones y configuraciones de software en ramas git discretas que solo referencian este archivo. En segundo lugar, si tienes colaboradores que no son expertos en git, solo tienen que preocuparse por editar este archivo específico para actualizar cualquier implementación de software que necesiten, y se puede hacer fácilmente editando este archivo en bruto en el navegador. En tercer lugar, usar un bucle de variables simplifica mucho nuestro código, como se ve en el siguiente ejemplo.

El siguiente playbook consta de 3 partes discretas (y asume que anaconda ya está instalado):

  1. Analiza el mencionado conda.yaml para que nuestros entornos y paquetes objetivo estén claramente definidos. (óptimamente, los canales también deberían analizarse de esta manera, pero en este ejemplo somos un poco perezosos y los codificamos de forma fija).
  2. Instala Mamba en el entorno base (ver al final para la explicación).
  3. Recorre nuestra variable "envs" creando cada entorno definido e instalando sus paquetes usando Mamba.
---
- name: Instalar entornos y paquetes de Conda
  hosts: my_remote_machine
  roles:
    - role: evandam.conda
  remote_user: admin
  become: yes
  tasks:
    - include_vars:
      file: ./software/conda.yaml
      name: envs
    - name: Instalar Mamba en el entorno base usando conda estándar
      become_user: user
      conda:
        environment: base
        name: mamba
        state: latest
        channels:
          - conda-forge
        executable: /opt/miniconda3/bin/conda
    - name: Crear entornos de Conda e instalar paquetes usando Mamba en lugar de Conda por defecto
      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  }}"

Notas sobre Mamba

Una de las desventajas de usar Anaconda como gestor de paquetes es el tamaño de los canales. Para ciertos paquetes, especialmente de conda-forge, el solucionador del entorno puede usar horas de cálculo para averiguar las dependencias antes de que inicie cualquier instalación. La solución: Mamba/Micromamba. Mamba envuelve el ejecutable conda, implementando el solucionador en C++, haciéndolo extremadamente rápido (nota el cambio en la directiva ejecutable de conda a mamba en la última tarea). Como ejemplo del mundo real, con más de 30 entornos para una implementación de curso estudiantil, esto redujo el tiempo de implementación de 2.5 horas a 15 minutos.

Licencia

BSD

Acerca del proyecto

Manage conda environments and packages

Instalar
ansible-galaxy install evandam.conda
Licencia
mit
Descargas
60.7k
Propietario