【问题标题】:can I run ansible playbook on ec2 just with ssh keyfile no aws key/pair?我可以在 ec2 上仅使用 ssh 密钥文件没有 aws 密钥/对运行 ansible playbook 吗?
【发布时间】:2016-12-04 14:38:08
【问题描述】:

如果我没有 AWS 密钥对,也没有创建/删除 EC2 实例的权限,但只能使用 keypair.pem 通过 SSH 访问一个实例,我还可以只使用 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

【问题讨论】:

  • 您的设置似乎没问题。使用 -vvvv 运行 playbook 以检查错误。或者甚至启用ANSIBLE_DEBUG=1 以获取最详细的输出以获取实际错误。

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


【解决方案1】:

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

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 对了解幕后发生的事情非常有帮助。

【讨论】:

    【解决方案2】:

    密钥对应该足以让您连接到您的 EC2 实例。我刚刚尝试了我的设置,它似乎可以正常工作。

    您是否尝试过使用相关密钥对的完整路径?对我来说,它成功了。

    【讨论】:

    • 是的,我添加了完整路径,但仍然是同样的错误。你使用的是什么版本的 Ansible?我在 2.1.1.0 上,我看到 2.x 几乎没有区别
    • 我在 2.1.0 上,所以可能相同的语法应该可以正常工作。我可以看到您的主机文件和我的主机文件之间的另一个区别 - 尝试将 ansible_user 更改为 ansible_ssh_useransible_host 更改为 ansible_ssh_host
    • 谢谢,但仍然没有工作(实际上这会让我感到惊讶,因为 ansible_ssh_user 和 ssh_host 在 2.x docs.ansible.com/ansible/intro_inventory.html 上已弃用)
    • 可能你是对的,我很久以前就设置了这个主机文件,它可能仍然是一个早期版本。无论如何对我有用,因此语法仍然有效,即使已弃用。您可以尝试将自己的密钥(id_rsa.pub)添加到服务器的授权密钥文件中,看看是否可以使用它来连接?它将帮助您区分 ansible 的问题和 key 的问题。
    猜你喜欢
    • 2017-11-27
    • 2020-01-15
    • 2018-01-02
    • 2015-08-22
    • 1970-01-01
    • 2016-05-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多