mambaorg.micromamba
Ansible Rolle: mambaorg.micromamba
Installiere micromamba und optional ein root/basis Conda-Umfeld.
Links
- GitHub
- Galaxy
- Beispiel für fortgeschrittene Nutzung zum Einrichten und Konfigurieren einer System-Condumgebung in einem Docker-Image
Motivation
Conda ist ein sehr leistungsfähiges Werkzeug zur Verwaltung von Python-Abhängigkeiten. Leider kann der langsame Abhängigkeitsslöser für Umgebungen mit vielen Abhängigkeiten Stunden in Anspruch nehmen.
Das neue Mamba Projekt löst dieses Problem, indem es den Abhängigkeitsslöser in C++ neu implementiert und blitzschnell ist. Abgesehen vom Solver überträgt mamba
die meisten Aufgaben an das zuverlässige conda
-Werkzeug.
Micromamba ist ein sehr experimenteller reiner C++-Paketmanager für Conda-Umgebungen. Da es keine Python-Abhängigkeiten hat, kann es effizient Umgebungen für jede Python-Version aus einer einzelnen micromamba
-Binärdatei erstellen. Wenn keines deiner Conda-Pakete eine Python-Abhängigkeit hat, erstellt Micromamba sogar eine Conda-Umgebung ohne Python!
Micromamba macht „Distributionen“ wie Anaconda oder Miniconda überflüssig. Du kannst deine gewünschte Umgebung direkt einrichten.
Rollenvariablen
arch: linux-64
version: latest
Für die aktuellsten Architekturen und Versionsnummern überprüfe distributions[#].basename
, das das Format {arch}/micromamba-{version}.tar.bz2
hat. Aktuelle mögliche Werte für arch
sind linux-64
, linux-aarch64
, osx-64
, osx-arm64
, win-64
. Das Format von version
ist entweder latest
oder etwas wie 0.15.2-0
, wobei -0
die Buildnummer angibt.
dest: /usr/local/bin/micromamba
Standort der ausführbaren Datei micromamba
.
root_prefix: /opt/conda
Wenn das Root-Präfix definiert ist und noch nicht existiert, wird ein neues Root-Präfix an diesem Ort erstellt.
packages:
- mamba
- python=3.9
Eine Liste von initialen Conda-Paketen, die installiert werden sollen, wenn ein neues Root-Präfix erstellt wird.
file: /tmp/environment.yaml
Als Alternative zur Liste von packages
kann auch eine Umgebungsdatei oder Sperrdatei bereitgestellt werden.
root_prefix_condarc:
channels:
- conda-forge
Inhalt, der in .condarc
im neuen Root-Präfix geschrieben werden soll. Wenn nicht definiert, wird keine .condarc
-Datei erstellt.
Beispiel-Playbooks
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
Dies lädt die ausführbare Datei micromamba
in den Standardort /usr/local/bin/micromamba
.
- hosts: servers
become: yes
roles:
- mambaorg.micromamba
vars:
dest: /tmp/micromamba
root_prefix: /opt/conda
packages:
- mamba
- python=3.9
Dies lädt micromamba
in /tmp/micromamba
und erstellt ein neues Root-Präfix in /opt/conda/
mit Python 3.9 und Mamba.
- hosts: servers
become: yes
become_user: condauser
roles:
- mambaorg.micromamba
vars:
root_prefix: ~/micromamba
root_prefix_condarc:
channels:
- conda-forge
packages:
- s3fs-fuse
Dies erstellt ein neues Root-Präfix in /home/conda-user/micromamba
und erstellt eine Conda-Umgebung ohne Python. Es wird auch eine .condarc
-Datei im Root-Präfix platziert, um die Standard-Paketquelle auf den conda-forge
-Kanal einzustellen.
Weitere Nutzung
Um Befehle aus einer Conda-Umgebung auszuführen, muss sie zunächst aktiviert werden. Die Aktivierung beinhaltet die Änderung des PATH
und anderer Umgebungsvariablen im aktiven Shell (normalerweise Bash). Dies kann auf verschiedene Arten geschehen.
Direkt
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
Der erste Befehl führt eine Befehlssequenz aus, die eine Bash-Funktion mit dem Namen micromamba
definiert. (Andernfalls würde die ausführbare Datei micromamba
als Unterprozess ausgeführt, der die Umgebung der Shell nicht ändern kann.) Der zweite Befehl ruft die neu definierte Bash-Funktion auf, um die Umgebung unter /opt/conda
zu aktivieren.
Mit einem Initialisierungsskript
micromamba shell init --shell=bash --prefix=/opt/conda
Dies ändert ~/.bashrc
, sodass in zukünftigen interaktiven Bash-Sitzungen der Befehl micromamba activate
ausreicht, um die Umgebung zu aktivieren. (Der Befehl micromamba activate
kann bei Bedarf zu ~/.bashrc
hinzugefügt werden.)
Mit mamba oder conda
Da micromamba experimentell ist, wird empfohlen, anstelle der oben genannten Möglichkeiten, die micromamba
für die Aktivierung nutzen, mamba
in der Umgebung zu installieren und dann
/opt/conda/bin/conda init bash
/opt/conda/bin/mamba init bash
Diese Befehle ändern ~/.bashrc
, sodass die Umgebung in zukünftigen interaktiven Bash-Sitzungen vollständig aktiviert wird.
Problemlösung
Wenn Bash nicht interaktiv ausgeführt wird, wird die .bashrc
nicht geladen, sodass das Ausführen von micromamba activate
fehlschlägt. In diesem Fall kannst du entweder das direkte Aktivierungsverfahren verwenden oder eine interaktive Shell erzwingen, indem du das -i
-Flag für den bash
-Befehl übergibst.
Lizenz
MIT
Autoreninformationen
Derzeit gepflegt von Ben Mares (@maresb) und Andreas Trawoeger (@atrawog). Die ursprüngliche Version stammt von @maresb. Beiträge sind willkommen!
Install micromamba, and optionally create a base conda environment.
ansible-galaxy install mambaorg.micromamba