我有一部包含多个主机的剧本。我想在此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/

10-17 00:59