使用包含在ansible中的vars_文件

使用包含在ansible中的vars_文件,ansible,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.ym

我有一个剧本,我想转换成一个模板,并在别处使用
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
这很好,但我想加密一些变量,如下所示:

$ 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
My
template\u standalone.yml
包含不同角色的列表…:

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

…需要服务器密码等配置,我不希望主文件中有明文。有没有想过我可以做些什么

vars_文件
不支持附带的剧本(从Ansible 2.3开始)

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

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

或者将组变量文件用于
all
group–将加密文件放入
/group\u vars/all/demo.example.com.yml

谢谢,额外变量方法对我有效。我将添加一条注释,说明您需要指定它。