refactor(bootstrap,configuration): add per-role _normalize.yml for platform resolution
This commit is contained in:
24
roles/bootstrap/tasks/_normalize.yml
Normal file
24
roles/bootstrap/tasks/_normalize.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
# Resolve the OS-specific variable namespace and task file for the bootstrap role.
|
||||||
|
- name: Validate OS is supported for bootstrap
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- os is defined
|
||||||
|
- os in bootstrap_os_task_map
|
||||||
|
fail_msg: >-
|
||||||
|
Unsupported OS '{{ os | default("undefined") }}' for bootstrap.
|
||||||
|
Supported: {{ bootstrap_os_task_map | dict2items | map(attribute='key') | join(', ') }}
|
||||||
|
quiet: true
|
||||||
|
vars:
|
||||||
|
bootstrap_os_task_map:
|
||||||
|
almalinux: _dnf_family.yml
|
||||||
|
alpine: alpine.yml
|
||||||
|
archlinux: archlinux.yml
|
||||||
|
debian: debian.yml
|
||||||
|
fedora: _dnf_family.yml
|
||||||
|
opensuse: opensuse.yml
|
||||||
|
rocky: _dnf_family.yml
|
||||||
|
rhel: rhel.yml
|
||||||
|
ubuntu: ubuntu.yml
|
||||||
|
ubuntu-lts: ubuntu.yml
|
||||||
|
void: void.yml
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
---
|
---
|
||||||
|
- name: Normalize bootstrap
|
||||||
|
ansible.builtin.import_tasks: _normalize.yml
|
||||||
|
|
||||||
- name: Create API filesystem mountpoints in installroot
|
- name: Create API filesystem mountpoints in installroot
|
||||||
when: is_rhel | bool
|
when: os_family == 'RedHat'
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: "/mnt/{{ item }}"
|
path: "/mnt/{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
@@ -11,7 +14,7 @@
|
|||||||
- sys
|
- sys
|
||||||
|
|
||||||
- name: Mount API filesystems into installroot
|
- name: Mount API filesystems into installroot
|
||||||
when: is_rhel | bool
|
when: os_family == 'RedHat'
|
||||||
ansible.posix.mount:
|
ansible.posix.mount:
|
||||||
src: "{{ item.src }}"
|
src: "{{ item.src }}"
|
||||||
path: "/mnt/{{ item.path }}"
|
path: "/mnt/{{ item.path }}"
|
||||||
|
|||||||
16
roles/configuration/tasks/_normalize.yml
Normal file
16
roles/configuration/tasks/_normalize.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
# Resolve platform-specific configuration for the target OS family.
|
||||||
|
# Sets _configuration_platform from configuration_platform_config[os_family].
|
||||||
|
- name: Resolve platform-specific configuration
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- os_family is defined
|
||||||
|
- os_family in configuration_platform_config
|
||||||
|
fail_msg: >-
|
||||||
|
Unsupported os_family '{{ os_family | default("undefined") }}'.
|
||||||
|
Extend configuration_platform_config in vars/main.yml.
|
||||||
|
quiet: true
|
||||||
|
|
||||||
|
- name: Set platform configuration
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
_configuration_platform: "{{ configuration_platform_config[os_family] }}"
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
- name: Resolve platform-specific configuration
|
- name: Normalize configuration
|
||||||
ansible.builtin.set_fact:
|
ansible.builtin.import_tasks: _normalize.yml
|
||||||
_configuration_platform: "{{ configuration_platform_config[os_family] }}"
|
|
||||||
|
|
||||||
- name: Include configuration tasks
|
- name: Include configuration tasks
|
||||||
when: configuration_task.when | default(true)
|
when: configuration_task.when | default(true)
|
||||||
|
|||||||
Reference in New Issue
Block a user