有条件的任务

ansible task with condition

我在剧本中使用以下任务,并尝试使用 "when" 设置条件来触发任务。

第一击有效

ansible-playbook vdomqury.yml -e adom=In-Adom-01  -e FGT=FGVM04TM19001830  -e vdom= -vvv 

如果我删除 var vdom playbook stopped

ansible-playbook vdomqury.yml -e adom=In-Adom-01 -e FGT=FGVM04TM19001830 -vvv

 tasks:
  - name: USE CUSTOM TYPE TO QUERY AVAILABLE SCRIPTS
    f_query:
      adom: "{{ adom }}"
      object: "custom"
      custom_endpoint: "/pm/config/adom/{{ adom }}/_package/status/{{ FGT }}/{{ vdom }}"
    register: results
    tags: ADDLAG
    when: vdom != "" 

  - name: USE CUSTOM TYPE TO QUERY AVAILABLE SCRIPTS
    f_query:
      adom: "{{ adom }}"
      object: "custom"
      custom_endpoint: "/pm/config/adom/{{ adom }}/_package/status/{{ FGT }}"
    register: results
    tags: ADDLAG
    when: vdom == "" or vdom is not defined

你应该在对它进行比较之前检查是否定义了 vdom,否则解释器将无法成功地尝试获取它的值。这应该有效(现在无法检查):when: vdom is defined and vdom != "".

将条件更改为

when: vdom|default("")|length > 0

分别

when: vdom|default("")|length == 0