Windowsマシンで発生する可能性のある散発的なエラー


8

AnsibleプレイブックでWindowsホストを使用すると、オンとオフの問題が発生します。pywinrm 0.2.2がインストールされたAnsible 2.3を実行しています。ローカル管理者ユーザーで基本認証を使用しています。

タスクを実行すると、この問題が発生することがあります。

 [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')

また、Windowsホストのグループでを実行しようとするwin_shell/win_command/raw modulewith_items、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)

どちらの問題も完全にランダムであり、一連の異なる実行でまったく発生しない場合もあります。

何か支援は?


特定のホストで多くの項目を使用してansibleループを実行すると、ランダムなwinrm 500エラーでほぼ同じ問題が発生しますが、それを見つけることができませんでした。
daBONDi 2017

4以上..まだ解決策はないようです:(
Asaf Haim

回答:


2

これはおそらくAnsibleのバグであるため、おそらくAnsibleの問題を作成する必要があります。

最初のエラーにより、WinRMパイプラインについて考えさせられます。

  • Ansible 2.3.0では、常にオンのWinRMパイプライン機能(SSHパイプラインと同様)が導入されましたが、これはその背後にある可能性があります。
  • SSHパイプラインは、Ansible for Linuxで問題を引き起こす可能性があり、オフにすると便利な場合がありますが、WinRMパイプラインではまだ可能ではありません。

この関連する問題には、将来のリリースで「非パイプライン」モードを再度有効にするいくつかのGitコミットが含まれます(2.4でリリースされる予定です。おそらく、2.3.2の一部としてバックポートがあります- このコメントを参照)

修正を入手するには、Ansible 2.4.1+(通常は問題なく動作します)にアップグレードしてみてください。または、Ansible 2.2.3にダウングレードして、これが役立つかどうかを確認してください。これにより、WinRMパイプラインが無効になり、この領域の他の回帰バグを回避できる場合があります。

  • を使用してAnsibleをインストールした場合pippip install ansible==2.4.1 、アップグレード(またはansible==2.2.3ダウングレード)を実行できます。 それでも問題が解決しない場合は、を使用して同じ2.3.1ように再アップグレードします。
  • pywinrm上記の問題で述べたように、最新のものにアップグレードする必要もあります

1

Ansible 2.3.2が最も安定していることがわかりましたが、まだ2.4.1で多くの時間を費やしていません。2.4.0 winrmに関しては、明らかにいくつかの安定性の問題があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.