使用 AnsibleVault 作为 Ansible 的 ssh 密钥文件

Bro*_*kie 5 ansible

我使用 AnsibleVault 来存储要安装在远程机器上的 ssh 密钥文件。但我很难让 Ansible 使用私钥进行自己的操作。

我可以在 ansible.cfg 中使用“private_key_file”指定密钥文件。很好,但我真的想静态加密该文件。我尝试简单地将其设为保管库文件,但它似乎并没有首先解密它 - 只是尝试按我的猜测使用它。

我希望能够在我的 inventory/group_vars/all 中指定一个新变量,例如:

ssh_private_key: |
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

但是,虽然存在“private_key_file”变量,但似乎没有“private_key”(或类似)变量。

这个 ansible 设置(包括密钥文件)将被放入 git 中,并且多个管理员将拉取它 - 它确实不应该是纯文本。对于简单的解决方案有什么建议吗?

Sri*_*ram 0

您可以在 inventory/group_vars/all 中指定

ssh_private_key: |
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

并对文件 inventory/group_vars/all 进行加密。然后在你的剧本中开始添加以下内容。

- name: Copy SSH private key
  copy:
    content: "{{ ssh_private_key }}"
    dest: "~/.ssh/id_rsa"
    mode: 0600
Run Code Online (Sandbox Code Playgroud)

运行 playbook 时,包含 --ask-vault-pass 来提示保管库密码。我尝试过这个,它在我当地有效。

欲了解更多信息,请查看以下链接。 https://therealmarv.com/ansible-vault-file-handling/

  • 目标不是将私钥复制到远程盒子。它是告诉 Ansible 对自己的 ssh 使用加密的私钥。 (2认同)