web-dev-qa-db-ja.com

ansibleで配列が定義されており、空ではないかどうかを確認します

私は次のコードを持っています

- set_fact:
    MY_HOSTNAME: "SOME VALUE"
    MY_SERVER: "00.00.00.00"
- name: Get MY server
  set_fact:
    MY_SERVER: "{{ groups[MY_HOSTNAME][0] }}"
  when: groups[MY_HOSTNAME] is defined

上記のコードでは、groups[MY_HOSTNAME]は配列です。それを確認する最良の方法は何ですかgroups[MY_HOSTNAME]が定義されており、not emptyどちらかである場合、値が必要です00.00.00.00に割り当てられるMY_SERVER

12
kosta

バージョン固有かどうかはわかりませんが、現在RHEL6でansible-2.3.2を実行しているため、グループ名を引用符で囲む必要があります。

when: groups["GROUP_NAME"] is defined and (groups["GROUP_NAME"]|length>0)

編集:十分な評判がないため、これをテクラフの回答へのコメントとして追加できませんでした。

15
Phil M

list | lengthフィルタは、要素の数を返します。ゼロの場合、リストは空です。

条件値には、ifまたはternaryフィルターを使用します( この回答の例 )。

複合条件付き(groups[MY_HOSTNAME]| default([])) | length

11
techraf