Amazon ec2 ansible playbook等待ssh超时并出现ping错误,但在本地工作

Amazon ec2 ansible playbook等待ssh超时并出现ping错误,但在本地工作,amazon-ec2,ansible,Amazon Ec2,Ansible,我正试图通过我的ansible playbook文件ssh到ec2实例。我可以在本地ssh到实例中,目前在我的ansible playbook文件中有以下配置: - name: Wait for SSH to come up delegate_to: "{{ public_dns }}" wait_for_connection: delay: 60 timeout: 120 with_items: "{{ public_ip }}" remote_user: ub

我正试图通过我的ansible playbook文件ssh到ec2实例。我可以在本地ssh到实例中,目前在我的ansible playbook文件中有以下配置:

- name: Wait for SSH to come up
  delegate_to: "{{ public_dns }}"
  wait_for_connection:
    delay: 60
    timeout: 120
  with_items: "{{ public_ip }}"
  remote_user: ubuntu
  connection: ssh
  register: item
但是,当我运行此操作时,会出现以下错误:

失败:[localhost->{{public\u dns}}](项={“可解析”项\u结果”: True,“可接受的”无“记录”:False,“可接受的”授权的“变量”: {'ansible\u委托的\u主机:u'{{public\u dns}}','ansible\u主机:u'{{ public_dns},'changed':False,'appeased':184,'failed':True, 'item':u'{{public\u ip}','msg':u“在等待ping模块时超时 测试成功:“ping'”,“ansible\u ignore\u errors”:None})=>{“changed”: false,“经过”:184,“项”:“{{public_ip}}”,“msg”:“超时” 正在等待ping模块测试成功:“ping”}

当我从我的机器ping public_dns或public_ip值时,两者都成功

为什么在运行Ansible文件时ping事件会失败?(我不是有意尝试ping实例,我实际上希望通过ssh连接到它。但是错误显示Ansible可能在连接之前尝试ping实例,基于“等待ping模块测试成功超时”)

此后,我将方法更改为:

- name: Add new instance to host group
  add_host:
  hostname: ""{{ public_ip }}"
  groupname: launched

- name: Wait for SSH to come up
  wait_for:
    host: launched
    port: 22
    sleep: 30
    delay: 10
    timeout: 360
  state: started
但是,这引发了一个不同的错误,即“等待启动时超时:22”。回溯包括以下内容:

connect_socket=socket.create_connection((主机,端口),connect_timeout)文件“/System/Library/Frameworks/Python.Frameworks/Python.Frameworks/2.7/lib/python2.7/socket.py”,第557行,在create_connection中 对于getaddrinfo(主机、端口、0、SOCK_流)中的res:


有什么想法吗?

请注意,Ansibleping模块与ICMP ping不同:。使用ping模块时,Ansible将尝试通过
ssh
连接到目标主机


如果上面的任务在针对新配置的ec2实例运行的剧本中,我将设置
collect\u facts:false
并运行
wait\u for\u connection
,作为我的第一个任务。如果仍然失败,请尝试增加
超时
参数

谢谢您的回答。我尝试了收集事实和移动等待连接任务,但是仍然失败,我认为它可能没有正确使用sshkey?-对此有什么建议吗?我认为如果您使用了错误的sshkey,错误消息会说明身份验证。您是否尝试过增加
timeout
参数?是的,我已将其增加到600秒,这是在我可以在ansible脚本之外使用ssh连接到计算机之后的事情。刚刚看到您更新的代码,我同意它现在更干净、更简单了。快速评论:
host:launched
不应该指向实际的主机
{public\u up}
而不是组吗?在
主机名中有两个
:“{{public\u ip}”
,但我认为这只是stackoverflow中的一个错误副本粘贴