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模板。
答案 0 :(得分:0)
正如Chin Huang上面所说,我搞砸了有关使用when
子句的语法。因此,通过修复它,when
条款显然有效。似乎没有一种在Ansible中声明动态“全局”变量的好方法,因此在hostvars
对象中使用每个主机的变量似乎是最实用的方法。
其他消息来源也提到过使用文件和从文件中读取数据,但这看起来非常低效。所以我一直在将事情保存到localhost
。