ansible-workstation/roles/base/tasks/archinstall/initialize_root_zvol.yaml
2024-11-22 10:45:41 -06:00

69 lines
2 KiB
YAML

---
- name: Check for existing zroot zfs volume
ansible.builtin.command: zpool list -Ho name zroot
register: zroot_check
ignore_errors: true
- when: zroot_check.rc != 0
block:
- name: Initialize disk device to id table
ansible.builtin.set_fact:
partition_device_to_ids: {}
- name: Create disk device to id table
ansible.builtin.set_fact:
partition_device_to_ids: >-
{{
partition_device_to_ids
| combine({ item.value: (partition_device_to_ids[item.value] | default([])) + [item.key] })
}}
with_items: "{{ base_partitions_by_id | dict2items }}"
- ansible.builtin.debug:
var: base_root_partitions | map('extract', partition_device_to_ids) | map('first')
- name: Create zroot volume
become: true
ansible.builtin.command: >-
zpool create -f -o ashift=12
-o autotrim=on
-O devices=off
-O relatime=on
-O xattr=sa
-O acltype=posixacl
-O normalization=formD
-O compression=lz4
-O canmount=off
-O mountpoint=none
-R /mnt
zroot {{ mirror }} {{ base_root_partitions | map('extract', partition_device_to_ids) | map('first') | list | join(' ') }}
vars:
mirror: "{{ 'mirror' if base_root_partitions | length > 1 else '' }}"
- name: Create zroot/ROOT and zroot/DATA volumes
community.general.zfs:
name: "zroot/{{ item }}"
state: present
register: zfs_zroot_root_volume
with_items: [ROOT, DATA]
- name: Create zroot/ROOT/arch
community.general.zfs:
name: zroot/ROOT/arch
state: present
extra_zfs_properties:
canmount: noauto
mountpoint: /
when: zfs_zroot_root_volume.changed
- name: Create zroot/home
community.general.zfs:
name: zroot/DATA/home
state: present
extra_zfs_properties:
mountpoint: /home
- name: Export zroot pool
ansible.builtin.command: zpool export zroot
- name: Import zroot pool (-R /mnt)
ansible.builtin.command: zpool import -R /mnt zroot -N