June
8bc60e42a8
Somewhere between ansible [core 2.14.4] and ansible [core 2.15.0] the logic for the distribution_version Ansible fact got changed. With the newer Ansible version Debians distribution_version gets reported as 11.7 as opposed to getting reported as 11 with the old Ansible version. To still allow for useful distribution checks, extend the distribution_check role by allowing the specification of distribution_major_versions and distribution_releases as well. This way you can check for an Ubuntu version by using distribution_version (which for example resolves to 18.04, while distribution_major_version would resolve to 18 in that case) and check for a Debian version by using distribution_major_version (which for example resolves to 11, while distribution_version would resolve to 11.7 in that case).
54 lines
3.3 KiB
YAML
54 lines
3.3 KiB
YAML
- name: set fact holding list of supported distribution names
|
|
ansible.builtin.set_fact:
|
|
distribution_check__supported_distribution_names: "{{ distribution_check__distribution_support_spec
|
|
| community.general.json_query('[].name') }}"
|
|
|
|
- name: fail on unsupported distribution (name)
|
|
ansible.builtin.fail:
|
|
msg: The hosts distribution (name) isn't supported.
|
|
when: ansible_facts['distribution'] not in distribution_check__supported_distribution_names
|
|
|
|
- name: set facts for holding lists of supported distribution versions, major versions and releases
|
|
block:
|
|
- name: set fact holding list of supported distribution versions
|
|
ansible.builtin.set_fact:
|
|
distribution_check__supported_distribution_versions: "{{ distribution_check__distribution_support_spec
|
|
| community.general.json_query(distribution_check__supported_distribution_versions_query) }}"
|
|
vars:
|
|
distribution_check__supported_distribution_versions_query: "[?name=='{{ ansible_facts['distribution'] }}'].versions | [].to_string(@)"
|
|
|
|
- name: set fact holding list of supported distribution major versions
|
|
ansible.builtin.set_fact:
|
|
distribution_check__supported_distribution_major_versions: "{{ distribution_check__distribution_support_spec
|
|
| community.general.json_query(distribution_check__supported_distribution_major_versions_query) }}"
|
|
vars:
|
|
distribution_check__supported_distribution_major_versions_query: "[?name=='{{ ansible_facts['distribution'] }}'].major_versions | [].to_string(@)"
|
|
|
|
- name: set fact holding list of supported distribution releases
|
|
ansible.builtin.set_fact:
|
|
distribution_check__supported_distribution_releases: "{{ distribution_check__distribution_support_spec
|
|
| community.general.json_query(distribution_check__supported_distribution_releases_query) }}"
|
|
vars:
|
|
distribution_check__supported_distribution_releases_query: "[?name=='{{ ansible_facts['distribution'] }}'].releases | [].to_string(@)"
|
|
|
|
- name: check for distribution version, major version and release support
|
|
block:
|
|
- name: set fact on whether the distribution version is supported
|
|
ansible.builtin.set_fact:
|
|
distribution_check__distribution_version_supported: "{{ ansible_facts['distribution_version'] in distribution_check__supported_distribution_versions }}"
|
|
|
|
- name: set fact on whether the distribution major version is supported
|
|
ansible.builtin.set_fact:
|
|
distribution_check__distribution_major_version_supported: "{{ ansible_facts['distribution_major_version'] in distribution_check__supported_distribution_major_versions }}" # noqa: yaml[line-length]
|
|
|
|
- name: set fact on whether the distribution release is supported
|
|
ansible.builtin.set_fact:
|
|
distribution_check__distribution_release_supported: "{{ ansible_facts['distribution_release'] in distribution_check__supported_distribution_releases }}"
|
|
|
|
- name: fail, if neither the distributions version, major version or release is supported
|
|
ansible.builtin.fail:
|
|
msg: Neither the hosts distribution version, major version or release is supported.
|
|
when: not (distribution_check__distribution_version_supported
|
|
or distribution_check__distribution_major_version_supported
|
|
or distribution_check__distribution_release_supported)
|