私の目標は、以下の2つのステートメントを組み合わせる方法を見つけることですが、十分ではありません。この例では、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 }}"