使用 include_vars 的 Ansible Vault 和加密变量
Ansible Vault and encrypted variables using include_vars
我需要一个使用 ansible vault 存储和加密密码的文件,我创建了一个名为 'passes' 的加密文件存储在 group_vars 中,解密后内容如下:
---
testvar: password
我已经创建了剧本文件:
---
- hosts: [machines]
vars:
include_vars:
file: group_vars/passes
roles:
- role: someroletodeployafilewiththispass
该角色仅使用来自模板的传递部署一个文件:
using vaulted var {{ testvar }}
每次我使用塔启动它时,我都会收到错误消息
"msg": "AnsibleUndefinedVariable: 'testvar' is undefined"
知道我做错了什么吗?没有迹象表明我的加密文件正在被 ansible 解密。还有我刚刚粘贴的加密文件:
$ANSIBLE_VAULT;1.1;AES256
303965366239313330646366313238...
也许加密的文件看起来应该不同,以便 Ansible 解密它?
说明
在您的代码中,您创建了一个名为 include_vars
的变量,一个包含键 file
和字符串值 group_vars/passes
.
的字典
解决方案
在剧本中定义 vars_files 的正确语法是 vars_files
声明:
---
- hosts: [machines]
vars_files:
- group_vars/passes
roles:
- someroletodeployafilewiththispass
你可以使用include_vars
,但它是一个动作模块,应该在tasks
下声明,或者在你的情况下(因为你希望它在角色之前执行)在pre_tasks
:
---
- hosts: [machines]
pre_tasks:
- include_vars:
file: group_vars/passes
roles:
- someroletodeployafilewiththispass
我需要一个使用 ansible vault 存储和加密密码的文件,我创建了一个名为 'passes' 的加密文件存储在 group_vars 中,解密后内容如下:
---
testvar: password
我已经创建了剧本文件:
---
- hosts: [machines]
vars:
include_vars:
file: group_vars/passes
roles:
- role: someroletodeployafilewiththispass
该角色仅使用来自模板的传递部署一个文件:
using vaulted var {{ testvar }}
每次我使用塔启动它时,我都会收到错误消息
"msg": "AnsibleUndefinedVariable: 'testvar' is undefined"
知道我做错了什么吗?没有迹象表明我的加密文件正在被 ansible 解密。还有我刚刚粘贴的加密文件:
$ANSIBLE_VAULT;1.1;AES256
303965366239313330646366313238...
也许加密的文件看起来应该不同,以便 Ansible 解密它?
说明
在您的代码中,您创建了一个名为 include_vars
的变量,一个包含键 file
和字符串值 group_vars/passes
.
解决方案
在剧本中定义 vars_files 的正确语法是 vars_files
声明:
---
- hosts: [machines]
vars_files:
- group_vars/passes
roles:
- someroletodeployafilewiththispass
你可以使用include_vars
,但它是一个动作模块,应该在tasks
下声明,或者在你的情况下(因为你希望它在角色之前执行)在pre_tasks
:
---
- hosts: [machines]
pre_tasks:
- include_vars:
file: group_vars/passes
roles:
- someroletodeployafilewiththispass