compatcheck: Support checking for package manager
Some distros (fedora) have dnf by default but may be atomic also
This commit is contained in:
@@ -30,3 +30,13 @@ argument_specs:
|
|||||||
description: Last supported major version. Allows any version if not specified.
|
description: Last supported major version. Allows any version if not specified.
|
||||||
type: int
|
type: int
|
||||||
required: false
|
required: false
|
||||||
|
package_managers:
|
||||||
|
description: List of supported package managers. Defaults to apt for debian and ubuntu, dnf for fedora, pacman for archlinux
|
||||||
|
type: list
|
||||||
|
required: false
|
||||||
|
elements: str
|
||||||
|
choices:
|
||||||
|
- apt
|
||||||
|
- dnf
|
||||||
|
- pacman
|
||||||
|
- atomic_container
|
||||||
|
|||||||
@@ -2,14 +2,12 @@
|
|||||||
- name: Fail if distribution not supported
|
- name: Fail if distribution not supported
|
||||||
ansible.builtin.fail:
|
ansible.builtin.fail:
|
||||||
msg: "{{ lookup('ansible.builtin.template', 'distroerror.j2').strip() }}"
|
msg: "{{ lookup('ansible.builtin.template', 'distroerror.j2').strip() }}"
|
||||||
when: checkfailed
|
when: >
|
||||||
loop:
|
_compatcheck_distro | length != 1 or (
|
||||||
- "{{ compatcheck_distro | length == 0 }}"
|
ansible_distribution_major_version != 'n/a' and
|
||||||
- >
|
_compatcheck_distro[0].version_min | default(0) > ansible_distribution_major_version | int
|
||||||
{{
|
) or
|
||||||
ansible_distribution_major_version != 'n/a' and
|
_compatcheck_distro[0].version_max is defined and _compatcheck_distro[0].version_max < ansible_distribution_major_version | int or
|
||||||
compatcheck_distro[0].version_min | default(0) > ansible_distribution_major_version | int
|
ansible_pkg_mgr not in _compatcheck_distro[0].package_managers | default([_compatcheck_default_package_manager])
|
||||||
}}
|
|
||||||
- "{{ compatcheck_distro[0].version_max is defined and compatcheck_distro[0].version_max < ansible_distribution_major_version | int }}"
|
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: checkfailed
|
loop_var: checkfailed
|
||||||
|
|||||||
@@ -1,15 +1,18 @@
|
|||||||
{%- set distros = [] -%}
|
{%- set distros = [] -%}
|
||||||
{%- for distro in compatcheck_supported_distributions -%}
|
{%- for distro in compatcheck_supported_distributions -%}
|
||||||
|
{% set distro_package_managers = distro.package_managers | default([_compatcheck_default_package_managers[distro.name]]) %}
|
||||||
|
{% set distro_package_managers_str = ' (' ~ ', '.join(distro_package_managers) ~ ')' %}
|
||||||
|
{% set distro_name = distro.name | capitalize %}
|
||||||
{%- if distro.version_min is defined -%}
|
{%- if distro.version_min is defined -%}
|
||||||
{%- if distro.version_max is defined -%}
|
{%- if distro.version_max is defined -%}
|
||||||
{{ distros.append(distro.name | capitalize + ' ' + distro.version_min | string + '-' + distro.version_max | string) }}
|
{{ distros.append(distro_name ~ ' ' ~ distro.version_min ~ '-' ~ distro.version_max ~ distro_package_managers_str) }}
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
{{ distros.append(distro.name | capitalize + ' ' + distro.version_min | string + '+') }}
|
{{ distros.append(distro_name ~ ' ' ~ distro.version_min ~ '+' ~ distro_package_managers_str) }}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- elif distro.version_max is defined -%}
|
{%- elif distro.version_max is defined -%}
|
||||||
{{ distros.append(distro.name | capitalize + ' <' + distro.version_max | string) }}
|
{{ distros.append(distro_name ~ ' <' ~ distro.version_max ~ distro_package_managers_str) }}
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
{{ distros.append(distro.name | capitalize) }}
|
{{ distros.append(distro_name ~ distro_package_managers_str) }}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
{%- endfor -%}
|
{%- endfor -%}
|
||||||
This role only supports {{ distros | join(', ') }} (You are running {{ ansible_distribution }} {{ ansible_distribution_major_version }})
|
This role only supports {{ distros | join(', ') }} (You are running {{ ansible_distribution }} {{ ansible_distribution_major_version }} ({{ ansible_pkg_mgr }})
|
||||||
|
|||||||
@@ -1,2 +1,8 @@
|
|||||||
---
|
---
|
||||||
compatcheck_distro: "{{ compatcheck_supported_distributions | selectattr('name', 'equalto', ansible_distribution | lower) }}"
|
_compatcheck_distro: "{{ compatcheck_supported_distributions | selectattr('name', 'equalto', ansible_distribution | lower) }}"
|
||||||
|
_compatcheck_default_package_managers:
|
||||||
|
debian: apt
|
||||||
|
ubuntu: apt
|
||||||
|
fedora: dnf
|
||||||
|
archlinux: pacman
|
||||||
|
_compatcheck_default_package_manager: "{{ _compatcheck_default_package_managers[ansible_distribution | lower] }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user