Skip to content

Commit

Permalink
PRE - network vars optimisation
Browse files Browse the repository at this point in the history
  • Loading branch information
aybarsm committed Sep 25, 2024
1 parent fecdfa2 commit af019d0
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 43 deletions.
4 changes: 2 additions & 2 deletions roles/auth/handlers/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand Down
4 changes: 0 additions & 4 deletions roles/auth/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
20 changes: 9 additions & 11 deletions roles/auth/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
---
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:
- ['type', 'defined']
- ['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:
Expand Down Expand Up @@ -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([]) }}"
Expand Down
5 changes: 0 additions & 5 deletions roles/grub/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
6 changes: 3 additions & 3 deletions roles/network/handlers/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand Down Expand Up @@ -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:
Expand Down
5 changes: 0 additions & 5 deletions roles/network/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
13 changes: 8 additions & 5 deletions roles/network/vars/main.yml
Original file line number Diff line number Diff line change
@@ -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 -%}
Expand Down Expand Up @@ -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') |
Expand All @@ -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

Expand Down
4 changes: 0 additions & 4 deletions roles/package_manager/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -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"

Expand Down
4 changes: 0 additions & 4 deletions roles/proxmox/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -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
Expand Down

0 comments on commit af019d0

Please sign in to comment.