我想在一个剧本中运行一个角色10次,并且仅在该角色的第5次运行中,我希望它从该角色中运行第二个Shell cmd。我该如何解决?
剧本:

- name: bla bla
  hosts: ALL
  remote_user: root
  vars:
     some_variable: 0
  roles:
    - role: nonreg
  whentorun:
    - post

实际的角色是这样的:
- name: basic
  shell: /scripts/nonReg/expoNonRegTest.sh {{ item }}
  {{ some variable }} ++ ???
  with_items: "{{ whentorun }}"
- name: on 5th run
  shell: /scripts/nonReg/expoNonRegTest.sh diff
  when: {{ some variable }} == 5 ????

我怎样才能做到这一点?
如何声明变量并为其分配值(在运行角色/剧本期间)?语法是什么?在Ansible文档中,在变量处,没有一个简单的示例说明如何为变量分配值(不适用于register:P)

最佳答案

您可以使用set_fact模块来增加变量:

- set_fact: some_variable={{ some_variable | int + 1 }}

然后,您运行额外任务的条件应如下所示:
  when: some_variable | int == 5

确保始终使用| int将值转换为int,否则它将作为字符串处理。

10-06 00:59