Ansible Vault和使用include_vars加密的变量

时间:2018-07-25 15:45:56

标签: ansible ansible-vault

我需要使用ansible保管库存储和加密密码的文件,解密后,我创建了一个名为'passs'的加密文件,并将其存储在group_vars中。

---
testvar: password

我已经创建了剧本文件:

---
- hosts: [machines]

  vars:
    include_vars: 
      file: group_vars/passes


  roles: 

  - role: someroletodeployafilewiththispass

该角色只是通过以下模板来部署文件:

using vaulted var {{ testvar }}

每次我使用发射塔启动它时,都会收到错误消息

  

“ msg”:“ AnsibleUndefinedVariable:'testvar'未定义”

任何想法我在做什么错?没有迹象表明ansible可以解密我的加密文件。我刚刚粘贴的加密文件:

$ANSIBLE_VAULT;1.1;AES256
303965366239313330646366313238...

也许加密的文件看起来应该有所不同,以便Ansible对其进行解密?

1 个答案:

答案 0 :(得分:0)

说明

在代码中,您创建了一个名为include_vars的变量,一个具有键file和字符串值group_vars/passes的字典。


解决方案

在播放中定义vars_files的正确语法是vars_files声明:

---
- hosts: [machines]
  vars_files:
    - group_vars/passes
  roles: 
    - someroletodeployafilewiththispass

您可以使用include_vars,但这是一个操作模块,应在tasks下声明,或者在{{1 }}:

pre_tasks