我有一部包含多个主机的剧本。我想在此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
中(不是我想要的,但是可以工作)。我也知道可以包含变量文件,但这会影响可读性。有什么建议将其放在正确的范围内(例如,剧本文件本身)? 最佳答案
如果group_vars不符合您的需求,则set_fact
模块将完成此操作。
http://docs.ansible.com/ansible/set_fact_module.html
- 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}}
关于variables - 整个剧本范围内的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33992153/