Ansible 块内任务的附加条件

Ansible 块内任务的附加条件,ansible,ansible-2.x,Ansible,Ansible 2.x,我试图用一些when条件将任务包含在块中。此外,此块中的某些任务还具有附加条件。 问题是这样的任务(带有附加条件)被跳过。块的条件和所有附加条件都为真 下面是一个示例剧本: - block: - set_fact: packages_to_install: "{{ packages_to_install }} + [ '{{ (distrs.stdout | from_json).postgresql }}' ]" - set_fact:

我试图用一些when条件将任务包含在块中。此外,此块中的某些任务还具有附加条件。 问题是这样的任务(带有附加条件)被跳过。块的条件和所有附加条件都为真

下面是一个示例剧本:

- block:    

    - set_fact: 
        packages_to_install: "{{ packages_to_install }} + [ '{{ (distrs.stdout | from_json).postgresql }}' ]"

    - set_fact:
        packages_to_install: "{{ packages_to_install }} + [ '{{ (distrs.stdout | from_json).webserver }}' ]"
  when:
    - server.webserver is defined
    - server.webserver == true   

  when:
    - server is defined
因此,postgresql被添加到包列表中,但webserver没有

根据,在从块中附加when条件并在任务上下文中对其求值后,将执行块内的所有任务。
也许不仅仅在Ansible 2.4中可能包含附加条件的封闭任务?

您应该在声明时修复
的缩进

也许不仅仅在Ansible 2.4中可能有附加条件的封闭任务

Ansible 2.4正常工作:

tasks:
  - block:

    - debug:
        msg: "task 1"

    - debug:
        msg: "task 2"
      when: false

    - debug:
        msg: "task 3"
      when: true

    when: true
结果:

TASK [debug] **************************************************************************************************
ok: [localhost] => {
    "msg": "task 1"
}

TASK [debug] **************************************************************************************************
skipping: [localhost]

TASK [debug] **************************************************************************************************
ok: [localhost] => {
    "msg": "task 3"
}

为了清晰起见,您可以在
任务中对键进行重新排序:

tasks:
  - when: true
    block:
      - debug:

声明时,您应该修复
的缩进

也许不仅仅在Ansible 2.4中可能有附加条件的封闭任务

Ansible 2.4正常工作:

tasks:
  - block:

    - debug:
        msg: "task 1"

    - debug:
        msg: "task 2"
      when: false

    - debug:
        msg: "task 3"
      when: true

    when: true
结果:

TASK [debug] **************************************************************************************************
ok: [localhost] => {
    "msg": "task 1"
}

TASK [debug] **************************************************************************************************
skipping: [localhost]

TASK [debug] **************************************************************************************************
ok: [localhost] => {
    "msg": "task 3"
}

为了清晰起见,您可以在
任务中对键进行重新排序:

tasks:
  - when: true
    block:
      - debug:

请修复缩进问题–在
块:
语句中附加了两个
when:
子句。请修复缩进问题–在
块:
语句中附加了两个
when:
子句。感谢与密钥重组相关的提示-这样做更清楚:)至于我原来的问题-事实上,我的一个条件有一个错误。“server.webserver”保存JSON数据,并且没有布尔标志。所以我修复了这个条件,一切都按预期开始工作。缩进没问题-我只是不准确地在这里发布了代码。感谢与密钥重组相关的提示-这样就更清晰了:)至于我原来的问题-实际上我的一个条件中有一个错误。“server.webserver”保存JSON数据,并且没有布尔标志。所以我修复了这个条件,一切都按预期开始工作。缩进是可以的-我只是错误地把代码贴在这里。