Example how to create seperated environment is missing
eelcovv opened this issue · 1 comments
Hello, this is not a real issue, but perhaps some comments on the examples which do not fit my needs. I want to install a mamba base environment on a remote machine (ubun22orweb) and then a separate environment with a specific list of packages.
I must say that my remote machines are ldx images (kind of virtual machines) so I am not sure what the impact is on that. For me it is required to run the following first:
ansible-galaxy collection install community.general -f
Then I add my hosts in a file host.yml:
--- host.yml file
all:
vars:
ansible_connection: lxd
ansible_user: root
ansible_become: no
children:
local:
vars:
ansible_lxd_remote: local
hosts:
ubun22ordsk:
ubun22orweb:
My playbook then look like this:
--- file: mambaweb.yml
- name: Configure ubuntu webserver with mamba
hosts:
- ubun22orweb
become: yes
vars:
user: eelco
home: "/home/{{ user }}"
arch: linux-aarch64
root_prefix: /opt/conda
root_prefix_condarc:
channels:
- conda-forge
packages:
- mamba
- python=3.9
roles:
- mambaorg.micromamba
tasks:
- name: Change owner Mamba
file:
path: "{{ root_prefix }}"
owner: "{{ user }}"
group: "{{ user }}"
recurse: True
- name: Run Mamba init
shell: "{{ root_prefix }}/bin/mamba init --system"
args:
creates: /etc/profile.d/conda.sh
I run this playbook with the command:
ansible-playbook -i host.yml mambaweb.yml
The extra tasks which I have added are required to change the permissions of the conda root and to initialize the mamba environment. The mamba environment is initialize on a system level. The reason is that I can not use become_user: I always stay root. I think that is related to the variable in my host.yml file which says 'ansible_become: no', but I thought this is required to be able to install on remote ldx images.
Anyway, so far so good: a base mamba environment under /opt/conda is created. When I log in, the mamba environment is automatically loaded.
The thing is: I want to create a new environment with say python 3.10. Normally on a shell you do mamba create -n py310 python=3.10, which will create a new directory under /opt/conda/envs/py310, but I can not find how to do this with your micromamba role. My question is: is there a proper way of creating new environments within the base environment? Or should I run shell command from ansible for that?
Hopefully you can point me into the right direction.
Hi, thanks for the question. This role currently only supports the basic functionality of creating the root environment, so for now I think your best bet is indeed to use a shell command.
If you have suggestions for concrete improvements, I'm happy to consider a PR.