Ansible 变量赋值

Posted

技术标签:

【中文标题】Ansible 变量赋值【英文标题】:Ansible variable assignment 【发布时间】:2015-05-18 04:22:38 【问题描述】:

我想在剧本中运行一个角色 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 文档中,在变量中,没有一个简单的示例说明如何为变量赋值(不是使用寄存器:P)

【问题讨论】:

【参考方案1】:

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

- set_fact: some_variable= some_variable | int + 1 

您运行额外任务的条件应如下所示:

  when: some_variable | int == 5

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

【讨论】:

以上是关于Ansible 变量赋值的主要内容,如果未能解决你的问题,请参考以下文章

Ansible 学习总结—— Ansible 循环条件判断触发器处理失败等任务控制使用总结

Ansible 学习总结—— Ansible 循环条件判断触发器处理失败等任务控制使用总结

浅谈python中的变量赋值

静态变量赋值问题

Sql中如何给变量赋值

sed的运行结果怎样赋值给变量