如何在 Ansible jinja 模板中包含加密文件?

问题描述 投票:0回答:1

我有 2 个包含私钥的 jinja 模板:

  • private.key
    (加密)
  • private-copy.key
    (需要包含private.key的内容)

private.key
文件使用 ansibleVault 进行加密,例如

ansible-vault encrypt --vault-password-file ~/.pass.txt private.key

所以它的内容看起来像这样:

$ANSIBLE_VAULT;1.1;AES256
123456789[...]

我正在尝试获取

private.key

的解密内容
-----BEGIN RSA PRIVATE KEY-----
ABCDEfgh[...]
-----END RSA PRIVATE KEY-----

内部

private-copy.key
(而不是其加密值)。

我已经尝试了里面的 include jinja 语句

private-copy.key
:

{% include "private.key" %}

但是结果给了我

private-copy.key
中的加密值,而不是
private.key
中的解密内容。

我还知道我可以使用加密的变量并将其放入 private-copy.key 而不是包含加密文件。为了简单起见,我想直接使用加密文件(在证书续订时,我们得到一个文件,我只想直接使用它)。

ansible jinja2 ansible-vault
1个回答
0
投票

使用文件查找插件:Ansible 允许您使用 Lookup('file', ...) 插件读取文件的内容。当与加密文件的 ansible-vault 结合使用时,如果文件被加密,它会自动解密内容。

{% raw %}
# This is private-copy.key
{{ lookup('file', 'private.key') }}
{% endraw %}
© www.soinside.com 2019 - 2024. All rights reserved.