gdevenyi / NeuroAnsible

An ansible playbook to deploy a complete standalone neuroimaging workstation
GNU General Public License v3.0
20 stars 0 forks source link

Document WSL installation #16

Closed gdevenyi closed 3 weeks ago

gdevenyi commented 1 month ago

This should work, need someone to test.

egarza commented 3 weeks ago

I have installed everything in my WSL with Ubuntu 20.04.06 and module does not seem to work as it says there.


Starting galaxy role install process
- downloading role 'micromamba', owned by mambaorg
- downloading role from https://github.com/mamba-org/ansible-role-micromamba/archive/v1.2.4.tar.gz
- extracting mambaorg.micromamba to /home/egarza/.ansible/roles/mambaorg.micromamba
- mambaorg.micromamba (v1.2.4) was installed successfully
egarza@CAMUS:/mnt/d/apps$ git clone https://github.com/gdevenyi/NeuroAnsible.git
Cloning into 'NeuroAnsible'...
remote: Enumerating objects: 286, done.
remote: Counting objects: 100% (286/286), done.
remote: Compressing objects: 100% (178/178), done.
remote: Total 286 (delta 118), reused 235 (delta 74), pack-reused 0
Receiving objects: 100% (286/286), 71.49 KiB | 739.00 KiB/s, done.
Resolving deltas: 100% (118/118), done.
egarza@CAMUS:/mnt/d/apps$ cd NeuroAnsible/
egarza@CAMUS:/mnt/d/apps/NeuroAnsible$ ls
LICENSE  README.md  ansible.cfg  deploy.yml  files  inventory  roles
egarza@CAMUS:/mnt/d/apps/NeuroAnsible$ ansible-playbook --ask-become-pass deploy.yml
[WARNING]: Ansible is being run in a world writable directory (/mnt/d/apps/NeuroAnsible), ignoring it as an ansible.cfg source. For
more information see https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir
BECOME password:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: workstations

PLAY [workstations] ****************************************************************************************************************
skipping: no hosts matched

PLAY RECAP *************************************************************************************************************************

egarza@CAMUS:/mnt/d/apps/NeuroAnsible$ ansible-playbook --list-tags deploy.yml
[WARNING]: Ansible is being run in a world writable directory (/mnt/d/apps/NeuroAnsible), ignoring it as an ansible.cfg source. For
more information see https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: workstations

playbook: deploy.yml

  play #1 (workstations): workstations  TAGS: []
      TASK TAGS: [R, afni, ants, civet, cobralab, containers, cpac, fastsurfer, fmriprep, freesurfer, fsl, minc, misc, modules, mrtrix, nvidia, python, resources]```

I may be doing something wrong.
gdevenyi commented 3 weeks ago

The problem is this:

[WARNING]: Ansible is being run in a world writable directory (/mnt/d/apps/NeuroAnsible), ignoring it as an ansible.cfg source. For
more information see https://docs.ansible.com/ansible/devel/reference_appendices/config.html#cfg-in-world-writable-dir
BECOME password:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: workstations

I don't know if this is you changing the permissions or some bad defaults for WSL directories.

Its ignoring the config file because of the permissions in the directory you're in, and hence its not using the supplied explicit localhost inventory file.

Try: ansible-playbook -i ./inventory deploy.yml

gdevenyi commented 3 weeks ago

It looks to me like you're not running in your home directory, but some "shared" directory with windows, which is the origin of your permission issues.

I suggest using normal linux-compliant directories for linux-tested things.

egarza commented 3 weeks ago

Ok, I now installed from my linux home. I get a different error now:


BECOME password:

PLAY [workstations] ****************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************
ok: [localhost]

TASK [mambaorg.micromamba : Check if micromamba already exists in /usr/local/bin/micromamba] ***************************************
ok: [localhost]

TASK [mambaorg.micromamba : Install bzip2] *****************************************************************************************
ok: [localhost]

TASK [mambaorg.micromamba : Make temporary directory for micromamba] ***************************************************************
changed: [localhost]

TASK [mambaorg.micromamba : Install micromamba] ************************************************************************************
changed: [localhost]

TASK [mambaorg.micromamba : Copy micromamba to destination] ************************************************************************
changed: [localhost]

TASK [mambaorg.micromamba : Remove temporary directory] ****************************************************************************
changed: [localhost]

TASK [mambaorg.micromamba : Check if root_prefix is defined but doesn't exist] *****************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Build first part of arguments] *************************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Build channel part of arguments] ***********************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Create a new conda environment] ************************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Create .condarc file] **********************************************************************************
skipping: [localhost]

TASK [science : Create quarantine paths] *******************************************************************************************
changed: [localhost] => (item=/opt/quarantine/software)
changed: [localhost] => (item=/opt/quarantine/modulefiles)

TASK [science : lmod] **************************************************************************************************************
changed: [localhost]

TASK [science : Fix environment variables for terminals/ssh in /etc/bash.bashrc] ***************************************************
changed: [localhost]

TASK [science : Set MODULEPATH and QUARANTINE_PATH] ********************************************************************************
changed: [localhost]

TASK [science : Copy module linker] ************************************************************************************************
changed: [localhost]

TASK [science : Create AFNI directories] *******************************************************************************************
changed: [localhost] => (item=/opt/quarantine/software/afni/2024-06-04/install)

TASK [science : Install AFNI dependencies] *****************************************************************************************
fatal: [localhost]: FAILED! => changed=false
  msg: No package matching 'libgfortran-11-dev' is available

PLAY RECAP *************************************************************************************************************************
localhost                  : ok=13   changed=10   unreachable=0    failed=1    skipped=5    rescued=0    ignored=0```

Tried to install that library but I cant seem to find it.
gdevenyi commented 3 weeks ago

https://github.com/gdevenyi/NeuroAnsible#prerequisites

22.04 and 24.04 have been tested with this playbook. 20.04 is unsupported. Please update your WSL.

egarza commented 3 weeks ago

Hi, so I upgraded to 22.04, here are the new errors:


BECOME password:

PLAY [workstations] ****************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [localhost]

TASK [mambaorg.micromamba : Check if micromamba already exists in /usr/local/bin/micromamba] ***************************
ok: [localhost]

TASK [mambaorg.micromamba : Install bzip2] *****************************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Make temporary directory for micromamba] ***************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Install micromamba] ************************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Copy micromamba to destination] ************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Remove temporary directory] ****************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Check if root_prefix is defined but doesn't exist] *****************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Build first part of arguments] *************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Build channel part of arguments] ***********************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Create a new conda environment] ************************************************************
skipping: [localhost]

TASK [mambaorg.micromamba : Create .condarc file] **********************************************************************
skipping: [localhost]

TASK [science : Create quarantine paths] *******************************************************************************
ok: [localhost] => (item=/opt/quarantine/software)
ok: [localhost] => (item=/opt/quarantine/modulefiles)

TASK [science : lmod] **************************************************************************************************
ok: [localhost]

TASK [science : Fix environment variables for terminals/ssh in /etc/bash.bashrc] ***************************************
ok: [localhost]

TASK [science : Set MODULEPATH and QUARANTINE_PATH] ********************************************************************
ok: [localhost]

TASK [science : Copy module linker] ************************************************************************************
ok: [localhost]

TASK [science : Create AFNI directories] *******************************************************************************
ok: [localhost] => (item=/opt/quarantine/software/afni/2024-06-04/install)

TASK [science : Install AFNI dependencies] *****************************************************************************
changed: [localhost]

TASK [science : Link GSL library for AFNI to work] *********************************************************************
changed: [localhost]

TASK [science : Download AFNI installer] *******************************************************************************
changed: [localhost]

TASK [science : Run AFNI Installer] ************************************************************************************
changed: [localhost]

TASK [science : Install module] ****************************************************************************************
changed: [localhost]

TASK [science : Create freesurfer directories] *************************************************************************
changed: [localhost] => (item=/opt/quarantine/software/freesurfer/7.4.1)
changed: [localhost] => (item=/opt/quarantine/software/freesurfer/7.4.1/install)

TASK [science : install freesurfer 7.4.1] ******************************************************************************
changed: [localhost]

TASK [science : Install module] ****************************************************************************************
changed: [localhost]

TASK [science : install freesurfer license] ****************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: If you are using a module and expect the file to exist on the remote, see the remote_src option
fatal: [localhost]: FAILED! => changed=false
  msg: |-
    Could not find or access 'files/license.txt'
    Searched in:
            /home/egarza/NeuroAnsible/roles/science/files/files/license.txt
            /home/egarza/NeuroAnsible/roles/science/files/license.txt
            /home/egarza/NeuroAnsible/roles/science/tasks/files/files/license.txt
            /home/egarza/NeuroAnsible/roles/science/tasks/files/license.txt
            /home/egarza/NeuroAnsible/files/files/license.txt
            /home/egarza/NeuroAnsible/files/license.txt on the Ansible Controller.
    If you are using a module and expect the file to exist on the remote, see the remote_src option
...ignoring

TASK [science : Create ANTs directories] *******************************************************************************
changed: [localhost] => (item=/opt/quarantine/software/ANTs/2.5.2/install)

TASK [science : Install ANTs] ******************************************************************************************
changed: [localhost]

TASK [science : Move ANTs install files] *******************************************************************************
changed: [localhost]

TASK [science : Install module] ****************************************************************************************
changed: [localhost]

TASK [science : Create ANTs directories] *******************************************************************************
changed: [localhost] => (item=/opt/quarantine/software/fsl/6.0.7.11/install)
changed: [localhost] => (item=/opt/quarantine/software/fsl/6.0.7.11/src)

TASK [science : download fsl] ******************************************************************************************
changed: [localhost]

TASK [science : install fsl] *******************************************************************************************
changed: [localhost]

TASK [science : Install module] ****************************************************************************************
changed: [localhost]

TASK [science : add apptainer ppa] *************************************************************************************
changed: [localhost] => (item=ppa:apptainer/ppa)

TASK [science : Install apptainer dependencies] ************************************************************************
changed: [localhost]

TASK [science : Create fmriprep directories] ***************************************************************************
changed: [localhost] => (item=/opt/quarantine/software/fmriprep/23.2.2/install)
changed: [localhost] => (item=/opt/quarantine/software/fmriprep/20.2.7/install)

TASK [science : Build fmriprep singularity container] ******************************************************************
fatal: [localhost]: FAILED! => changed=true
  cmd:
  - apptainer
  - build
  - /opt/quarantine/software/fmriprep/23.2.2/install/fmriprep
  - docker://nipreps/fmriprep:23.2.2
  delta: '0:00:00.019506'
  end: '2024-06-04 14:54:39.515305'
  msg: non-zero return code
  rc: 255
  start: '2024-06-04 14:54:39.495799'
  stderr: 'FATAL:   Unable to create build: failed to create build parent dir: stat /scratch: no such file or directory'
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

PLAY RECAP *************************************************************************************************************
localhost                  : ok=28   changed=19   unreachable=0    failed=1    skipped=10   rescued=0    ignored=1```
gdevenyi commented 3 weeks ago

You don't have an expected scratch directory. I've pushed an update to make it.

gdevenyi commented 3 weeks ago

Closing this, there is nothing special or unique to WSL, this is a regular install and needs no special support.