From af019d0d6253e0e393e813013eb74a481a0b91dd Mon Sep 17 00:00:00 2001 From: Murat Aybars <39916128+aybarsm@users.noreply.github.com> Date: Wed, 25 Sep 2024 15:51:26 +0100 Subject: [PATCH] PRE - network vars optimisation --- roles/auth/handlers/main.yml | 4 ++-- roles/auth/tasks/main.yml | 4 ---- roles/auth/vars/main.yml | 20 +++++++++----------- roles/grub/tasks/main.yml | 5 ----- roles/network/handlers/main.yml | 6 +++--- roles/network/tasks/main.yml | 5 ----- roles/network/vars/main.yml | 13 ++++++++----- roles/package_manager/tasks/main.yml | 4 ---- roles/proxmox/tasks/main.yml | 4 ---- 9 files changed, 22 insertions(+), 43 deletions(-) diff --git a/roles/auth/handlers/main.yml b/roles/auth/handlers/main.yml index 0cfa6bc..f339a14 100644 --- a/roles/auth/handlers/main.yml +++ b/roles/auth/handlers/main.yml @@ -12,7 +12,7 @@ scope: "{{ service.scope | default(omit) }}" state: "{{ service.state | default(omit) }}" vars: - service: "{{ auth__ssh_changes_strategy | aybarsm.helper.replace_aliases(__ansible__config.modules.ansible.builtin.systemd_service.aliases) }}" + service: "{{ auth__ssh_changes_strategy | aybarsm.helper.replace_aliases(__ansible.modules.ansible_builtin_systemd_service.aliases) }}" register: auth__ssh_apply_changes_systemd_service listen: "auth__ssh_apply_changes" when: @@ -31,7 +31,7 @@ state: "{{ service.state | default(omit) }}" use: "{{ service.use | default(omit) }}" vars: - service: "{{ auth__ssh_changes_strategy | aybarsm.helper.replace_aliases(__ansible__config.modules.ansible.builtin.service.aliases) }}" + service: "{{ auth__ssh_changes_strategy | aybarsm.helper.replace_aliases(__ansible.modules.ansible_builtin_service.aliases) }}" register: auth__ssh_apply_changes_service listen: "auth__ssh_apply_changes" when: diff --git a/roles/auth/tasks/main.yml b/roles/auth/tasks/main.yml index e3da929..0364930 100644 --- a/roles/auth/tasks/main.yml +++ b/roles/auth/tasks/main.yml @@ -1,8 +1,4 @@ --- -- name: Load aybarsm ansible role main variables - ansible.builtin.include_vars: ../ansible/vars/main.yml - when: __ansible__config is undefined - - name: Include groups tasks ansible.builtin.include_tasks: file: groups.yml diff --git a/roles/auth/vars/main.yml b/roles/auth/vars/main.yml index 1d0dbc0..988eede 100644 --- a/roles/auth/vars/main.yml +++ b/roles/auth/vars/main.yml @@ -1,7 +1,12 @@ --- -auth__all: "{{ auth__host + auth__group + auth__default }}" +auth__all: "{{ (auth__host + auth__group + auth__default) | selectattr('type', 'defined') }}" __auth__config: + groups: + selectattr: + - when: [['type', 'eq', 'group']] + - when: "{{ __ansible.modules.ansible_builtin_group.uniques | product(['defined']) | list }}" + logic: or authorized_keys: selectattr: - when: @@ -9,19 +14,12 @@ __auth__config: - ['type', 'equalto', 'authorized_key'] - ['user', 'defined'] - ['key', 'defined'] - groups: - selectattr: - - when: - - ['type', 'defined'] - - ['type', 'equalto', 'group'] - - when: "{{ __ansible__config.modules.ansible_builtin_group.uniques | product(['defined']) | list }}" - logic: or users: selectattr: - when: - ['type', 'defined'] - ['type', 'equalto', 'user'] - - when: "{{ __ansible__config.modules.ansible_builtin_user.uniques | product(['defined']) | list }}" + - when: "{{ __ansible.modules.ansible_builtin_user.uniques | product(['defined']) | list }}" logic: or sshd_config: selectattr: @@ -58,13 +56,13 @@ __auth__config: auth__groups_all: "{{ auth__all | aybarsm.helper.selectattr(__auth__config.groups.selectattr) | - aybarsm.helper.unique_recursive(__ansible__config.modules.ansible_builtin_group.uniques) | + aybarsm.helper.unique_recursive(__ansible.modules.ansible_builtin_group.uniques) | default([]) }}" # Use lists_mergeby to combine all sections and sort by name for better output readability auth__users_all: "{{ [auth__default, auth__group, auth__host] | map('selectattr', 'type', 'defined') | map('selectattr', 'type', 'equalto', 'user') | - map('aybarsm.helper.replace_aliases', __ansible__config.modules.ansible.builtin.user.aliases) | + map('aybarsm.helper.replace_aliases', __ansible.modules.ansible_builtin_user.aliases) | map('selectattr', 'name', 'defined') | community.general.lists_mergeby('name', recursive=false, list_merge='prepend') | sort(attribute='name') | default([]) }}" diff --git a/roles/grub/tasks/main.yml b/roles/grub/tasks/main.yml index aa62c9c..a03fba7 100644 --- a/roles/grub/tasks/main.yml +++ b/roles/grub/tasks/main.yml @@ -1,9 +1,4 @@ --- -# Required for configuration management -- name: Load aybarsm ansible role main variables - ansible.builtin.include_vars: ../ansible/vars/main.yml - when: __ansible__config is undefined - - name: Include grub tasks ansible.builtin.include_tasks: file: grub.yml diff --git a/roles/network/handlers/main.yml b/roles/network/handlers/main.yml index f5f278a..0571730 100644 --- a/roles/network/handlers/main.yml +++ b/roles/network/handlers/main.yml @@ -12,7 +12,7 @@ scope: "{{ service.scope | default(omit) }}" state: "{{ service.state | default(omit) }}" vars: - service: "{{ network__interfaces_change_strategy | aybarsm.helper.replace_aliases(__ansible__config.modules.ansible.builtin.systemd_service.aliases) }}" + service: "{{ network__interfaces_change_strategy | aybarsm.helper.replace_aliases(__ansible.modules.ansible_builtin_systemd_service.aliases) }}" register: network__interfaces_apply_changes_systemd_service listen: "network__interfaces_apply_changes" when: @@ -31,7 +31,7 @@ state: "{{ service.state | default(omit) }}" use: "{{ service.use | default(omit) }}" vars: - service: "{{ network__interfaces_change_strategy | aybarsm.helper.replace_aliases(__ansible__config.modules.ansible.builtin.service.aliases) }}" + service: "{{ network__interfaces_change_strategy | aybarsm.helper.replace_aliases(__ansible.modules.ansible_builtin_service.aliases) }}" register: network__interfaces_apply_changes_service listen: "network__interfaces_apply_changes" when: @@ -69,7 +69,7 @@ scope: "{{ service.scope | default(omit) }}" state: "{{ service.state | default(omit) }}" vars: - service: "{{ network__systemd_change_strategy | aybarsm.helper.replace_aliases(__ansible__config.modules.ansible.builtin.systemd_service.aliases) }}" + service: "{{ network__systemd_change_strategy | aybarsm.helper.replace_aliases(__ansible.modules.ansible_builtin_systemd_service.aliases) }}" register: network__systemd_apply_changes_systemd_service listen: "network__systemd_apply_changes" when: diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml index ed30c4c..bcaac21 100644 --- a/roles/network/tasks/main.yml +++ b/roles/network/tasks/main.yml @@ -1,9 +1,4 @@ --- -# Required for configuration management -- name: Load aybarsm ansible role main variables - ansible.builtin.include_vars: ../ansible/vars/main.yml - when: __ansible__config is undefined - - name: Include systemd network tasks ansible.builtin.include_tasks: file: systemd.yml diff --git a/roles/network/vars/main.yml b/roles/network/vars/main.yml index 37cd74d..1436814 100644 --- a/roles/network/vars/main.yml +++ b/roles/network/vars/main.yml @@ -1,13 +1,15 @@ +network__all: "{{ (network__host + network__group + network__default) | selectattr('type', 'defined') | rejectattr('entry__skip', 'defined') }}" + ##### BEGIN: network systemd vars __network_systemd_available_change_modules: ['systemd_service', 'command'] __network__systemd_link_name: '{"type":"systemd","name":"__SYSTEMD_LINK_NAME__","children":[{"name":"Match","children":[{"name":"MACAddress","value":"__MAC_ADDRESS__"},{"name":"Type","value":"ether"}]},{"name":"Link","children":[{"name":"NamePolicy","value":""},{"name":"Name","value":"__LINK_NAME__"}]}]}' # REVIEW: There is room for optimisation __network__systemd_configs: >- {%- set __cfgs = [] -%} - {%- for cfg in [network__default, network__group, network__host] if cfg -%} - {%- set __cfgs_grp = (cfg | selectattr('type', 'defined') | selectattr('type', 'eq', 'systemd') | + {%- for cfg in network__all | reverse if cfg -%} + {%- set __cfgs_grp = (cfg | selectattr('type', 'eq', 'systemd') | selectattr('name', 'defined') | selectattr('name', 'search', '\\.(network|link|netdev)$') | selectattr('children', 'defined')) -%} - {%- set __cfgs_rnm = (cfg | selectattr('type', 'defined') | selectattr('type', 'eq', 'systemd_link_rename') | + {%- set __cfgs_rnm = (cfg | selectattr('type', 'eq', 'systemd_link_rename') | selectattr('name', 'defined') | selectattr('name', 'search', '^(?:[0-9]|[1-9][0-9])-[a-zA-Z]+\\d+\\.link$') | selectattr('macaddress', 'defined') | selectattr('macaddress', 'ansible.utils.mac') | default([])) -%} {%- if __cfgs_rnm | length > 0 -%} @@ -51,7 +53,8 @@ __network__interfaces_configs: >- {{ __configs_prepared }} # Sort interfaces by name to avoid unneccessary changes -network__interfaces_all: "{{ __network__interfaces_configs | +network__interfaces_all: "{{ network__all | reverse | + selectattr('type', 'eq', 'interface') | selectattr('name', 'defined') | community.general.lists_mergeby('name', recursive=true, list_merge='prepend') | aybarsm.helper.unique_recursive(attributes='name', recurse='inet') | aybarsm.helper.unique_recursive(attributes='name', recurse='inet6') | @@ -60,7 +63,7 @@ network__interfaces_all: "{{ __network__interfaces_configs | ##### BEGIN: network sysctl vars network__sysctl_all: "{{ (network__host + network__group + network__default) | selectattr('type', 'defined') | selectattr('type', 'equalto', 'sysctl') | - aybarsm.helper.replace_aliases(__ansible__config.modules.ansible.posix.sysctl.aliases) | + aybarsm.helper.replace_aliases(__ansible.modules.ansible_posix_sysctl.aliases) | selectattr('name', 'defined') | selectattr('value', 'defined') | unique(attribute='name') }}" ##### END: network sysctl vars diff --git a/roles/package_manager/tasks/main.yml b/roles/package_manager/tasks/main.yml index 579b164..95fc517 100644 --- a/roles/package_manager/tasks/main.yml +++ b/roles/package_manager/tasks/main.yml @@ -1,8 +1,4 @@ --- -- name: Load aybarsm ansible role main variables - ansible.builtin.include_vars: ../ansible/vars/main.yml - when: __ansible__config is undefined - - name: Load OS family related variables ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml" diff --git a/roles/proxmox/tasks/main.yml b/roles/proxmox/tasks/main.yml index e0f6a52..84bd1d2 100644 --- a/roles/proxmox/tasks/main.yml +++ b/roles/proxmox/tasks/main.yml @@ -1,8 +1,4 @@ --- -- name: Load aybarsm ansible role main variables - ansible.builtin.include_vars: ../ansible/vars/main.yml - when: __ansible__config is undefined - - name: Include set fact tasks ansible.builtin.include_tasks: file: set_facts.yml