我有一本包含多个主机部分的剧本。我想在此 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(使用前将#替换为@)