refactor(vars): add system/hypervisor dict inputs
This commit is contained in:
42
roles/global_defaults/tasks/hypervisor.yml
Normal file
42
roles/global_defaults/tasks/hypervisor.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
- name: Validate hypervisor dict input
|
||||
when: hypervisor is mapping
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- hypervisor.type is defined
|
||||
- hypervisor.type | string | length > 0
|
||||
fail_msg: "hypervisor.type is required when hypervisor is a dictionary"
|
||||
quiet: true
|
||||
|
||||
- name: Normalize hypervisor configuration
|
||||
vars:
|
||||
hypervisor_input: "{{ hypervisor if hypervisor is mapping else {} }}"
|
||||
hypervisor_type_legacy: "{{ (hypervisor | default('none')) if hypervisor is string else '' }}"
|
||||
hypervisor_legacy_cfg:
|
||||
type: "{{ hypervisor_type_legacy }}"
|
||||
url: "{{ hypervisor_url | default('') }}"
|
||||
username: "{{ hypervisor_username | default('') }}"
|
||||
password: "{{ hypervisor_password | default('') }}"
|
||||
node: "{{ hypervisor_node | default('') }}"
|
||||
storage: "{{ hypervisor_storage | default('') }}"
|
||||
datacenter: "{{ hypervisor_datacenter | default('') }}"
|
||||
cluster: "{{ hypervisor_cluster | default('') }}"
|
||||
validate_certs: "{{ hypervisor_validate_certs | default(false) | bool }}"
|
||||
hypervisor_cfg_effective: >-
|
||||
{{
|
||||
hypervisor_defaults
|
||||
| combine(hypervisor_legacy_cfg, recursive=True)
|
||||
| combine(hypervisor_input, recursive=True)
|
||||
}}
|
||||
ansible.builtin.set_fact:
|
||||
hypervisor_cfg: "{{ hypervisor_cfg_effective }}"
|
||||
hypervisor: "{{ hypervisor_cfg_effective.type | string | lower }}"
|
||||
hypervisor_url: "{{ hypervisor_cfg_effective.url }}"
|
||||
hypervisor_username: "{{ hypervisor_cfg_effective.username }}"
|
||||
hypervisor_password: "{{ hypervisor_cfg_effective.password }}"
|
||||
hypervisor_node: "{{ hypervisor_cfg_effective.node }}"
|
||||
hypervisor_storage: "{{ hypervisor_cfg_effective.storage }}"
|
||||
hypervisor_datacenter: "{{ hypervisor_cfg_effective.datacenter }}"
|
||||
hypervisor_cluster: "{{ hypervisor_cfg_effective.cluster }}"
|
||||
hypervisor_validate_certs: "{{ hypervisor_cfg_effective.validate_certs | bool }}"
|
||||
changed_when: false
|
||||
Reference in New Issue
Block a user