我可以使用ssh keyfile没有aws键/对运行ec2上的ansible playbook吗?

时间:2016-07-29 19:31:51

标签: amazon-ec2 ansible ansible-2.x

如果我没有AWS密钥对,也没有创建/删除EC2实例的权限,只能通过SSH keypair.pem访问一个实例,我还可以使用Ansible来设置我的服务器吗?

由于我无法访问所有EC2实例,我可以根本不使用boto / aws密钥对,只需添加我在清单文件中有权访问的唯一EC2实例吗?

我在库存文件上尝试了这个:

[aws_server]
aws_instance ansible_host='MY_EC2_INSTANCE.us-west-2.compute.amazonaws.com' ansible_user='ubuntu' ansible_ssh_private_key_file='/myproject/testkey.pem'

但无法与ansible-playbook -i inventory site.yml

联系
fatal: [aws_instance]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}

PS:我可以毫无问题地运行ssh -i testkey.pem ubuntu@MY_EC2_INSTANCE.us-west-2.compute.amazonaws.com

2 个答案:

答案 0 :(得分:2)

问题出现了,因为我使用的是AWS主机名而不是IP,并且出于某种原因,它“太长了”。我是怎么发现的?正如来自#ansible IRC频道的用户所建议的那样,我使用-vvvv运行它以获得完整日志,并且能够看到发出错误的SSH命令。<​​/ p>

ansible-playbook  -vvvv -i inventory site.yml

我尝试运行SSH命令Ansible使用相同的选项和-vvvv运行,并且在失败之前的日志的最后几行是:

debug1: setting up multiplex master socket
debug3: muxserver_listen: temporary control path /Users/vmenezes/.ansible/cp/ansible-ssh-MY_EC2_INSTANCE.us-west-2.compute.amazonaws.com-22-ubuntu.NSUADT9KwyIpvhWi
unix_listener: "/path/to/my/project/.ansible/cp/ansible-ssh-MY_EC2_INSTANCE.us-west-2.compute.amazonaws.com-22-ubuntu.NSUADT9KwyIpvhWi" too long for Unix domain socket

正如您所见,最后一行清楚地说too long for Unix domain socket。我不确切地知道为什么这个限制,因为它确实是一个有效的URL,但改变IP地址解决了问题。

要记住一些事情,当一切都失败时,-vvvv真的有助于了解幕后发生的事情。

答案 1 :(得分:0)

密钥对应足以允许您连接EC2实例。我只是尝试使用我的设置,它似乎正在工作。

您是否尝试使用相关密钥对的完整路径?对我而言,这就是诀窍。