Развертывание Ansible Windows - «Соединение прервано», ошибка (104, «Сброс соединения по узлу») - PullRequest
0 голосов
/ 12 сентября 2018

У меня проблема с развертыванием на сервере Windows 2008 с использованием Ansible.У меня есть конвейер jenkins, на котором есть этап Ansible Deployment, на котором я помещаю файлы на целевые серверы из инвентаря.Я смог сделать это успешно на нескольких серверах.Однако для некоторых серверов, я вижу выше сообщение об ошибке.

Вот вывод из конвейера Дженкинса

TASK [debug] *******************************************************************
ok: [ch3dw026394.mydomain.com] => {
    "msg": "Hello world!"
}

TASK [Testing connection to windows] *******************************************
fatal: [ch3dw026394.mydomain.com]: UNREACHABLE! => {"changed": false, "msg": "ntlm: ('Connection aborted.', error(104, 'Connection reset by peer'))", "unreachable": true}

Вот модуль Ansible playbook для win_ping

  #Testing connection with Target
  - debug: 
    msg: "Testing connection to windows {{ inventory_hostname }}"

  - name: Testing connection to windows
    win_ping: null
    any_errors_fatal: true

Я провел небольшое исследование по этому вопросу, и ни одна из следующих опций не сработала

  1. Выключил UAC на сервере Windows 2008.

  2. Не сработало В некоторых публикациях в сети говорилось, что эта ошибка возникает из-за того, что файл инвентаризации не содержит FQDN, но содержит IP.Мой файл инвентаризации содержит FQDN (полностью определенное доменное имя) и все еще не работает. В другом сообщении говорилось, что номер порта (5986) в файле vars.yml должен быть закомментирован, а вместо него должно быть имя хоста: 5986 в файле инвентаризации.Все еще не работало

  3. Я попытался удалить слушателей на сервере и запустил скрипт powershell, чтобы включить WinRM (https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1). Это также не работало. Удалил слушателей с помощью

    winrm delete winrm/config/Listener?Address=*+Transport=HTTP
    winrm delete winrm/config/Listener?Address=*+Transport=HTTS
    
  4. Установите для WinRM базовый Auth = true, а также AllowUncrypted = true (см. Ниже) и все равно не работает. (Обратите внимание, что мне не нужно было ничего делать вдругие мои серверы Windows 2008, и он работал абсолютно нормально).

    winrm set winrm/config/service '@{AllowUnencrypted= "true"}'
    Set-Item -Path "WSMan:\localhost\Service\Auth\Basic" -Value $true
    

Пожалуйста, вы можете помочь мне преодолеть эту ошибку.

Заранее спасибо за вашу помощь!С уважением

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

У меня возникла похожая проблема при попытке пинг-понга для узла Windows 10:

examplenode | UNREACHABLE! => {
    "changed": false, 
    "msg": "ssl: ('Connection aborted.', error(104, 'Connection reset by peer'))", 
    "unreachable": true 

Повторная выдача сертификата помогла с опцией -ForceNewSSLCert в сценарии ConfigureRemotingforAnsible.ps1.(на целевом узле)

это произошло с двумя узлами в моей коллекции, и я заметил, что оба узла были в 1607 версии Windows 10

(если кто-то хочет отследить проблему)

0 голосов
/ 26 января 2019

Ок, ребята, для тех, кто интересуется, было ли это исправлено или нет, ответ - да, у меня все получилось. Однако я не уверен, является ли это правильным подходом.

Итак, вот обходной путь относительно того, как обойти эту ошибку:

Проблема связана с настройкой реестра TLS 1.2.

  • Итак, перейдите в редактор реестра (regedit) и перейдите к следующему location HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols

  • Проверьте, есть ли запись для TLS 1.2. Если да, то удалите его. Теперь попробуйте выполнить развертывание снова, оно должно работать!

Как я уже сказал, это обходной путь. Если должен присутствовать TLS 1.2, необходимо сделать более глубокое погружение с точки зрения Ansible playbook.

...