Ansible - 全局变量

Ansible - Global Variables

Ansible 中是否有 "global" 变量(也就是说跨多个主机)?我想设置一个错误标志,然后在我们遇到该错误状态时调用一个特定的单独剧本。我的结构如下所示:

- 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 模板。

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

其他来源也提到了使用文件并从文件中读取数据,但这似乎非常低效。所以我一直在通过将东西保存到 localhost.