--- - name: Partition install drive block: - name: Prepare partitions block: - name: Disable swap ansible.builtin.command: swapoff -a register: partitioning_swapoff_result changed_when: partitioning_swapoff_result.rc == 0 failed_when: false - name: Find mounts under /mnt ansible.builtin.command: findmnt -R /mnt -n -o TARGET register: partitioning_mounted_paths changed_when: false failed_when: false - name: Unmount /mnt mounts when: partitioning_mounted_paths.stdout_lines | length > 0 ansible.posix.mount: path: "{{ item }}" state: unmounted loop: "{{ partitioning_mounted_paths.stdout_lines | reverse }}" loop_control: label: "{{ item }}" failed_when: false - name: Remove LVM volume group community.general.lvg: vg: "{{ partitioning_vg_name }}" state: absent force: true failed_when: false - name: Close LUKS mapper when: system_cfg.luks.enabled | bool community.crypto.luks_device: name: "{{ system_cfg.luks.mapper }}" state: closed failed_when: false - name: Remove LUKS mapper device when: system_cfg.luks.enabled | bool ansible.builtin.command: >- dmsetup remove --force --retry {{ system_cfg.luks.mapper }} register: partitioning_dmsetup_remove changed_when: partitioning_dmsetup_remove.rc == 0 failed_when: false - name: Remove LUKS signatures when: system_cfg.luks.enabled | bool community.crypto.luks_device: device: "{{ partitioning_luks_device }}" state: absent failed_when: false - name: Wipe filesystem signatures ansible.builtin.shell: >- find /dev -wholename "{{ install_drive }}*" -exec wipefs --force --all {} \; register: partitioning_wipefs_result changed_when: partitioning_wipefs_result.rc == 0 failed_when: false - name: Refresh kernel partition table ansible.builtin.command: "{{ item }}" loop: - "partprobe {{ install_drive }}" - "blockdev --rereadpt {{ install_drive }}" - "udevadm settle" register: partitioning_partprobe_result changed_when: false failed_when: false - name: Define partitions block: - name: Create partition layout community.general.parted: device: "{{ install_drive }}" label: gpt number: "{{ item.number }}" part_end: "{{ item.part_end | default(omit) }}" part_start: "{{ item.part_start | default(omit) }}" name: "{{ item.name }}" flags: "{{ item.flags | default(omit) }}" state: present loop: "{{ partitioning_layout }}" loop_control: label: "{{ item.name }}" rescue: - name: Refresh kernel partition table after failure ansible.builtin.command: "{{ item }}" loop: - "partprobe {{ install_drive }}" - "blockdev --rereadpt {{ install_drive }}" - "udevadm settle" register: partitioning_partprobe_retry changed_when: false failed_when: false - name: Retry partition layout community.general.parted: device: "{{ install_drive }}" label: gpt number: "{{ item.number }}" part_end: "{{ item.part_end | default(omit) }}" part_start: "{{ item.part_start | default(omit) }}" name: "{{ item.name }}" flags: "{{ item.flags | default(omit) }}" state: present loop: "{{ partitioning_layout }}" loop_control: label: "{{ item.name }}" - name: Settle partition table ansible.builtin.command: "{{ item }}" loop: - "partprobe {{ install_drive }}" - "udevadm settle" register: partitioning_partprobe_settle changed_when: false failed_when: false