在ansible中使用带有include的vars_files

时间:2017-08-18 12:04:08

标签: ansible

我有一个我希望转换为模板的剧本,并在其他地方使用include包含它,并覆盖一些变量,如下所示:

$ cat env_demo.yml
---
- include: template_standalone.yml
  vars:
    hosts: demo.example.com
    environment_name: "Demo environment"

这很好用,但后来我想加密一些变量,如下所示:

$ cat env_demo_secret.yml
---
- include: template_standalone.yml
  vars:
    hosts: demo.example.com
  vars_files:
    - secrets/demo.example.com.yml

现在我收到了这个错误:

ERROR! 'vars_files' is not a valid attribute for a PlaybookInclude

我的template_standalone.yml包含不同角色的列表......:

$ cat template_standalone.yml
---
- name: Setting up standalone environment
  hosts: "{{ hosts }}"
  roles:
   - role: php7   
   - role: nginx
   ...

...需要像服务器密码等配置,而我在主文件中的明文中却没有。关于我能做什么的任何想法?

1 个答案:

答案 0 :(得分:1)

包含的剧本不支持

vars_files(自Ansible 2.3起)

您可以选择使用额外的变量文件:

ansible-playbook -e @secrets/demo.example.com.yml env_demo.yml

或者使用all群组变量文件 - 将加密文件放入./group_vars/all/demo.example.com.yml