首页 > 解决方案 > Ansible ssh 失败并出现错误:无法将数据发送到远程主机

问题描述

我有一个 ansible playbook,它在远程主机“10.8.8.88”上执行 shell 脚本的次数与作为参数提供的数字文件一样多

ansible-playbook test.yml -e files="file1,file2,file3,file4"

剧本如下所示:

- name: Call ssh
  shell: ~./execute.sh {{ item }}
  with_items: {{ files.split(',') }}

这适用于较少的文件,例如 10 到 15 个文件。但我碰巧在论点中有 145 个文件。

这是执行中断并在中途播放失败并显示以下错误消息的时间:

TASK [shell] *******************************************************************
 [WARNING]: conditional statements should not include jinja2 templating
delimiters such as {{ }} or {% %}. Found: entrycurrdb.stdout.find("{{ BASEPATH
}}/{{ vars[(item | splitext)[1].split('.')[1]] }}/{{ item | basename }}") == -1
and actualfile.stat.exists == True
 [WARNING]: sftp transfer mechanism failed on [10.8.8.88]. Use ANSIBLE_DEBUG=1
to see detailed information
 [WARNING]: scp transfer mechanism failed on [10.8.8.88]. Use ANSIBLE_DEBUG=1
to see detailed information
fatal: [10.8.8.88]: UNREACHABLE! => {"changed": false, "msg": "Data could not be sent to remote host \"10.8.8.88\". Make sure this host can be reached over ssh: ", "unreachable": true}

NO MORE HOSTS LEFT *************************************************************

PLAY RECAP *********************************************************************
10.8.8.88                 : ok=941  changed=220  unreachable=1    failed=0    skipped=145  rescued=0    ignored=0   
localhost                  : ok=7    changed=3    unreachable=0    failed=0    skipped=3    rescued=0    ignored=0   

Build step 'Execute shell' marked build as failure
Finished: FAILURE

我有最新的 Ansible,ansible.cfg 中的“管道”和“ssh”设置是默认设置。

我有以下问题。

  1. 我该如何解决上述问题?

  2. 我想这可能是由于网络问题。是否可以对远程服务器运行无限 ssh ping 以进行测试以查看 ansible 命令行是否中断?这将帮助我证明我的情况。我正在寻找一个使用 ssh 不断 ping 远程的示例命令。

  3. 如果发生此类故障,可以强制 ansible 重试 ssh 连接几次,以便它可以在重试期间连接。如果是这样,我会很感激可以在 ansible-playbook 代码中的何处以及如何将其设置为 vars 变量,而不是在 ansible.cfg 文件中? https://docs.ansible.com/ansible/2.4/intro_configuration.html#retries

类似于:

   vars:
    ansible_ssh_private_key_file: "{{ key1 }}"

非常感谢 !!

标签: sshansibleruntime-errorretry-logic

解决方案


推荐阅读