amazon-ec2 - ansible-playbook 等待 ssh 超时并出现 ping 错误,但在本地工作
问题描述
我正在尝试通过我的 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_dns }}] (item={'_ansible_item_result': True, '_ansible_no_log': False, '_ansible_delegated_vars': {'ansible_delegated_host': u'{{ public_dns }}', 'ansible_host': u'{{ public_dns }}'}, 'changed': False, 'elapsed': 184, 'failed': True, 'item': u'{{ public_ip }}', 'msg': u"超时等待用于 ping 模块测试成功:'ping'", '_ansible_ignore_errors': None}) => {"changed": false, "elapsed": 184, "item": "{{ 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((host, port), connect_timeout) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 557, in create_connection for res in getaddrinfo(主机,端口,0,SOCK_STREAM):。
有任何想法吗?
解决方案
请注意 Ansible ping 模块与ICMP Ping不同:https ://docs.ansible.com/ansible/2.5/modules/ping_module.html 。ssh
Ansible在使用 ping 模块时会尝试通过 via 连接到目标主机
如果上述任务在针对新配置的 ec2 实例运行的剧本中,我会将其设置为我的第一个任务gather_facts: false
并运行。wait_for_connection
如果仍然失败,请尝试增加timeout
参数
推荐阅读
- soap - 使用 VBScript 发送 SOAP 请求时出现 Server.userException
- python - 如何使用 send_file 烧瓶框架发送 zip 文件
- asynchronous - Rust - 如何在一个应用程序中使用同步和异步 crate
- visual-studio - Visual Studio:包括插件但省略 windows 部分
- vb.net - 仅当库存值为 1 时,LINQ 才连接表、分组和汇总项目
- c# - Trello C# REST-API 使用 JSON-String 更新 CustomField
- reactjs - 这种模式好吗?
- python - 我如何在循环中创建一个类
- arrays - 从 ruby 中的哈希数组中获取唯一键值以执行分组
- neo4j - 在 Py4neo 中创建现有节点之间的关系