evandam.conda

evandam.conda

构建状态

使用 Ansible 管理您的 conda 环境。可以创建新的 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 加速的示例

假设我们在一个文件(./software/conda.yaml)中有一个 yaml 字典/列表,定义了我们所有的环境及其待安装的包,如下所示:

质量控制:
 - afterqc
 - multiqc
 - trimmomatic
组装:
 - spades
 - megahit

这有几个好处。首先,您可以在单独的 git 分支中分开不同的部署和软件设置,仅引用此文件。其次,如果您有不熟悉 git 的合作者,他们只需担心编辑这个特定的文件即可更新所需的软件部署,并且可以很容易地通过在浏览器中编辑这个原始文件完成。第三,使用变量循环,可以大大简化我们的代码。在下一个示例中可以看到这一点。

以下剧本由三个独立部分组成(假设已经安装了 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: 使用标准 conda 在基本环境中安装 Mamba
      become_user: user
      conda:
        environment: base
        name: mamba
        state: latest
        channels:
          - conda-forge
        executable: /opt/miniconda3/bin/conda
    - name: 使用 Mamba 而不是默认的 Conda 创建 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.conda
许可证
mit
下载
60.7k
拥有者