有时,当我运行任务时会收到此问题:
[WARNING]: FATAL ERROR DURING FILE TRANSFER: Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/winrm.py", line 267, in _winrm_exec
self._winrm_send_input(self.protocol, self.shell_id, command_id, data, eof=is_last)
File "/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/winrm.py", line 248, in _winrm_send_input
protocol.send_message(xmltodict.unparse(rq))
File "/usr/local/lib/python2.7/dist-packages/winrm/protocol.py", line 207, in send_message
return self.transport.send_message(message)
File "/usr/local/lib/python2.7/dist-packages/winrm/transport.py", line 191, in send_message
raise WinRMTransportError('http', error_message) WinRMTransportError: (u'http', u'Bad HTTP response returned from server. Code 500')
其他时候,当我尝试在某个任务上运行
win_shell/win_command/raw module
和with_items
时一组Windows主机似乎在Ansible创建的临时文件上失败。我要运行的任务是:
- name: Check services up
win_command: 'sc queryex {{ item }} | Findstr RUNNING'
with_items: '{{ component_services }}'
register: command_result
ignore_errors: yes
我可能会得到的错误是:
changed: [172.16.104.169] => (item=Dnscache)
failed: [172.16.104.176] (item=Dnscache) => {"failed": true, "item": "Dnscache",
"module_stderr": "Exception calling \"Run\" with \"1\" argument(s): \"Exception calling \"Invoke\" with \r\n\"0\"
argument(s): \"The running command stopped because
the preference variable \r\n\"ErrorActionPreference\"
or common parameter is set to
Stop: (0) : cannot open \r\nC:\Users\ADMINI~1\AppData\Local\Temp\RESB3FF.tmp
for writing\r\n(1) :
using System;\r\n\"\"\r\nAt line:45 char:1\r\n+
$output = $entrypoint.Run($payload)\r\n+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n+
CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordE \r\nxception\r\n+
FullyQualifiedErrorId : ScriptMethodRuntimeException\r\n",
"module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}
changed: [172.16.104.141] => (item=Dnscache)
changed: [172.16.104.168] => (item=Dnscache)
changed: [172.16.104.145] => (item=Dnscache)
两个问题都是绝对随机的,甚至在一系列不同的运行中甚至根本不会出现。
有任何帮助吗?
#1 楼
您可能应该为此创建一个Ansible问题,因为它很可能是Ansible中的错误。第一个错误使我想到了WinRM流水线技术:
Ansible 2.3 .0引入了始终在线的WinRM流水线功能(类似于SSH流水线),这可能是在此之后。
SSH管道传输可能会在Linux的Ansible中引起问题,并且将其关闭可能很有用,但是对于WinRM管道传输尚无法实现。
此相关问题包括一些Git提交它将在将来的版本中重新启用“非流水线”模式(现在应该在2.4中发布,可能在2.3.2中带有反向端口-请参阅此评论)
尝试升级到Ansible 2.4.1+(通常效果很好)以获取修复。或者尝试降级到Ansible 2.2.3以查看是否有帮助-这将禁用WinRM流水线操作,并可以避免该区域的其他回归错误。
如果使用
pip
安装了Ansible,则可以执行pip install ansible==2.4.1
ansible==2.2.3 进行降级),然后如果这样做没有帮助,请对
2.3.1
进行相同的操作以再次升级。您还应按照上述问题中的说明升级到最新的
pywinrm
评论
您再次在该主机上运行了多少个项目,在执行特定主机上有多个项目的ansible循环时,随机winrm 500 erros出现了问题。您也无法同时找到它吗?4个或更多..我恐怕还没有解决的办法:(