|
1 | 1 | --- |
2 | 2 | - name: Prepare for VM build |
3 | | - |
4 | 3 | hosts: "{{ build_hosts | default('vagrant-ssh') }}" |
5 | | - gather_facts: false |
6 | 4 |
|
7 | 5 | pre_tasks: |
8 | 6 | - name: Test configuration |
|
17 | 15 |
|
18 | 16 | # Install headers for guest-additions. Use kernel-specific package because |
19 | 17 | # linux-headers-generic can be broken on ARM64 (depends on non-existent version). |
20 | | - - name: Get kernel version |
21 | | - tags: [init] |
22 | | - when: "inventory_hostname.startswith('vagrant')" |
23 | | - ansible.builtin.command: uname -r |
24 | | - register: uname |
25 | | - changed_when: false |
26 | | - |
27 | 18 | - name: Install linux-headers for guest-additions |
28 | 19 | tags: [init] |
29 | 20 | when: "inventory_hostname.startswith('vagrant')" |
30 | 21 | become: true |
31 | 22 | ansible.builtin.apt: |
32 | 23 | update_cache: true |
33 | 24 | cache_valid_time: 86400 |
34 | | - name: "linux-headers-{{ uname.stdout }}" |
| 25 | + name: "linux-headers-{{ ansible_kernel }}" |
35 | 26 |
|
36 | 27 | - name: Make local dist folder |
37 | 28 | tags: [init] |
|
53 | 44 | - name: Update system package managers (apt, pip) |
54 | 45 | tags: [init] |
55 | 46 | ansible.builtin.include_tasks: local/tasks/ensure-apt-pip.yml |
| 47 | + |
56 | 48 | - name: "Add QM user '{{ vm_user }}'" |
57 | | - tags: [add_user, ci_test] |
| 49 | + tags: [add_user] |
58 | 50 | ansible.builtin.import_tasks: local/tasks/add-qm-user.yml |
| 51 | + |
59 | 52 | - name: "Add release notes section for the operating system" |
60 | 53 | tags: [release_notes] |
61 | 54 | ansible.builtin.import_tasks: local/tasks/release-notes-system.yml |
| 55 | + |
62 | 56 | - name: Customise bash terminal for QM |
63 | 57 | tags: [customise-bash] |
64 | 58 | become: true |
65 | 59 | become_user: "{{ vm_user }}" |
66 | 60 | ansible.builtin.import_tasks: local/tasks/customise-bash.yml |
| 61 | + |
67 | 62 | - name: Install common text editors |
68 | 63 | tags: [editors] |
69 | 64 | ansible.builtin.import_role: |
|
72 | 67 | editors_vm_user: "{{ vm_user }}" |
73 | 68 |
|
74 | 69 | - name: Add desktop GUI |
75 | | - tags: [ubuntu_desktop] |
| 70 | + tags: [ubuntu_desktop, ci_skip] |
76 | 71 | when: not vm_headless |
77 | 72 | become: true |
78 | 73 | block: |
|
96 | 91 | ubuntu_desktop_wm_package: "{{ vm_wm_package }}" |
97 | 92 |
|
98 | 93 | - name: Customise GUI for QM |
99 | | - tags: [customise-gui] |
| 94 | + tags: [customise-gui, ci_skip] |
100 | 95 | when: not vm_headless |
101 | 96 | become: true |
102 | 97 | become_user: "{{ vm_user }}" |
|
144 | 139 | become: true |
145 | 140 | become_user: "{{ root_user }}" |
146 | 141 | ansible.builtin.import_tasks: local/tasks/rabbitmq.yml |
| 142 | + |
147 | 143 | - name: Install PostrgeSQL server service |
148 | 144 | tags: [postgresql] |
149 | 145 | become: true |
150 | 146 | become_user: "{{ root_user }}" |
151 | 147 | ansible.builtin.import_tasks: local/tasks/postgresql.yml |
| 148 | + |
152 | 149 | - name: Install conda+mamba |
153 | 150 | tags: [conda] |
154 | 151 | ansible.builtin.import_role: |
|
178 | 175 | # note here we specify exact versions of libxc/openmpi/mpich |
179 | 176 | # this is because we want conda to re-use as many packages as possible |
180 | 177 | # since re-used packages do not incur more disk memory usage |
181 | | - # - {name: abinit, pkgs: [abinit=9, libxc=4.3.4, mpich=4.0.3]} |
182 | | - # - {name: cp2k, pkgs: [cp2k=9.*=*openmpi*, libxc=5.2.3, openmpi=4.1.2]} |
183 | | - # - {name: fleur, pkgs: [fleur=6, libxc=5.2.3, openmpi=4.1.2]} |
| 178 | + # Architecture support: x86_64 only |
| 179 | + - { name: abinit, pkgs: [abinit=9, libxc=4.3.4, mpich=4.0.3], arch: [x86_64] } |
| 180 | + - { name: cp2k, pkgs: [cp2k=9.*=*openmpi*, libxc=5.2.3, openmpi=4.1.2], arch: [x86_64] } |
| 181 | + - { name: fleur, pkgs: [fleur=6, libxc=5.2.3, openmpi=4.1.2], arch: [x86_64] } |
| 182 | + - { name: wannier90, pkgs: [wannier90=3, libxc=5.2.3, openmpi=4.1.2], arch: [x86_64] } |
| 183 | + # Architecture support: x86_64 and aarch64 |
184 | 184 | - { name: nwchem, pkgs: [nwchem] } |
185 | 185 | - { name: qespresso, pkgs: [qe] } |
186 | | - # - {name: siesta, pkgs: [siesta, libxc=5.2.3, openmpi=4.1.2]} |
187 | 186 | - { name: yambo, pkgs: [yambo] } |
188 | | - # - {name: wannier90, pkgs: [wannier90=3, libxc=5.2.3, openmpi=4.1.2]} |
189 | 187 | - { name: visualise, pkgs: [jmol, gnuplot] } |
| 188 | + # Note: siesta supports x86_64 and osx-arm64 but NOT linux-aarch64 |
| 189 | + # Uncomment if needed, but will fail on linux-aarch64 |
| 190 | + # - {name: siesta, pkgs: [siesta, libxc=5.2.3, openmpi=4.1.2], arch: [x86_64]} |
| 191 | + when: item.arch is not defined or ansible_architecture in item.arch |
190 | 192 | loop_control: |
191 | 193 | label: "{{ item.name }}" |
192 | 194 |
|
|
222 | 224 | content: 'eval "$(_VERDI_COMPLETE=bash_source verdi)"' |
223 | 225 | mode: "0644" |
224 | 226 |
|
225 | | - - name: Create an aiida-profile |
| 227 | + - name: Create an aiida-profile (full with PostgreSQL) |
226 | 228 | tags: [aiida-profile] |
227 | 229 | become: true |
228 | 230 | become_user: "{{ vm_user }}" |
|
243 | 245 | db_password: "ne9N_LDK-*JSS" |
244 | 246 | daemon_service: true |
245 | 247 |
|
| 248 | + # Alternative: CI lightweight profile with SQLite (if PostgreSQL doesn't work) |
| 249 | + # - name: Create an aiida-profile (CI lightweight with SQLite) |
| 250 | + # when: inventory_hostname == 'docker-ci' |
| 251 | + # become: true |
| 252 | + # become_user: "{{ vm_user }}" |
| 253 | + # ansible.builtin.shell: | |
| 254 | + # ~/.conda/bin/conda run -n {{ aiida_conda_env }} verdi presto -p {{ aiida_profile }} |
| 255 | + # args: |
| 256 | + # creates: "~/.aiida/config.json" |
| 257 | + |
246 | 258 | - name: Create AiiDA Jupyter service |
247 | | - tags: [aiida-jupyter] |
| 259 | + tags: [aiida-jupyter, ci_skip] |
248 | 260 | become: true |
249 | 261 | become_user: "{{ vm_user }}" |
250 | 262 | ansible.builtin.import_tasks: local/tasks/aiida-jupyter.yml |
| 263 | + |
251 | 264 | - name: "Create AiiDA computers" |
252 | 265 | tags: [aiida-computers] |
253 | 266 | become: true |
|
0 commit comments