refactor(global_defaults): add idempotency guards to normalization tasks
This commit is contained in:
@@ -1,21 +1,24 @@
|
|||||||
---
|
---
|
||||||
- name: Ensure hypervisor input is a dictionary
|
|
||||||
ansible.builtin.set_fact:
|
|
||||||
hypervisor: "{{ hypervisor | default({}) }}"
|
|
||||||
|
|
||||||
- name: Validate hypervisor input
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- hypervisor is mapping
|
|
||||||
- hypervisor.type is defined
|
|
||||||
- hypervisor.type | string | length > 0
|
|
||||||
fail_msg: "hypervisor must be a dictionary and hypervisor.type must be set (e.g. libvirt|proxmox|vmware|xen|none)."
|
|
||||||
quiet: true
|
|
||||||
|
|
||||||
- name: Normalize hypervisor configuration
|
- name: Normalize hypervisor configuration
|
||||||
vars:
|
when: hypervisor_cfg is not defined
|
||||||
merged: "{{ hypervisor_defaults | combine(hypervisor, recursive=True) }}"
|
block:
|
||||||
ansible.builtin.set_fact:
|
- name: Ensure hypervisor input is a dictionary
|
||||||
hypervisor_cfg: "{{ merged }}"
|
ansible.builtin.set_fact:
|
||||||
hypervisor_type: "{{ merged.type | string | lower }}"
|
hypervisor: "{{ hypervisor | default({}) }}"
|
||||||
no_log: true
|
|
||||||
|
- name: Validate hypervisor input
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- hypervisor is mapping
|
||||||
|
- hypervisor.type is defined
|
||||||
|
- hypervisor.type | string | length > 0
|
||||||
|
fail_msg: "hypervisor must be a dictionary and hypervisor.type must be set (e.g. libvirt|proxmox|vmware|xen|none)."
|
||||||
|
quiet: true
|
||||||
|
|
||||||
|
- name: Merge hypervisor defaults with input
|
||||||
|
vars:
|
||||||
|
merged: "{{ hypervisor_defaults | combine(hypervisor, recursive=True) }}"
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
hypervisor_cfg: "{{ merged }}"
|
||||||
|
hypervisor_type: "{{ merged.type | string | lower }}"
|
||||||
|
no_log: true
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
---
|
---
|
||||||
- name: Validate raw system input types
|
- name: Normalize system and disk configuration
|
||||||
ansible.builtin.include_tasks: _validate_input.yml
|
when: system_cfg is not defined
|
||||||
|
block:
|
||||||
|
- name: Validate raw system input types
|
||||||
|
ansible.builtin.include_tasks: _validate_input.yml
|
||||||
|
|
||||||
- name: Normalize system configuration
|
- name: Normalize system configuration
|
||||||
ansible.builtin.include_tasks: _normalize_system.yml
|
ansible.builtin.include_tasks: _normalize_system.yml
|
||||||
|
|
||||||
- name: Normalize disk configuration
|
- name: Normalize disk configuration
|
||||||
ansible.builtin.include_tasks: _normalize_disks.yml
|
ansible.builtin.include_tasks: _normalize_disks.yml
|
||||||
|
|||||||
Reference in New Issue
Block a user