Chr*_*iel 5 ansible ansible-vault
我需要一个使用 ansibleVault 存储和加密密码的文件,我创建了一个名为“passes”的加密文件,存储在 group_vars 中,解密后内容如下:
---
testvar: password
Run Code Online (Sandbox Code Playgroud)
我创建了剧本文件:
---
- hosts: [machines]
vars:
include_vars:
file: group_vars/passes
roles:
- role: someroletodeployafilewiththispass
Run Code Online (Sandbox Code Playgroud)
该角色只是使用模板的传递来部署一个文件,该文件是:
using vaulted var {{ testvar }}
Run Code Online (Sandbox Code Playgroud)
每次我使用塔启动此程序时都会收到错误消息
"msg": "AnsibleUndefinedVariable: 'testvar' 未定义"
有什么想法我做错了什么吗?没有迹象表明我的加密文件正在被 ansible 解密。还有我刚刚粘贴的加密文件:
$ANSIBLE_VAULT;1.1;AES256
303965366239313330646366313238...
Run Code Online (Sandbox Code Playgroud)
也许加密的文件看起来应该有所不同,以便 Ansible 能够解密它?
解释
在您的代码中,您创建了一个名为 的变量include_vars、一个带有键file和字符串值的字典group_vars/passes。
解决方案
在 play 中定义 vars_files 的正确语法是vars_files声明:
---
- hosts: [machines]
vars_files:
- group_vars/passes
roles:
- someroletodeployafilewiththispass
Run Code Online (Sandbox Code Playgroud)
您可以使用include_vars,但它是一个操作模块,应在tasks, 或您的情况下声明(因为您希望它在角色之前执行)pre_tasks:
---
- hosts: [machines]
pre_tasks:
- include_vars:
file: group_vars/passes
roles:
- someroletodeployafilewiththispass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9056 次 |
| 最近记录: |