ansible-playbooks/roles/disks/tasks/partitioning.yml
2025-07-25 20:23:54 +02:00

43 lines
1.1 KiB
YAML

---
- name: Install sfdisk
package:
name: util-linux
state: present
changed_when: false
- name: Install hdparm
package:
name: hdparm
state: present
changed_when: false
- name: Load expected layout from file (controller side)
set_fact:
expected_layout: "{{ lookup('file', item.layout_file) }}"
changed_when: false
- name: Get current layout from remote
command: "sfdisk --dump {{ item.device }}"
register: current_layout
changed_when: false
- name: Compare expected vs current layout
vars:
current_clean: "{{ current_layout.stdout | trim | regex_replace('\\s+', ' ') }}"
expected_clean: "{{ expected_layout | trim | regex_replace('\\s+', ' ') }}"
set_fact:
layout_differs: "{{ current_clean != expected_clean }}"
changed_when: false
- name: Copy layout file to remote (only if different)
copy:
content: "{{ expected_layout }}"
dest: "/tmp/expected-{{ item.device | basename }}.sfdisk"
mode: "0644"
when: layout_differs
- name: Apply partition table using sfdisk
command: >
sfdisk {{ item.device }} < {{ item.layout_file }}
when: layout_differs