119 lines
4.0 KiB
YAML
119 lines
4.0 KiB
YAML
---
|
|
- 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"
|
|
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"
|
|
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"
|
|
changed_when: false
|
|
failed_when: false
|