gpt4 book ai didi

amazon-web-services - Ansible **偶尔**失败,主机无法访问 - 无法通过 ssh 连接到主机

转载 作者:行者123 更新时间:2023-12-01 12:23:52 26 4
gpt4 key购买 nike

我们使用 ansible 将多个节点配置为一个集群。这些机器是在自定义 AWS 类似基础设施上创建的实例。
我们在不同的剧本上有大约一百个任务,它们在每个节点上执行。

问题是,我们收到零星的主机无法访问错误,并且 playbook 执行停止并出现以下故障:

TASK [common : install basic packages] *************************
fatal: [fqdn.for.a.node]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}

使用 -vvv 输出:
TASK [common : install basic packages] *******************************
task path: /jenkins/workspace/Cluster-Deployment/91/roles/common/tasks/install-basic-packages.yml:1
<fqdn.for.a.node> ESTABLISH SSH CONNECTION FOR USER: root
<fqdn.for.a.node> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=600 -o ControlPath=/home/turkenh/.ansible/cp/ansible-ssh-%h-%p-%r fqdn.for.a.node '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1466523588.96-210828884892875 `" && echo ansible-tmp-1466523588.96-210828884892875="` echo $HOME/.ansible/tmp/ansible-tmp-1466523588.96-210828884892875 `" ) && sleep 0'"'"''
failed: [fqdn.for.a.node] (item=[u'unzip']) => {"item": ["unzip"], "msg": "Failed to connect to the host via ssh.", "unreachable": true}

这是我们的 ansible.cfg 文件:
[defaults]
forks = 50
sudo_flags=-i
nocows=1

# do not check host key while doing ssh
host_key_checking = False
# use openssh not paramiko
transport = ssh
private_key_file = id_rsa
remote_user = root

请参阅下面的说明:
  • 当我们尝试在失败后立即使用 ansible ping(使用 ansible ping 模块,而不是 ping shell 命令)该主机时,它会抛出相同的错误,但如果我们等待大约一分钟左右,我们可以 ping 它。
  • 关于我们基于 AWS 的自定义基础设施,我们可以说明的是,不知何故,有时可能会出现一些零星的连接问题,这些问题不会超过 1-2 分钟。
  • 尝试在 ansible.cfg 中将超时参数设置为一个大数字(即 600),但没有帮助。
  • 我们正在配置节点 ubuntu、redhat 和 suse,但无论操作系统如何,我们都会收到大约 20% 的概率出现此错误。
  • 它与我的剧本中失败的任务不同,它只是随机失败。 (有时在设置模块中,有时在包模块中,...)
  • 我们的ansible版本是2.1(安装了pip),工作站的操作系统是Ubuntu 14.04

  • 所以,我们需要的是,以某种方式对 ansible 说,如果您发现某个节点无法访问,请不要放弃失败。请等待一段时间或重试 n 次,然后放弃无法访问。我们应该怎么做?

    最佳答案

    正式回答您的问题:您可以使用 ansible_ssh_common_args="-o ConnectionAttempts=20" 增加库存文件中的 ssh 尝试次数.为问题主机、主机组或 all 指定它虚拟组(例如在 group_vars/all.yml 文件中)。

    还有ssh_args配置选项,但我不想修改它,因为它会覆盖 ansible 默认的 ssh 参数。

    关于amazon-web-services - Ansible **偶尔**失败,主机无法访问 - 无法通过 ssh 连接到主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955623/

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