Ansible ssh失败,并显示错误:无法将数据发送到远程主机

时间:2019-12-02 16:15:12

标签: ssh ansible runtime-error retry-logic

我有一本可笑的剧本,它在远程主机“ 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 }}"

非常感谢!

0 个答案:

没有答案