-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
role: package_manager: upgrade tasks redesign
- Loading branch information
Showing
5 changed files
with
193 additions
and
146 deletions.
There are no files selected for viewing
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,150 +1,194 @@ | ||
--- | ||
- name: Deploy default main repo list files (Clean Upgrade) | ||
become: true | ||
ansible.builtin.template: | ||
src: "{{ item.src }}" | ||
dest: "{{ item.dest }}" | ||
backup: "{{ item.backup | default(true) | bool }}" | ||
loop: "{{ package_manager__main_repo_list_files }}" | ||
vars: | ||
default_repo_lists: "{{ package_manager__main_repo_list_files | selectattr('type', 'defined') | selectattr('type', 'equalto', 'default') | list }}" | ||
register: package_manager__upgrade_ | ||
when: | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
- package_manager__main_repo_list_files is defined | ||
- package_manager__main_repo_list_files | selectattr('type', 'defined') | selectattr('type', 'equalto', 'default') | length > 0 | ||
|
||
- name: Find repo source files (Clean Upgrade) | ||
- name: Find repo list files (Clean Upgrade) | ||
become: true | ||
ansible.builtin.find: | ||
paths: "{{ package_manager__repo_list_dir }}" | ||
patterns: "{{ package_manager__repo_list_patterns }}" | ||
use_regex: "{{ package_manager__repo_list_use_regex | bool }}" | ||
register: package_manager__upgrade_find_repo_list_files | ||
when: | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
|
||
- name: Set facts for backup and restore (Clean Upgrade) | ||
ansible.builtin.set_fact: | ||
__package_manager__clean_upgrade_backup: "{{ {'src': backup_src, 'dest': backup_dest} | aybarsm.helper.to_list_of_dicts }}" | ||
__package_manager__clean_upgrade_restore: "{{ {'src': backup_dest, 'dest': backup_src} | aybarsm.helper.to_list_of_dicts }}" | ||
vars: | ||
main_repo_list: "{{ | ||
(package_manager__upgrade_main_repo_list_stat.stat.exist is defined and package_manager__upgrade_main_repo_list_stat.stat.exist is truthy ) | | ||
ternary( | ||
[package_manager__upgrade_main_repo_list_stat.stat.path], | ||
[] | ||
) | ||
}}" | ||
repo_lists: "{{ (package_manager__upgrade_find_repo_list_files.files.length > 0) | | ||
ternary( | ||
(package_manager__upgrade_find_repo_list_files.files | map(attribute='path') | list), | ||
[] | ||
) | ||
}}" | ||
backup_src: "{{ main_repo_list + repo_lists }}" | ||
backup_dest: "{{ backup_src | map('regex_replace', '^(.*)$', '\\1.' + now().utcnow().strftime('%Y%m%dT%H%M%S.%fZ') + '.disabled') }}" | ||
register: package_manager__upgrade_set_facts_backup_restore | ||
register: package_manager__upgrade_clean_find_repo_list_files | ||
when: | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
- package_manager__upgrade_main_repo_list_stat.stat.exist is defined | ||
|
||
- name: Copy (Backup) repo list files and directory (Clean Upgrade) | ||
- name: Deploy default repo lists by copy (Clean Upgrade) | ||
become: true | ||
ansible.builtin.copy: | ||
src: "{{ item.src }}" | ||
dest: "{{ item.dest }}" | ||
remote_src: true | ||
loop: "{{ __package_manager__clean_upgrade_backup }}" | ||
register: package_manager__upgrade_repo_list_backup | ||
when: | ||
backup: true | ||
loop: "{{ __package_manager__repo_list_defaults_copy }}" | ||
register: package_manager__upgrade_clean_default_repo_list_copies | ||
when: | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
- __package_manager__clean_upgrade_backup is defined | ||
- __package_manager__clean_upgrade_backup | length > 0 | ||
- __package_manager__repo_list_defaults_copy | length > 0 | ||
|
||
- name: Temproarily remove repo list files and directory (Clean Upgrade) | ||
# TODO: Gather backup file paths | ||
- name: Deploy default repo lists by template (Clean Upgrade) | ||
become: true | ||
ansible.builtin.file: | ||
path: "{{ item.src }}" | ||
state: absent | ||
loop: "{{ __package_manager__clean_upgrade_backup }}" | ||
register: package_manager__upgrade_repo_list_remove | ||
ansible.builtin.template: | ||
src: "{{ item.src }}" | ||
dest: "{{ item.dest }}" | ||
backup: true | ||
loop: "{{ repo_list_templates }}" | ||
vars: | ||
repo_lists_default: "{{ __package_manager__repo_list_defaults_template | default([]) }}" | ||
repo_list_additonals_src: "{{ package_manager__upgrade_clean_find_repo_list_files.files | map(attribute='path') | default([]) }}" | ||
repo_lists_additional: "{{ (repo_list_additonals_src | length > 0) | | ||
ternary( | ||
{'dest': repo_list_additonals_src} | aybarsm.helper.to_list_of_dicts(defaults={'src': package_manager__repo_list_disabled_template}), | ||
[]) }}" | ||
repo_list_templates: "{{ repo_lists_default + repo_lists_additional }}" | ||
register: package_manager__upgrade_clean_default_repo_list_templates | ||
when: | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
- __package_manager__clean_upgrade_backup is defined | ||
- __package_manager__clean_upgrade_backup | length > 0 | ||
- (__package_manager__repo_list_defaults_template | length > 0) or (package_manager__upgrade_clean_find_repo_list_files.files | default([]) | length > 0) | ||
|
||
- name: Perform DEB package upgrade via APT | ||
become: true | ||
ansible.builtin.apt: | ||
update_cache: "{{ update_cache }}" | ||
upgrade: "{{ upgrade_mode }}" | ||
dpkg_options: "{{ package_manager__upgrade_dpkg_options | default(omit) }}" | ||
vars: | ||
upgrade_mode: "{{ package_manager__upgrade_mode | regex_replace('clean_', '') }}" | ||
update_cache: "{{ (__package_manager__upgrade_clean | default(false) | bool) or (package_manager__upgrade_update_repo_cache | default(true) | bool) }}" | ||
register: package_manager__deb_upgrade | ||
- name: Debug found files | ||
ansible.builtin.debug: | ||
msg: | ||
list_templates: "{{ package_manager__upgrade_clean_default_repo_list_templates }}" | ||
# repo_lists_default: "{{ repo_lists_default }}" | ||
# repo_lists_additional: "{{ repo_lists_additional }}" | ||
# repo_list_additonals_src: "{{ repo_list_additonals_src }}" | ||
# repo_list_templates: "{{ repo_list_templates }}" | ||
# vars: | ||
# repo_lists_default: "{{ __package_manager__repo_list_defaults_template | default([]) }}" | ||
# repo_list_additonals_src: "{{ package_manager__upgrade_clean_find_repo_list_files.files | map(attribute='path') | default([]) }}" | ||
# repo_lists_additional: "{{ (repo_list_additonals_src | length > 0) | | ||
# ternary( | ||
# {'dest': repo_list_additonals_src} | aybarsm.helper.to_list_of_dicts(defaults={'src': package_manager__repo_list_disabled_template}), | ||
# []) }}" | ||
# repo_list_templates: "{{ repo_lists_default + repo_lists_additional }}" | ||
when: | ||
- ansible_os_family | lower == 'debian' | ||
- package_manager__upgrade_mode is defined | ||
- upgrade_mode in __package_manager__upgrade_modes | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
# - (__package_manager__repo_list_defaults_template | length > 0) or (package_manager__upgrade_clean_find_repo_list_files.files | default([]) | length > 0) | ||
|
||
|
||
# register: package_manager__upgrade_clean_default_repo_list_templates | ||
# when: | ||
# - __package_manager__upgrade_clean | default(false) | bool | ||
# - (__package_manager__repo_list_defaults_template | length > 0) or (package_manager__upgrade_clean_find_repo_list_files.files | default([]) | length > 0) | ||
|
||
- name: Clean RPM repo metadata cache before upgrade | ||
become: true | ||
ansible.builtin.command: | ||
cmd: yum clean metadata | ||
vars: | ||
update_cache: "{{ (__package_manager__upgrade_clean | default(false) | bool) or (package_manager__upgrade_update_repo_cache | default(true) | bool) }}" | ||
register: package_manager__rpm_upgrade_clean_cache_pre | ||
when: | ||
- ansible_os_family | lower == 'redhat' | ||
- update_cache | ||
# - name: Set facts for backup and restore (Clean Upgrade) | ||
# ansible.builtin.set_fact: | ||
# __package_manager__clean_upgrade_backup: "{{ {'src': backup_src, 'dest': backup_dest} | aybarsm.helper.to_list_of_dicts }}" | ||
# __package_manager__clean_upgrade_restore: "{{ {'src': backup_dest, 'dest': backup_src} | aybarsm.helper.to_list_of_dicts }}" | ||
# vars: | ||
# main_repo_list: "{{ | ||
# (package_manager__upgrade_main_repo_list_stat.stat.exist is defined and package_manager__upgrade_main_repo_list_stat.stat.exist is truthy ) | | ||
# ternary( | ||
# [package_manager__upgrade_main_repo_list_stat.stat.path], | ||
# [] | ||
# ) | ||
# }}" | ||
# repo_lists: "{{ (package_manager__upgrade_find_repo_list_files.files.length > 0) | | ||
# ternary( | ||
# (package_manager__upgrade_find_repo_list_files.files | map(attribute='path') | list), | ||
# [] | ||
# ) | ||
# }}" | ||
# backup_src: "{{ main_repo_list + repo_lists }}" | ||
# backup_dest: "{{ backup_src | map('regex_replace', '^(.*)$', '\\1.' + now().utcnow().strftime('%Y%m%dT%H%M%S.%fZ') + '.disabled') }}" | ||
# register: package_manager__upgrade_set_facts_backup_restore | ||
# when: | ||
# - __package_manager__upgrade_clean | default(false) | bool | ||
# - package_manager__upgrade_main_repo_list_stat.stat.exist is defined | ||
|
||
- name: Perform RPM package upgrade via DNF | ||
become: true | ||
ansible.builtin.dnf: | ||
name: "*" | ||
state: latest | ||
register: package_manager__rpm_upgrade | ||
when: ansible_os_family | lower == 'redhat' | ||
# - name: Copy (Backup) repo list files and directory (Clean Upgrade) | ||
# become: true | ||
# ansible.builtin.copy: | ||
# src: "{{ item.src }}" | ||
# dest: "{{ item.dest }}" | ||
# remote_src: true | ||
# loop: "{{ __package_manager__clean_upgrade_backup }}" | ||
# register: package_manager__upgrade_repo_list_backup | ||
# when: | ||
# - __package_manager__upgrade_clean | default(false) | bool | ||
# - __package_manager__clean_upgrade_backup is defined | ||
# - __package_manager__clean_upgrade_backup | length > 0 | ||
|
||
- name: Copy (Restore) repo list files and directory (Clean Upgrade) | ||
become: true | ||
ansible.builtin.copy: | ||
src: "{{ item.src }}" | ||
dest: "{{ item.dest }}" | ||
remote_src: true | ||
loop: "{{ __package_manager__clean_upgrade_restore }}" | ||
register: package_manager__upgrade_repo_list_restore | ||
when: | ||
- __package_manager__upgrade_clean | ||
- __package_manager__clean_upgrade_restore is defined | ||
- __package_manager__clean_upgrade_restore | length > 0 | ||
# - name: Temproarily remove repo list files and directory (Clean Upgrade) | ||
# become: true | ||
# ansible.builtin.file: | ||
# path: "{{ item.src }}" | ||
# state: absent | ||
# loop: "{{ __package_manager__clean_upgrade_backup }}" | ||
# register: package_manager__upgrade_repo_list_remove | ||
# when: | ||
# - __package_manager__upgrade_clean | default(false) | bool | ||
# - __package_manager__clean_upgrade_backup is defined | ||
# - __package_manager__clean_upgrade_backup | length > 0 | ||
|
||
- name: Remove temporary directory for repo lists (Clean Upgrade) | ||
become: true | ||
ansible.builtin.tempfile: | ||
path: "{{ package_manager__upgrade_create_temp_repo_dir.path }}" | ||
state: absent | ||
register: package_manager__upgrade_remove_temp_repo_dir | ||
when: | ||
- __package_manager__upgrade_clean | ||
- package_manager__upgrade_create_temp_repo_dir.path is defined | ||
# - name: Perform DEB package upgrade via APT | ||
# become: true | ||
# ansible.builtin.apt: | ||
# update_cache: "{{ update_cache }}" | ||
# upgrade: "{{ upgrade_mode }}" | ||
# dpkg_options: "{{ package_manager__upgrade_dpkg_options | default(omit) }}" | ||
# vars: | ||
# upgrade_mode: "{{ package_manager__upgrade_mode | regex_replace('clean_', '') }}" | ||
# update_cache: "{{ (__package_manager__upgrade_clean | default(false) | bool) or (package_manager__upgrade_update_repo_cache | default(true) | bool) }}" | ||
# register: package_manager__deb_upgrade | ||
# when: | ||
# - ansible_os_family | lower == 'debian' | ||
# - package_manager__upgrade_mode is defined | ||
# - upgrade_mode in __package_manager__upgrade_modes | ||
|
||
- name: Update DEB repo cache via APT after upgrade (Clean Upgrade) | ||
become: true | ||
ansible.builtin.apt: | ||
update_cache: true | ||
register: package_manager__deb_upgrade_clean_cache_post | ||
when: | ||
- ansible_os_family | lower == 'debian' | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
# - name: Clean RPM repo metadata cache before upgrade | ||
# become: true | ||
# ansible.builtin.command: | ||
# cmd: yum clean metadata | ||
# vars: | ||
# update_cache: "{{ (__package_manager__upgrade_clean | default(false) | bool) or (package_manager__upgrade_update_repo_cache | default(true) | bool) }}" | ||
# register: package_manager__rpm_upgrade_clean_cache_pre | ||
# when: | ||
# - ansible_os_family | lower == 'redhat' | ||
# - update_cache | ||
|
||
- name: Clean RPM repo metadata cache after upgrade (Clean Upgrade) | ||
become: true | ||
ansible.builtin.command: | ||
cmd: yum clean metadata | ||
register: package_manager__rpm_upgrade_clean_cache_post | ||
when: | ||
- ansible_os_family | lower == 'redhat' | ||
- __package_manager__upgrade_clean | default(false) | bool | ||
# - name: Perform RPM package upgrade via DNF | ||
# become: true | ||
# ansible.builtin.dnf: | ||
# name: "*" | ||
# state: latest | ||
# register: package_manager__rpm_upgrade | ||
# when: ansible_os_family | lower == 'redhat' | ||
|
||
# - name: Copy (Restore) repo list files and directory (Clean Upgrade) | ||
# become: true | ||
# ansible.builtin.copy: | ||
# src: "{{ item.src }}" | ||
# dest: "{{ item.dest }}" | ||
# remote_src: true | ||
# loop: "{{ __package_manager__clean_upgrade_restore }}" | ||
# register: package_manager__upgrade_repo_list_restore | ||
# when: | ||
# - __package_manager__upgrade_clean | ||
# - __package_manager__clean_upgrade_restore is defined | ||
# - __package_manager__clean_upgrade_restore | length > 0 | ||
|
||
# - name: Remove temporary directory for repo lists (Clean Upgrade) | ||
# become: true | ||
# ansible.builtin.tempfile: | ||
# path: "{{ package_manager__upgrade_create_temp_repo_dir.path }}" | ||
# state: absent | ||
# register: package_manager__upgrade_remove_temp_repo_dir | ||
# when: | ||
# - __package_manager__upgrade_clean | ||
# - package_manager__upgrade_create_temp_repo_dir.path is defined | ||
|
||
# - name: Update DEB repo cache via APT after upgrade (Clean Upgrade) | ||
# become: true | ||
# ansible.builtin.apt: | ||
# update_cache: true | ||
# register: package_manager__deb_upgrade_clean_cache_post | ||
# when: | ||
# - ansible_os_family | lower == 'debian' | ||
# - __package_manager__upgrade_clean | default(false) | bool | ||
|
||
# - name: Clean RPM repo metadata cache after upgrade (Clean Upgrade) | ||
# become: true | ||
# ansible.builtin.command: | ||
# cmd: yum clean metadata | ||
# register: package_manager__rpm_upgrade_clean_cache_post | ||
# when: | ||
# - ansible_os_family | lower == 'redhat' | ||
# - __package_manager__upgrade_clean | default(false) | bool |
2 changes: 1 addition & 1 deletion
2
...manager/templates/common/repo_disabled.j2 → ...er/templates/common/repo_list_disabled.j2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
# {{ ansible_managed }} | ||
{% if package_manager__repo_list_disabled_comment is defined %} | ||
{{ package_manager__repo_list_disabled_comment | comment }} | ||
{% end if %} | ||
{% endif %} |
Oops, something went wrong.