mambaorg.micromamba
Ansible-Rolle: mambaorg.micromamba
Installiert micromamba und erstellt optional eine Root-/Basis-Cond-Umgebung.
Links
- GitHub
- Galaxy
- Fortgeschrittenes Anwendungsbeispiel zum Einrichten einer System-Conda-Umgebung in einem Docker-Image
Motivation
Conda ist ein sehr leistungsstarkes Werkzeug zur Verwaltung von Python-Abhängigkeiten. Leider kann der langsame Abhängigkeitslöser bei Umgebungen mit vielen Abhängigkeiten Stunden benötigen, um abzuschließen.
Das neue Mamba Projekt behebt dieses Problem, indem der Abhängigkeitslöser in C++ neu implementiert wird und extrem schnell ist. Neben dem Löser delegiert mamba die meisten Aufgaben an das vertraute Werkzeug conda.
Micromamba ist ein 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 einzigen micromamba-Binärdatei erstellen. Wenn keines Ihrer Conda-Pakete eine Python-Abhängigkeit hat, erstellt Micromamba sogar eine Conda-Umgebung ohne Python!
Micromamba beseitigt die Notwendigkeit für "Distributionen" wie Anaconda oder Miniconda. Sie können Ihre gewünschte Umgebung direkt einrichten.
Rollenvariablen
arch: linux-64
version: latest
Für die neuesten Architekturen und Versionsnummern prüfen Sie 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 Build-Nummer 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 an diesem Ort ein neues Root-Präfix erstellt.
packages:
- mamba
- python=3.9
Eine Liste von anfänglichen 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 eine Umweltdatei oder Lockdatei bereitgestellt werden.
root_prefix_condarc:
channels:
- conda-forge
Inhalte, die in die .condarc im neuen Root-Präfix geschrieben werden sollen. 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 an den Standardstandort /usr/local/bin/micromamba herunter.
- 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 herunter 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 erstellt, um Pakete standardmäßig aus dem conda-forge-Kanal zu installieren.
Nachfolgende Nutzung
Um Befehle aus einer Conda-Umgebung auszuführen, muss sie zuerst aktiviert werden. Die Aktivierung umfasst die Veränderung von PATH und anderen Umgebungsvariablen im aktiven Shell (meist Bash). Dies kann auf verschiedene Arten erfolgen.
Direkt
eval "$(micromamba shell hook --shell=bash)"
micromamba activate --prefix=/opt/conda
Der erste Befehl führt eine Befehlssequenz aus, die eine Bash-Funktion definiert, die ebenfalls micromamba genannt wird. (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 in /opt/conda zu aktivieren.
Mit einem Initialisierungsskript
micromamba shell init --shell=bash --prefix=/opt/conda
Dies ändert ~/.bashrc, sodass in nachfolgenden interaktiven Bash-Sitzungen der Befehl micromamba activate ausreicht, um die Umgebung zu aktivieren. (Der Befehl micromamba activate kann in ~/.bashrc hinzugefügt werden, wenn gewünscht.)
Mit mamba oder conda
Da micromamba experimentell ist, wird empfohlen, mamba in die Umgebung zu installieren und auszuführen
/opt/conda/bin/conda init bash
/opt/conda/bin/mamba init bash
Diese Befehle ändern ~/.bashrc, damit die Umgebung in nachfolgenden interaktiven Bash-Sitzungen vollständig aktiviert wird.
Fehlersuche
Wenn Bash nicht interaktiv ausgeführt wird, wird .bashrc nicht geladen, sodass micromamba activate fehlschlägt. In diesem Fall können Sie entweder das direkte Aktivierungsverfahren verwenden oder ein interaktives Shell erzwingen, indem Sie das Flag -i an den Befehl bash übergeben.
Lizenz
MIT
Autoreninformation
Derzeit wird es von Ben Mares (@maresb) und Andreas Trawoeger (@atrawog) betreut. 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