Ansible Vault和使用include_vars加密的变量
我需要使用ansible vault存储并加密一个密码文件,我已创建了一个名为“passs”的加密文件,该文件在解密后存储在group_vars中,内容如下:Ansible Vault和使用include_vars加密的变量,ansible,ansible-vault,Ansible,Ansible Vault,我需要使用ansible vault存储并加密一个密码文件,我已创建了一个名为“passs”的加密文件,该文件在解密后存储在group_vars中,内容如下: --- testvar: password 我已创建剧本文件: --- - hosts: [machines] vars: include_vars: file: group_vars/passes roles: - role: someroletodeployafilewiththispas
---
testvar: password
我已创建剧本文件:
---
- hosts: [machines]
vars:
include_vars:
file: group_vars/passes
roles:
- role: someroletodeployafilewiththispass
该角色仅部署一个带有pass from模板的文件,该模板为:
using vaulted var {{ testvar }}
每次使用tower启动时,我都会收到错误消息
“msg”:“AnsibleUndefinedVariable:'testvar'未定义”
知道我做错了什么吗?没有迹象表明ansible正在解密我的加密文件。我刚刚粘贴的加密文件:
$ANSIBLE_VAULT;1.1;AES256
303965366239313330646366313238...
也许加密的文件应该看起来不同,这样Ansible将解密它?解释 在代码中,您已经创建了一个名为
include\u vars
的变量,一个带有键文件
和字符串值group\u vars/passes
的字典
解决方案 在剧本中定义vars_文件的正确语法是
vars_文件
declaration:
---
- hosts: [machines]
vars_files:
- group_vars/passes
roles:
- someroletodeployafilewiththispass
您可以使用
include_vars
,但它是一个操作模块,应该在任务
下声明,或者在您的情况下(因为您希望它在角色之前执行)在预任务
中声明:
---
- hosts: [machines]
pre_tasks:
- include_vars:
file: group_vars/passes
roles:
- someroletodeployafilewiththispass