Ansible 循环和数组条件

Ansible 循环和数组条件

我希望能够通过指定changed_when条件来控制模块的行为。在执行像文档中这样的简单任务时,这很有效:

- command: some command
  register: command_result
  changed_when: "command_result.rc != 2"

当我开始使用循环时,问题就出现了。我不知道如何从循环的当前迭代中访问 stderr、stdout、rc 结果。例如:

- command: aptly mirror update some-mirror
  register: aptly_output
  changed_when: "?item?.stdout | search('Download queue: 0 items')"

所有结果都转到aptly_output.results,但如何访问当前迭代的结果?

答案1

在我们的一个角色中,我们会这样做:

- name: themes | activate
  command: "wp-cli --allow-root --no-color --path='{{ item.0.path }}' theme activate {{ item.1.name }}"
  register: check_activate_theme
  changed_when: "'Success: Switched to' in check_activate_theme.stdout"
  with_subelements:
    - wordpress_installs
    - themes
  when: item.1.name and item.1.activate | default(false)
  tags:
    - wordpress-themes-activate-theme

我认为这也应该适合您的用例。

相关内容