假设我在名为site.yml的文件中有这个ec2任务(取自documentation):
# Basic provisioning example
- ec2:
key_name: mykey
instance_type: t2.micro
image: ami-123456
wait: yes
group: webserver
count: 3
vpc_subnet_id: subnet-29e63245
assign_public_ip: yes
假设我将ec2模块结果注册到名为ec2_instances的变量中,我该怎么做才能将单个ec2实例添加到我的〜/ .ssh / known_hosts文件中,以便我可以轻松地ssh到新实例中?
我查看了known_hosts模块,其示例是:
- name: tell the host about our servers it might want to ssh to
known_hosts:
path: /etc/ssh/ssh_known_hosts
name: foo.com.invalid
key: "{{ lookup('file', 'pubkeys/foo.com.invalid') }}"
除了关键属性,每个属性对我都有意义。关于查找插件,我没有任何文件包含我的新实例的公钥(我知道)。我应该为关键财产提供什么?
关键属性的文档是:
SSH公共主机密钥,作为字符串(如果state = present则需要) state = absent时可选,在这种情况下,主机的所有键都是 去除)。密钥必须采用正确的ssh格式(参见sshd(8), “SSH_KNOWN_HOSTS FILE FORMAT”部分)
我查看了sshd(8)manual entry,这里是相关段落(强调我的):
这些文件中的每一行都包含以下字段:标记 (可选),主机名,密钥类型,base64编码的密钥,评论。该 字段用空格分隔。
keytype和base64编码的键直接来自主机 的键;例如,它们可以从中获得 /etc/ssh/ssh_host_rsa_key.pub。可选的注释字段继续 该行的结尾,并未使用。
如何获取我需要添加到〜/ .ssh / known_hosts文件的密钥?这听起来像是一项常见的任务,所以在我提出可能不必要的努力来构建我自己的解决方案之前,我想我会检查一下我是否只是遗漏了一些东西。
谢谢!