如何在Ansible中通过已加密vars变量创建id_rsa文件无需新增加密模板
Ansible 无需单独加密模板生成 id_rsa 私钥的实现方案
完全可以直接将私钥内容存入已加密的 vars 文件,无需额外新增单独的加密模板文件,具体操作流程如下:
步骤1:将私钥内容写入已加密的vars文件
在你现有的 ansible-vault 加密 vars 文件中新增存储私钥的变量,注意使用 | 标识符保留私钥的换行格式,示例如下:
# 加密vars文件中的变量定义 ssh_id_rsa_content: | -----BEGIN OPENSSH PRIVATE KEY----- 你的私钥内容第一行 你的私钥内容第二行 ...... -----END OPENSSH PRIVATE KEY-----
修改完成后正常保存即可,无需额外执行其他加密操作。
步骤2:使用template模块的content参数渲染生成私钥文件
Ansible 的 template 模块原生支持 content 参数,可以直接传入变量内容渲染,不需要指定本地模板文件路径,完全符合官方推荐的使用规范,playbook 示例如下:
- name: 生成目标主机SSH私钥文件 ansible.builtin.template: content: "{{ ssh_id_rsa_content }}" dest: /home/目标用户名/.ssh/id_rsa owner: 目标用户名 group: 目标用户所属用户组 mode: '0600'
注意事项
- 必须设置私钥文件权限为
0600,否则SSH服务会因私钥权限过高拒绝识别该文件 - 写入vars文件时必须使用
|多行字符串标识符,否则渲染出的私钥会丢失换行符导致格式错误无法使用 - 执行playbook时需正常传入vault解密密码,与你之前使用加密vars文件的操作一致
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

