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
从未设置它,但它只是可以放在库存中的一个覆盖。