You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible Jinja模板中引入加密文件?

解决方法

Jinja的include语句只会直接读取文件的原始内容,不会自动解密Ansible Vault加密的文件,所以得换用Ansible的lookup插件来获取解密后的内容。

方法一:修改private-copy.key模板

把private-copy.key里的内容替换成:

{{ lookup('file', 'private.key') }}

Ansible渲染模板时,会自动解密private.key并将明文内容写入private-copy.key。

注意事项

  • 运行Ansible时必须提供Vault密码,比如用命令参数:
    ansible-playbook your_playbook.yml --vault-password-file ~/.pass.txt
    
    或者设置环境变量:
    export ANSIBLE_VAULT_PASSWORD_FILE=~/.pass.txt
    
  • 确保private.key的路径正确:如果文件在角色的files目录下,直接写文件名即可;如果是其他路径,要写相对或绝对路径。

方法二:用copy模块直接生成文件

如果不想维护模板,也可以在playbook里用copy模块直接写入解密后的内容:

- name: 生成解密后的私钥文件
  copy:
    content: "{{ lookup('file', 'private.key') }}"
    dest: /目标路径/private-copy.key
    mode: '0600'  # 私钥文件权限建议设为0600,保证安全性

这种方法无需额外模板文件,直接通过playbook任务生成目标文件。

内容的提问来源于stack exchange,提问作者Titou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:02:04