evandam.conda

evandam.conda

État de la construction

Gérez vos environnements conda avec Ansible. Créez de nouveaux environnements conda, installez, mettez à jour et supprimez des paquets.

Comme pour le module pip, il est possible de passer une liste dans le champ name. Cela permet une utilisation rapide et efficace des commandes conda.

Le rôle est conçu pour rendre le module conda disponible pour une utilisation dans les tâches suivantes.

Exigences

  • conda (testé avec 4.5.0 et supérieur)

Exemple de Playbook Basique

---
- name: Tester evandam.conda
  hosts: all
  roles:
    - role: evandam.conda
  tasks:
    - name: Mettre à jour conda
      conda:
        name: conda
        state: latest
        executable: /opt/conda/bin/conda
    - name: Créer un environnement conda
      conda:
        name: python
        version: 3.7
        environment: python3
        state: present
    - name: Installer des paquets dans l'environnement
      conda:
        name:
          - pandas
          - numpy
          - tensorflow
        environment: python3
    - name: Installer R, en utilisant un nom versionné
      conda:
        name: r-base=3.5.0

Exemple avec bouclage de variables et optimisation Mamba

Supposons que nous ayons un fichier yaml-liste (./software/conda.yaml), définissant tous nos environnements et leurs paquets préparés pour installation comme ceci :

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

Ceci peut être bénéfique pour plusieurs raisons. Tout d'abord, vous pouvez séparer différents déploiements et configurations logicielles dans des branches git distinctes faisant référence uniquement à ce fichier. Deuxièmement, si vous avez des collaborateurs qui ne connaissent pas bien git, ils doivent seulement s'inquiéter de modifier ce fichier spécifique pour mettre à jour les déploiements logiciels dont ils ont besoin, ce qui peut être fait facilement par exemple en modifiant ce fichier brut dans le navigateur. Troisièmement, en utilisant une boucle de variables, cela simplifie beaucoup notre code, comme le montre le prochain exemple.

Le playbook suivant se compose de 3 parties distinctes (et suppose qu'Anaconda est déjà installé)

  1. Il analyse le conda.yaml mentionné précédemment, de sorte que nos environnements cibles et paquets soient déjà définis. (idéalement, les canaux devraient également être analysés de cette façon, mais dans cet exemple, nous sommes paresseux et les avons codés en dur)
  2. Installe Mamba dans l'environnement de base (voir en bas pour explication).
  3. Effectue une boucle à travers notre variable "envs", créant chaque environnement défini et installant ses paquets en utilisant Mamba.
---
- name: Installer les environnements Conda et les paquets
  hosts: ma_machine_distante
  roles:
    - role: evandam.conda
  remote_user: admin
  become: yes
  tasks:
    - include_vars:
      file: ./software/conda.yaml
      name: envs
    - name: Installer Mamba dans l'environnement de base en utilisant conda standard
      become_user: user
      conda:
        environment: base
        name: mamba
        state: latest
        channels:
          - conda-forge
        executable: /opt/miniconda3/bin/conda
    - name: Créer des environnements Conda et installer des paquets en utilisant Mamba au lieu de Conda par défaut
      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  }}"

Remarques sur Mamba

Un des inconvénients de l'utilisation d'Anaconda comme gestionnaire de paquets est le grand nombre de canaux. Pour certains paquets, en particulier ceux de conda-forge, le résolveur d'environnement peut prendre des heures à calculer les dépendances avant même que l'installation ne commence. La solution : Mamba/Micromamba. Mamba enveloppe l'exécutable conda, implémentant le résolveur en C++, ce qui le rend extrêmement rapide (remarquez le changement de directive d'exécutable de conda à mamba dans la dernière tâche). Par exemple, avec plus de 30 environnements pour un déploiement de cours, cela a réduit le temps de déploiement de 2,5 heures à 15 minutes !

Licence

BSD

À propos du projet

Manage conda environments and packages

Installer
ansible-galaxy install evandam.conda
Licence
mit
Téléchargements
60.7k
Propriétaire