mambaorg.micromamba
Ansible Role: mambaorg.micromamba
This role installs micromamba and can create a basic conda environment.
Links
- GitHub Repository
- Ansible Galaxy
- Example Usage for setting up conda in a Docker image.
Motivation
Conda is an excellent tool to manage Python dependencies, but it can be very slow with many dependencies, sometimes taking hours to complete.
Mamba solves this problem by rewriting its dependency solver in C++, making it much faster. Mamba uses the reliable conda
tool for most other tasks.
Micromamba is a lightweight C++ package manager for conda environments. It has no Python dependencies and can create environments for any Python version from a single binary. If your conda packages don't require Python, Micromamba can even create a conda environment without it!
Micromamba removes the need for full distributions like Anaconda or Miniconda, letting you set up your environment directly.
Role Variables
arch: linux-64
version: latest
Check for the latest architecture and version information. Possible arch
values include linux-64
, linux-aarch64
, osx-64
, osx-arm64
, win-64
. The version
can be latest
or something like 0.15.2-0
.
dest: /usr/local/bin/micromamba
This is where the micromamba
executable will be placed.
root_prefix: /opt/conda
If this root prefix doesn't exist, a new one will be created here.
packages:
- mamba
- python=3.9
These are the initial conda packages that will be installed when creating a new root prefix.
file: /tmp/environment.yaml
You can also provide an environment file instead of a package list.
root_prefix_condarc:
channels:
- conda-forge
The content for the .condarc
file in the new root prefix. If not set, the file won't be created.
Example Playbooks
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
This installs the micromamba
executable in the default location: /usr/local/bin/micromamba
.
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
vars:
dest: /tmp/micromamba
root_prefix: /opt/conda
packages:
- mamba
- python=3.9
This puts micromamba
in /tmp/micromamba
, creating a new root prefix at /opt/conda/
with Python 3.9 and Mamba.
- hosts: servers
become: yes
become_user: condauser
roles:
- mambaorg.micromamba
vars:
root_prefix: ~/micromamba
root_prefix_condarc:
channels:
- conda-forge
packages:
- s3fs-fuse
This sets up a new root prefix at /home/conda-user/micromamba
, creating a conda environment without Python. It also creates a .condarc
file to install packages from the conda-forge
channel by default.
Subsequent Usage
To run commands in a conda environment, it must first be activated. Activation modifies the PATH
and other environment variables in the shell (usually Bash).
Directly
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
The first command sets up a Bash function named micromamba
so it can modify the shell environment. The second command activates the environment at /opt/conda
.
With an Initialization Script
micromamba shell init --shell=bash --prefix=/opt/conda
This updates ~/.bashrc
so you can use micromamba activate
in future sessions to activate the environment.
With Mamba or Conda
Since micromamba is experimental, it’s better to use mamba
or conda
for activation. Install mamba
in the environment and run:
/opt/conda/bin/conda init bash
/opt/conda/bin/mamba init bash
These commands modify ~/.bashrc
to fully activate the environment in future sessions.
Troubleshooting
If Bash is not interactive, ~/.bashrc
won’t load, and running micromamba activate
will fail. In this case, use the direct activation method or start an interactive shell with bash -i
.
License
MIT
Author Information
Maintained by Ben Mares (@maresb) and Andreas Trawoeger (@atrawog). Initial version by @maresb. Contributions are welcome!
Install micromamba, and optionally create a base conda environment.
ansible-galaxy install mambaorg.micromamba