Ansible - 全局变量

时间:2016-07-25 17:57:27

标签: ansible jinja2 ansible-playbook

Ansible中是否存在“全局”变量(也就是跨多个主机)?如果我们遇到错误状态,我想设置一个错误标志然后调用一个特定的单独的playbook。我的结构如下所示:

- hosts: localhost
  connection: local
  gather_facts: no
  roles:
    - role1 <-- some error flag is set here
    - role2
- include: teardown.yml
  when: error_flag is defined and error_flag == true

我已尝试在group_vars中设置变量,但在我看来,在运行时也没有真正的方法来更改变量值。

Set_fact不起作用,因为拆除的when不在本地主机中。即使我尝试访问hostvars['localhost']['error_flag],这也行不通,因为您似乎无法在when子句中使用Jinja模板。

1 个答案:

答案 0 :(得分:0)

正如Chin Huang上面所说,我搞砸了有关使用when子句的语法。因此,通过修复它,when条款显然有效。似乎没有一种在Ansible中声明动态“全局”变量的好方法,因此在hostvars对象中使用每个主机的变量似乎是最实用的方法。

其他消息来源也提到过使用文件和从文件中读取数据,但这看起来非常低效。所以我一直在将事情保存到localhost