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
.
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
.