Ansible 是否存在指向私钥文件的变量?

Ansible 是否存在指向私钥文件的变量?,ansible,Ansible,我想转储与我当前使用的私钥匹配的公钥。其思想是引用指向该私钥的任何变量,从中创建公钥,并在默认情况下使用virt-copy将其推送到VM上 如果您没有为特定主机配置任何特定密钥,则使用运行playbook的当前用户的默认ssh密钥。如果您有多个密钥(例如rsa、dsa、ecdsa、ed25519……),则使用的密钥将取决于与目标ssh主机的协商,您可以使用ssh-v进行检查。不幸的是,只有在将密钥推到目标上并正确进行身份验证后,您才能正确地检查它 很可能您只有一个默认的rsa密钥(使用ssh-k

我想转储与我当前使用的私钥匹配的公钥。其思想是引用指向该私钥的任何变量,从中创建公钥,并在默认情况下使用
virt-copy将其推送到VM上
如果您没有为特定主机配置任何特定密钥,则使用运行playbook的当前用户的默认ssh密钥。如果您有多个密钥(例如rsa、dsa、ecdsa、ed25519……),则使用的密钥将取决于与目标ssh主机的协商,您可以使用
ssh-v
进行检查。不幸的是,只有在将密钥推到目标上并正确进行身份验证后,您才能正确地检查它

很可能您只有一个默认的rsa密钥(使用
ssh-keygen
的默认选项创建),这是您想要使用的密钥,因此它应该是
$HOME/.ssh/id\u-rsa
。在下面的示例中,我认为您能够确定要使用的默认密钥是理所当然的。如果您还需要自动检测,您可以根据您的具体情况使用更多任务/命令来增强功能

特定键 如果已配置要使用的特定密钥(全局或清单中的每个主机/组),则已将变量
ansible\u ssh\u private\u key\u文件
设置为正确的路径。然后,必须使用该变量的主机可以使用该变量

使用默认设置获取正确的密钥。 下面的剧本是一个示例,说明了如何为库存中的所有服务器检索正确的密钥

---
- name: Show key for server
  hosts: all
  gather_facts: false

  vars:
    default_private_key_file: "{{ lookup('env', 'HOME') }}/.ssh/id_rsa"
    server_private_key_file: "{{ ansible_ssh_private_key_file | default(default_private_key_file) }}"

  tasks:
    - name: show key for current server
      debug:
        var: server_private_key_file

    - name: do something with that key from localhost
      shell: 'echo "I will use {{ server_private_key_file }}"'
      delegate_to: localhost

非常感谢。我要找的是
ansible\u ssh\u private\u key\u文件。(不幸的是,
ansible
没有在默认情况下定义它。我应该研究一下。文档中描述了var,因为
ansible
没有在默认情况下设置它,我假设
ansible
从未设置它,但它只是可以放在库存中的一个覆盖。