Ansible变量赋值

6

我希望在playbook中运行一个角色10次,只有在第5次运行该角色时,我想让它从该角色内部运行第二个shell命令。如何解决?

Playbook:

- 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文档中的variables部分,没有提供如何为变量赋值的简单示例(不使用register)。
1个回答

15
您可以使用set_fact模块来递增您的变量:
- set_fact: some_variable={{ some_variable | int + 1 }}

您运行额外任务的条件应该是这样的:

  when: some_variable | int == 5

请务必使用| int将值转换为整数,否则它会被视为字符串处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接