ansible-playbooks/roles/disks/tasks/partitioning.yml
2025-11-02 21:18:15 +01:00

43 lines
1.2 KiB
YAML

---
- name: Install sfdisk
ansible.builtin.package:
name: util-linux
state: present
changed_when: false
- name: Install hdparm
ansible.builtin.package:
name: hdparm
state: present
changed_when: false
- name: Load expected layout from file (controller side)
ansible.builtin.set_fact:
expected_layout: "{{ lookup('file', item.layout_file) }}"
changed_when: false
- name: Get current layout from remote
ansible.builtin.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+', ' ') }}"
ansible.builtin.set_fact:
layout_differs: "{{ current_clean != expected_clean }}"
changed_when: false
- name: Copy layout file to remote (only if different)
ansible.builtin.copy:
content: "{{ expected_layout }}"
dest: "/tmp/expected-{{ item.device | basename }}.sfdisk"
mode: "0644"
when: layout_differs
- name: Apply partition table using sfdisk
ansible.builtin.command: >
sfdisk {{ item.device }} < {{ item.layout_file }}
when: layout_differs