更新:
我已将我的配置组织成基于角色的目录结构。其中一些角色具有加密文本的默认变量文件。这是一个简化且经过测试的任务列表,它失败了:
---
- name: 'Include some additional variables'
include_vars:
dir: "{{playbook_dir}}/roles/foo/defaults/vars"
tags: 'debug'
- name: 'Debug: display the variables'
debug:
msg: "{{item}}"
with_items:
- "{{encrypted_text_from_yml_file}}"
tags: 'debug'
- name: 'Deploy Foo plugins'
block:
- name: 'Transfer the folder to the application directory'
synchronize:
src: 'some_src_folder'
dest: "{{some_unencrypted_text_from_another_yml_file}}"
archive: false
recursive: true
tags: 'debug'
但是,在执行我的剧本时,我看到以下错误:
TASK [<some_app> : Transfer the <some_folder> folder to the application directory] **********************************************************************************
fatal: [<some_hostname>]: FAILED! => {"failed": true, "msg": "Decryption failed (no vault secrets would found t
hat could decrypt)"}
正在从密码文件中检索我的凭据。
在变量include和我加密显示的所有变量之后,我立即抛出了一个调试任务。奇怪的是发生异常的任务块是使用同步模块。甚至没有使用保险库中的变量...
知道如何排除故障吗?我将详细程度增加到-vvvv
并且没有看到任何明显的结果。
使用: ansible 2.4.0.0
答案 0 :(得分:2)
我想出了这个问题。我不小心在 group_vars / all 中截断了一个加密的字符串。使用-vvvvv
(注意第5节)实际上有助于揭示HMAC问题。
答案 1 :(得分:0)
我使用分子测试命令遇到了同样的问题。我曾尝试使用--ask-vault-pass运行该剧本,但它确实起作用,所以我认为问题出在python版本或分子上,但就我而言,这只是我的vault-password-file文件.vault的名称。在.gitignore文件中列出。我一改名字就可以了。
答案 2 :(得分:0)
在我的情况下,错误是由特殊字符引起的。解密可在我的开发机(arch linux)上运行,但是在ci机(Gitlab)上运行时失败。我已将密码作为秘密变量注入,但是由于密码包含$
,显然该描述不起作用。
通过删除所有特殊字符更改密码并用新密码重新键入保管库和加密的字符串后,问题消失了,ci可以成功解密了保管库。