Extend distribution_check role to account for Ansible changes reg. facts
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).
This commit is contained in:
		
					parent
					
						
							
								0c62a8f3e0
							
						
					
				
			
			
				commit
				
					
						8bc60e42a8
					
				
			
		
					 17 changed files with 85 additions and 29 deletions
				
			
		|  | @ -1,20 +1,53 @@ | |||
| - name: Set fact holding list of supported distribution names | ||||
| - name: set fact holding list of supported distribution names | ||||
|   ansible.builtin.set_fact: | ||||
|     distribution_check__supported_distribution_names: "{{ distribution_check__supported_distributions | community.general.json_query('[].name') }}" | ||||
|     distribution_check__supported_distribution_names: "{{ distribution_check__distribution_support_spec | ||||
|       | community.general.json_query('[].name') }}" | ||||
| 
 | ||||
| - name: Fail on unsupported distribution (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 | ||||
|   when: ansible_facts['distribution'] not in distribution_check__supported_distribution_names | ||||
| 
 | ||||
| - name: Set fact holding list of supported distribution versions | ||||
|   ansible.builtin.set_fact: | ||||
|     distribution_check__supported_distribution_versions: "{{ distribution_check__supported_distributions | ||||
|       | 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 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: Fail on unsupported distribution version | ||||
|     - 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: The hosts distribution version isn't supported. | ||||
|   when: ansible_facts.distribution_version not in distribution_check__supported_distribution_versions | ||||
|     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) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 julian
					julian