Ansible playbook 范围内的变量

2024-03-12

我有一本包含多个主机部分的剧本。我想在此 playbook.yml 文件中定义一个仅适用于该文件内的变量,例如:

vars:
  my_global_var: 'hello'

- hosts: db
  tasks:
   -shell: echo {{my_global_var}} 

- hosts: web
  tasks:
   -shell: echo {{my_global_var}} 

上面的例子不起作用。我必须为每个主机部分复制变量(不好)或在更高级别定义它,例如在我的group_vars/all(不是我想要的,但有效)。我还知道可以包含变量文件,但这会影响可读性。有什么建议可以将其置于正确的范围内(例如剧本文件本身)?


The set_fact如果 group_vars 不满足您的需求,模块将完成此操作。

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html https://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html

该模块允许设置新变量。变量是在逐个主机的基础上设置的,就像设置模块发现的事实一样。这些变量将在 Ansible 运行期间在两次播放之间保留,但即使您使用事实缓存,也不会在执行期间保存。

- hosts: db:web
  tasks:
  - set_fact: my_global_var='hello'

- hosts: db
  tasks:
  -shell: echo {{my_global_var}} 

- hosts: web
  tasks:
  -shell: echo {{my_global_var}} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ansible playbook 范围内的变量 的相关文章

随机推荐