diff --git a/roles/package_manager/vars/common.yml b/roles/package_manager/vars/common.yml index 0fc03a3..231964a 100644 --- a/roles/package_manager/vars/common.yml +++ b/roles/package_manager/vars/common.yml @@ -2,7 +2,7 @@ package_manager__packages_all: "{{ package_manager__all | 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.unique_recursive(__package_manager__config.packages.uniques) | aybarsm.helper.joinattr(__package_manager__config.packages.joinattr) | default([]) }}" @@ -32,21 +32,20 @@ __package_manager__upgrade_once: "{{ package_manager__upgrade_strategy == 'once' __package_manager__upgrade_always: "{{ package_manager__upgrade_strategy == 'always' }}" __package_manager__upgrade_never: "{{ package_manager__upgrade_strategy == 'never' }}" __package_manager__upgrade_execute: >- + {%- set exec_upgrade = {'decision': true, 'reason': ''} -%} {%- if __package_manager__upgrade_never -%} - {'decision': false, 'reason': 'Upgrade strategy is set to never.'} + {%- set exec_upgrade = {'decision': false, 'reason': 'Upgrade strategy is set to never.'} -%} {%- elif __package_manager__upgrade_clean and not __package_manager__upgrade_clean_eligible -%} - {'decision': false, 'reason': 'Upgrade strategy is set to clean, but no default repo list configuration found.'} + {%- set exec_upgrade = {'decision': false, 'reason': 'Upgrade strategy is set to clean, but no default repo list configuration found.'} -%} {%- elif __package_manager__upgrade_once -%} - {%- if ansible__role_enabled is undefined -%} - {'decision': false, 'reason': 'Upgrade strategy once requires aybarsm.linux.ansible role included.'} - {%- elif not ansible__role_enabled -%} - {'decision': false, 'reason': 'Upgrade strategy once requires aybarsm.linux.ansible role enabled. (ansible__role_enabled: true)'} - {%- elif not ansible__manage_local_facts -%} - {'decision': false, 'reason': 'Upgrade strategy once requires aybarsm.linux.ansible role local fact management enabled. (ansible__manage_local_facts: true)'} - - {%- elif __package_manager__upgrade_once and __package_manager__upgrade_once_eligible and not __package_manager__upgrade_defined -%} - {'decision': true, 'reason': 'Upgrade strategy is set to once, and eligible.'} - {%- else -%} - {'decision': false, 'reason': 'Upgrade strategy is not set to always or once, or not eligible.'} + {%- if ansible__local_fact_name is undefined -%} + {%- set exec_upgrade = {'decision': false, 'reason': 'Upgrade strategy once requires aybarsm.linux.ansible role imported.'} -%} + {%- elif ansible__role_enabled is undefined or not ansible__role_enabled -%} + {%- set exec_upgrade = {'decision': false, 'reason': 'Upgrade strategy once requires aybarsm.linux.ansible role enabled. (ansible__role_enabled: true)'} -%} + {%- elif not ansible__manage_local_facts -%} + {%- set exec_upgrade = {'decision': false, 'reason': 'Upgrade strategy once requires aybarsm.linux.ansible role local fact management enabled. (ansible__manage_local_facts: true)'} -%} + {%- elif ansible_local[ansible__local_fact_name].package_manager.upgrade is defined -%} + {%- set exec_upgrade = {'decision': false, 'reason': 'Host already upgraded.'} -%} + {%- endif -%} {%- endif -%} - __package_manager__upgrade_always or (__package_manager__upgrade_once and __package_manager__upgrade_once_eligible and not __package_manager__upgrade_defined) }}" \ No newline at end of file + {{ exec_upgrade }}