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