From 69b44fd8dc98a2e96bfb4faf115256254f9f7691 Mon Sep 17 00:00:00 2001 From: Murat Aybars <39916128+aybarsm@users.noreply.github.com> Date: Sat, 6 Jul 2024 13:52:03 +0100 Subject: [PATCH] Ansible package manager restructure stage #1 --- roles/ansible/tasks/main.yml | 2 + roles/ansible/vars/main.yml | 2 +- roles/package_manager/tasks/main.yml | 16 ++- .../apt/sources.list.d/temp.disabled.list.j2 | 2 - roles/package_manager/vars/common.yml | 33 +++--- roles/package_manager/vars/debian.yml | 105 +++++++----------- roles/package_manager/vars/redhat.yml | 4 +- 7 files changed, 70 insertions(+), 94 deletions(-) delete mode 100644 roles/package_manager/templates/etc/apt/sources.list.d/temp.disabled.list.j2 diff --git a/roles/ansible/tasks/main.yml b/roles/ansible/tasks/main.yml index ed97d53..e5970b8 100644 --- a/roles/ansible/tasks/main.yml +++ b/roles/ansible/tasks/main.yml @@ -1 +1,3 @@ --- +- name: Load role related variables + ansible.builtin.include_vars: main.yml \ No newline at end of file diff --git a/roles/ansible/vars/main.yml b/roles/ansible/vars/main.yml index 691c37f..6e5e958 100644 --- a/roles/ansible/vars/main.yml +++ b/roles/ansible/vars/main.yml @@ -14,7 +14,7 @@ __ansible__config: aliases: update_cache: ['update-cache'] ansible_builtin_apt_key: - uniques: ['keyserver', 'url', 'id', 'file'] + uniques: ['keyserver', 'url', 'id', 'file' ,'data'] ansible_builtin_dnf: uniques: ['name'] aliases: diff --git a/roles/package_manager/tasks/main.yml b/roles/package_manager/tasks/main.yml index aaaf99e..872686b 100644 --- a/roles/package_manager/tasks/main.yml +++ b/roles/package_manager/tasks/main.yml @@ -1,15 +1,13 @@ --- -# FIXME: Commented out for testing. Uncomment after testing. -# - name: Load OS related variables -# ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml" +- name: Import aybarsm linux ansible role + ansible.builtin.import_role: + name: aybarsm.linux.ansible -# HACK: This is a workaround to load the OS related variables for debug -# - name: Load OS related variables -# ansible.builtin.include_vars: test.yml +- name: Load OS family related variables + ansible.builtin.include_vars: "{{ ansible_os_family | lower }}.yml" -# FIXME: Commented out for testing. Uncomment after testing. -# - name: Load common variables structured on OS related variables -# ansible.builtin.include_vars: common.yml +- name: Load common variables structured on OS related variables + ansible.builtin.include_vars: common.yml # FIXME: Commented out for testing. Uncomment after testing. # - name: Import aybarsm linux ansible role diff --git a/roles/package_manager/templates/etc/apt/sources.list.d/temp.disabled.list.j2 b/roles/package_manager/templates/etc/apt/sources.list.d/temp.disabled.list.j2 deleted file mode 100644 index c4814f9..0000000 --- a/roles/package_manager/templates/etc/apt/sources.list.d/temp.disabled.list.j2 +++ /dev/null @@ -1,2 +0,0 @@ -# {{ ansible_managed }} -# This file is temproray disabled \ No newline at end of file diff --git a/roles/package_manager/vars/common.yml b/roles/package_manager/vars/common.yml index a6752e4..6e1194e 100644 --- a/roles/package_manager/vars/common.yml +++ b/roles/package_manager/vars/common.yml @@ -1,23 +1,24 @@ -package_manager__default: [1,2,3] +__package_manager__clean_upgrade_modes: "{{ ['clean_'] | product(__package_manager__upgrade_modes) | map('join') }}" + package_manager__packages_all: "{{ package_manager__all | - aybarsm.helper.selectattr(__package_manager__package_config.selectattr) | - ansible.utils.replace_keys(target=__package_manager__package_config.replace_keys) | - aybarsm.helper.setattr(__package_manager__package_config.setattr) | - aybarsm.helper.splitattr(__package_manager__package_config.splitattr) | - aybarsm.helper.unique_recursive(__package_manager__package_config.uniques) | - aybarsm.helper.joinattr(__package_manager__package_config.joinattr) | default([]) }}" + aybarsm.helper.selectattr(__package_manager__config.packages.selectattr) | + aybarsm.helper.replace_aliases(__package_manager__config.packages.replace_aliases) | + aybarsm.helper.splitattr(__package_manager__config.packages.splitattr) | + aybarsm.helper.unique_recursive(attribute=__package_manager__config.packages.uniques) | + aybarsm.helper.joinattr(__package_manager__config.packages.joinattr) | + default([]) }}" package_manager__repo_keys_all: "{{ package_manager__all | - aybarsm.helper.selectattr(__package_manager__repo_key_config.selectattr) | - aybarsm.helper.unique_recursive(__package_manager__repo_key_config.uniques) | - aybarsm.helper.setattr(__package_manager__repo_key_config.setattr) | default([]) }}" + aybarsm.helper.selectattr(__package_manager__config.repo_keys.selectattr) | + aybarsm.helper.unique_recursive(__package_manager__config.repo_keys.uniques) | + default([]) }}" package_manager__repos_all: "{{ package_manager__all | - aybarsm.helper.selectattr(__package_manager__repo_config.selectattr) | - aybarsm.helper.unique_recursive(__package_manager__repo_config.uniques) | - aybarsm.helper.setattr(__package_manager__repo_config.setattr) | default([]) }}" + aybarsm.helper.selectattr(__package_manager__config.repos.selectattr) | + aybarsm.helper.unique_recursive(__package_manager__config.repos.uniques) | + default([]) }}" package_manager__repo_lists_all: "{{ package_manager__all | - aybarsm.helper.selectattr(__package_manager__repo_key_config.selectattr) | - aybarsm.helper.unique_recursive(__package_manager__repo_key_config.uniques) | - aybarsm.helper.setattr(__package_manager__repo_key_config.setattr) | default([]) }}" \ No newline at end of file + aybarsm.helper.selectattr(__package_manager__config.repo_lists.selectattr) | + aybarsm.helper.unique_recursive(__package_manager__config.repo_lists.uniques) | + default([]) }}" \ No newline at end of file diff --git a/roles/package_manager/vars/debian.yml b/roles/package_manager/vars/debian.yml index abfbdab..2db56bf 100644 --- a/roles/package_manager/vars/debian.yml +++ b/roles/package_manager/vars/debian.yml @@ -1,74 +1,49 @@ -package_manager__repo_list_templates: - - type: default - dest: /etc/apt/sources.list - src: etc/apt/default.sources.list.j2 - -package_manager__repo_list_dir: /etc/apt/sources.list.d -package_manager__repo_list_use_regex: true -package_manager__repo_list_patterns: [".*\\.list$"] - -package_manager__upgrade_dpkg_options: '' -package_manager__upgrade_update_repo_cache: true - __package_manager__upgrade_modes: ['full', 'safe', 'yes', 'dist'] -__package_manager__clean_upgrade_modes: "{{ ['clean_'] | product(__package_manager__upgrade_modes) | map('join') }}" -__package_manager__uniques_package: ['name', 'package', 'pkg'] -__package_manager__uniques_repo: ['repo'] -__package_manager__uniques_repo_key: ['keyserver', 'url', 'id', 'data', 'file'] - -__package_manager__package_config: - uniques: "{{ __package_manager__uniques_package }}" - selectattr: +__package_manager__config: + packages: + selectattr: - when: - ['type', 'defined'] - ['type', 'equalto', 'package'] - - when: "{{ __package_manager__uniques_package | product(['defined']) | list }}" + - when: "{{ ['name', 'package', 'pkg'] | product(['defined']) | list }}" logic: or - replace_keys: - - before: package - after: name - - before: pkg - after: name - setattr: - - attribute: state - value: present - when: - - ['state', 'undefined'] - splitattr: - - srcAttr: name - dstAttr: version - search: '=' - overwrite: true - joinattr: - - leftAttr: name - rightAttr: version - join: '=' - overwrite: true - deleteSrcAttrs: true - -__package_manager__repo_config: - uniques: "{{ __package_manager__uniques_repo }}" - selectattr: + replace_aliases: + name: ['package', 'pkg'] + splitattr: + - srcAttr: name + dstAttr: version + search: '=' + overwrite: true + uniques: ['name'] + joinattr: + - leftAttr: name + rightAttr: version + join: '=' + overwrite: true + deleteSrcAttrs: true + repo_keys: + selectattr: - when: - - ['type', 'defined'] - - ['type', 'equalto', 'repo'] - - when: "{{ __package_manager__uniques_repo | product(['defined']) }}" + - ['type', 'defined'] + - ['type', 'equalto', 'repo_key'] + - when: "{{ ['keyserver', 'url', 'id', 'file', 'data'] | product(['defined']) | list }}" logic: or - setattr: - - attribute: state - value: present - overwrite: false - -__package_manager__repo_key_config: - uniques: "{{ __package_manager__uniques_repo_key }}" - selectattr: + uniques: ['keyserver', 'url', 'id', 'file', 'data'] + repos: + selectattr: - when: - - ['type', 'defined'] - - ['type', 'equalto', 'repo_key'] - - when: "{{ __package_manager__uniques_repo_key | product(['defined']) }}" - logic: or - setattr: - - attribute: state - value: present - overwrite: false + - ['type', 'defined'] + - ['type', 'equalto', 'repo'] + - ['repo', 'defined'] + uniques: ['repo'] + repo_lists: + selectattr: + - when: + - ['type', 'defined'] + - ['type', 'equalto', 'repo_list'] + - ['dest', 'defined'] + - ['src', 'defined'] + - ['source_module', 'defined'] + - ['source_module', 'in', ['copy', 'template']] + uniques: ['dest'] diff --git a/roles/package_manager/vars/redhat.yml b/roles/package_manager/vars/redhat.yml index 8f16cb7..f170240 100644 --- a/roles/package_manager/vars/redhat.yml +++ b/roles/package_manager/vars/redhat.yml @@ -1,9 +1,11 @@ +__package_manager__upgrade_modes: ['full'] + __package_manager__has_main_repo_list: false package_manager__repo_list_dir: /etc/yum.repos.d package_manager__repo_list_use_regex: true package_manager__repo_list_patterns: [".*\\.repo$"] -__package_manager__upgrade_modes: ['full'] + __package_manager__clean_upgrade_modes: "{{ ['clean_'] | product(__package_manager__upgrade_modes) | map('join') }}" __package_manager__package_state_config: