22317: Replace compute image base.sh with an Ansible playbook
[arvados.git] / tools / compute-images / ansible / roles / compute_singularity / tasks / main.yml
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 - name: Install Singularity dependencies
6   ansible.builtin.apt:
7     name:
8       - build-essential
9       - git
10       - libglib2.0-dev
11       - libseccomp-dev
12       - squashfs-tools
13
14 - name: Create Singularity build directory
15   become: no
16   ansible.builtin.tempfile:
17     state: directory
18     path: "{{ workdir }}"
19     prefix: singularity-build-
20   register: singularity_build
21
22 - name: Clone Singularity
23   become: no
24   ansible.builtin.git:
25     repo: "{{ compute_singularity_url }}"
26     dest: "{{ singularity_build.path }}"
27     version: "v{{ compute_singularity_version }}"
28
29 - name: Create Singularity VERSION file
30   become: no
31   ansible.builtin.copy:
32     content: |
33       {{ compute_singularity_version }}
34     dest: "{{ singularity_build.path }}/VERSION"
35     mode: 0644
36
37 - name: Install Go
38   ansible.builtin.unarchive:
39     src: "https://storage.googleapis.com/golang/go{{ compute_go_version }}.linux-amd64.tar.gz"
40     dest: "{{ singularity_build.path }}"
41     remote_src: yes
42
43 - name: Build Singularity
44   become: no
45   ansible.builtin.command:
46     cmd: "{{ item }}"
47     chdir: "{{ singularity_build.path }}"
48   environment:
49     PATH: "{{ singularity_build.path }}/go/bin:{{ ansible_env.PATH }}"
50   loop:
51     - ./mconfig --prefix=/opt/singularity
52     - env -C builddir make
53
54 - name: Install Singularity
55   ansible.builtin.command:
56     cmd: make install
57     chdir: "{{ singularity_build.path }}/builddir"
58   
59 - name: Clean Singularity build directory
60   ansible.builtin.file:
61     path: "{{ singularity_build.path }}"
62     state: absent
63
64 - name: Add Singularity commands to PATH
65   ansible.builtin.file:
66     state: link
67     src: "/opt/singularity/bin/{{ item }}"
68     dest: "/usr/local/bin/{{ item }}"
69   loop:
70     - run-singularity
71     - singularity
72
73 - name: Configure Singularity mksquashfs mem
74   ansible.builtin.lineinfile:
75     create: true
76     path: /opt/singularity/etc/singularity/singularity.conf
77     regexp: "^ *mksquashfs +mem *="
78     line: "mksquashfs mem = {{ compute_mksquashfs_mem }}"
79   when: compute_mksquashfs_mem is defined