43 lines
1.1 KiB
YAML
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
|