ssh - 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”设置是默认设置。
我有以下问题。
我该如何解决上述问题?
我想这可能是由于网络问题。是否可以对远程服务器运行无限 ssh ping 以进行测试以查看 ansible 命令行是否中断?这将帮助我证明我的情况。我正在寻找一个使用 ssh 不断 ping 远程的示例命令。
如果发生此类故障,可以强制 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 }}"
非常感谢 !!
解决方案
推荐阅读
- python - conv2d():参数“输入”(位置 1)必须是张量,而不是循环函数中的 str
- java - 在我的 contains 和 equals 方法中使用它之前,我是否必须将 Object 对象转换为特定类型?
- rdf - 如何在编写 rdf 三元组时为对象提供数值
- sql - Postgres - 在单独的表格中优化动态标题
- python - Python:dict 和冒号的意外行为。( my_dict['key']: None ) 冒号 ( : ) 有什么作用?
- python - pyinstaller 和外部软件设置
- ios - 快速处理两个不同的http json响应
- javascript - 使用 Vue Js 运行 Jest 测试时出现“语法错误:无法在模块外使用 import 语句”
- python - Python - 仅替换字符串中的确切单词
- laravel - Laravel Jobs 从 API 获取数据