내 목표는 아래 두 진술을 결합하는 방법을 찾는 것이지만 충분하지 않습니다. 이 예에서는 rhel 버전에 관계없이 Package1과 Package2를 설치하겠습니다. 단, Package3은 OS 버전에 따라 다른 패키지가 됩니다. 중복되는 것 같아서 결합하는 방법이 있어야 하는데 이것이 최선의 방법일까요? 어떤 피드백이라도 환영합니다.
- name: Install Packages
yum:
name: "{{ item }}"
state: latest
loop:
- package1
- package2
- package3A (Only for RHEL8 versions)
when: "{{ ansible_distribution_version }} >= 8.0"
- name: Install Packages
yum:
name: "{{ item }}"
state: latest
loop:
- package1
- package2
- package3B (Only for RHEL7 versions)
when: "{{ ansible_distribution_version }} < 8.0"
답변1
- 변수 선언
packages:
- package1
- package2
- "{{ package3 }}"
package3: >-
{%- if ansible_distribution_version is version('8.0', '>=') -%}
package3A
{%- elif ansible_distribution_version is version('8.0', '<') -%}
package3B
{%- endif -%}
b) 옵션을 사전에 넣고 변수를 사용합니다.ansible_distribution_major_version
packages:
- package1
- package2
- "{{ package3[ansible_distribution_major_version|int]|
default(package3.default) }}"
package3:
default: package3A
7: package3B
6: package3B
5: package3B
- 목록에서 패키지 설치
- name: Install Packages
yum:
name: "{{ item }}"
state: latest
loop: "{{ packages }}"