Lỗi lẻ tẻ có thể xảy ra với máy Windows


8

Tôi đang gặp một số vấn đề về bật và tắt khi sử dụng máy chủ windows trong Playbook Ansible của mình. Tôi đang chạy Ansible 2.3 với cài đặt pywinrm 0.2.2. Tôi đang sử dụng xác thực cơ bản với người dùng Quản trị viên cục bộ.

Đôi khi tôi nhận được vấn đề này khi tôi chạy một nhiệm vụ:

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

Lần khác, khi tôi cố chạy một win_shell/win_command/raw modulewith_itemstrên một nhóm các máy chủ windows, nó dường như không thành công trên các tệp tạm thời được tạo bởi Ansible.

Nhiệm vụ tôi đang cố gắng chạy là:

- name: Check services up
  win_command: 'sc queryex {{ item }} | Findstr RUNNING'
  with_items: '{{ component_services }}'
  register: command_result
  ignore_errors: yes

Và lỗi tôi có thể nhận được là:

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)

Cả hai vấn đề là hoàn toàn ngẫu nhiên và thậm chí có thể không xuất hiện ở tất cả các chuỗi các lần chạy khác nhau.

Bất kỳ trợ giúp?


Có bao nhiêu Mục bạn chạy lại máy chủ đó, gặp phải vấn đề gần như tương tự với các lần xóa ngẫu nhiên 500 lần khi thực hiện một vòng lặp có thể tìm thấy với nhiều mục trên một máy chủ cụ thể Bạn không thể tìm thấy nó trong lúc này?
daBONDi

4 và hơn thế nữa .. Tôi sợ không có giải pháp nào cho mục đích của mình cả :(
Asaf Haim

Câu trả lời:


2

Bạn có thể nên tạo một vấn đề Ansible cho vấn đề này vì rất có thể đó là một lỗi trong Ansible.

Lỗi đầu tiên khiến tôi nghĩ về đường ống WinRM:

  • Ansible 2.3.0 đã giới thiệu một tính năng đường ống WinRM luôn bật (tương tự như đường ống SSH ) và điều đó có thể đứng sau điều này.
  • SSH pipelining có thể gây ra sự cố trong Ansible cho Linux và việc tắt nó có thể hữu ích, nhưng điều này vẫn chưa thể thực hiện đối với đường ống WinRM.

Đây vấn đề có liên quan bao gồm một số cam kết Git sẽ tái kích hoạt chế độ 'phi pipelined' trong một thông cáo trong tương lai (bây giờ sẽ được phát hành vào 2.4, có thể với một backport như một phần của 2.3.2 - xem nhận xét này )

Hãy thử nâng cấp lên Ansible 2.4.1+ (thường hoạt động tốt) để sửa lỗi. Hoặc thử hạ cấp xuống Ansible 2.2.3 để xem điều này có giúp ích không - điều này sẽ vô hiệu hóa đường ống WinRM và có thể tránh các lỗi hồi quy khác trong khu vực này.

  • Nếu bạn đã cài đặt Ansible bằng cách sử dụng pip, bạn có thể thực hiện pip install ansible==2.4.1 nâng cấp (hoặc ansible==2.2.3hạ cấp), sau đó nếu điều đó không hữu ích, hãy làm tương tự với 2.3.1nâng cấp lại.
  • bạn cũng nên nâng cấp lên bản mới nhất pywinrmnhư đã đề cập trong các vấn đề trên

1

Tôi đã tìm thấy Ansible 2.3.2 là ổn định nhất, tôi chưa dành nhiều thời gian với 2.4.1. 2.4.0 chắc chắn có một số vấn đề ổn định khi nói đến winrm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.