gpt4 book ai didi

testing - Ansible wait_for 没有响应正确的错误

转载 作者:行者123 更新时间:2023-11-28 20:48:25 30 4
gpt4 key购买 nike

我试图测试一批连接,但所有错误响应失败的连接都是“超时”,但我知道(我测试过)其中一些是“没有主机路由”。我如何在 ansible 中使用 wait_for 来做到这一点?

- name: Test connectivity flow
wait_for:
host: "{{ item.destination_ip }}"
port: "{{ item.destination_port }}"
state: started # Port should be open
delay: 0 # No wait before first check (sec)
timeout: 3 # Stop checking after timeout (sec)
delegate_to: "{{ item.source_ip }}"
failed_when: false
register: test_connectivity_flow_result

- name: Append result message to result list msg
set_fact:
result_list_msg: "{% if test_connectivity_flow_result.msg is defined %}{{ result_list_msg + [test_connectivity_flow_result.msg] }}{% else %}{{ result_list_msg + [ '' ] }}{% endif %}"

当前响应:WAITING1.1.1.1:1040时超时

预期响应:没有到主机 1.1.1.1:1040 的路由

最佳答案

引用wait_for module的文档标题

wait_for – Waits for a condition before continuing

如果我“改写”你写的条件,这会给出类似这样的内容:“等待主机 X 成为可解析的目的地,并在该目的地打开端口 22,在 3 秒后重试,没有延迟和超时” .

这通常是您启动的测试,因为您启动了一个新的虚拟机并将其注册到 dns 中。因此,您等待 dns 传播并且 ssh 端口可用。

在您的情况下,您会超时,因为您的主机名永远不会成为可解析的地址。

如果您特别想测试没有到主机的路由并且不想等到路由最终可用,您需要采用其他方式。这是一个带有 ping 模块的简单示例 playbook:

---
- name: Very basic connection test
hosts: localhost
gather_facts: false

tasks:

- name: Test if host is reachable (will report no route if so)
ping:
delegate_to: nonexistent.host.local

结果是:

PLAY [Very basic connection test] *****************************************************

TASK [Test if host is reachable (will report no route if so)] *************************
fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname nonexistent.host.local: Name or service not known", "unreachable": true}

PLAY RECAP ****************************************************************************
localhost : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0

请注意 ping module :

  • 如果是这样,将报告没有到主机的路由
  • 将隐式尝试连接到端口 22
  • 将确保主机已安装 python 并准备好通过 ansible 进行管理。

如果您尝试检查的主机不应该满足上述所有条件(例如,即使未安装 python,您也希望测试成功),您将需要其他方案。通过 command 模块运行 ICMP ping 是多种解决方案之一。

关于testing - Ansible wait_for 没有响应正确的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56701998/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com