Je rencontre des problèmes d'activation et de désactivation lors de l'utilisation d'hôtes Windows dans mes playbooks Ansible. J'utilise Ansible 2.3 avec pywinrm 0.2.2 installé. J'utilise l'authentification de base avec l'utilisateur administrateur local.
Parfois, je reçois ce problème lorsque j'exécute une tâche:
[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')
D'autres fois, lorsque j'essaie d'exécuter un win_shell/win_command/raw module
et with_items
sur un groupe d'hôtes Windows, il semble échouer sur les fichiers temporaires créés par Ansible.
La tâche que j'essaie d'exécuter est:
- name: Check services up
win_command: 'sc queryex {{ item }} | Findstr RUNNING'
with_items: '{{ component_services }}'
register: command_result
ignore_errors: yes
Et l'erreur que je peux obtenir est:
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)
Les deux problèmes sont absolument aléatoires et peuvent même ne pas apparaître du tout sur une séquence de différentes exécutions.
Une assistance?
ansible
windows
powershell
Asaf Haim
la source
la source
Réponses:
Vous devriez probablement créer un problème Ansible pour cela car c'est probablement un bogue dans Ansible.
La première erreur me fait penser au pipelining WinRM:
Ce problème connexe comprend certains commits Git qui réactiveront le mode `` non pipeliné '' dans une future version (devrait maintenant être publié en 2.4, éventuellement avec un backport dans le cadre de 2.3.2 - voir ce commentaire )
Essayez de passer à Ansible 2.4.1+ (qui fonctionne généralement bien) pour obtenir le correctif. Ou essayez de rétrograder vers Ansible 2.2.3 pour voir si cela aide - cela désactivera le pipelining WinRM et peut éviter d'autres bogues de régression dans cette zone.
pip
, vous pouvez procéderpip install ansible==2.4.1
à la mise à niveau (ouansible==2.2.3
à la rétrogradation), puis si cela ne vous aide pas, faites de même avec la2.3.1
mise à niveau à nouveau.pywinrm
comme indiqué dans les problèmes ci-dessusla source
J'ai trouvé qu'Ansible 2.3.2 était le plus stable, mais je n'ai pas encore passé beaucoup de temps avec 2.4.1. 2.4.0 a définitivement des problèmes de stabilité en ce qui concerne winrm.
la source