Ansible Kerberos Имя или служба неизвестна - PullRequest
0 голосов
/ 18 мая 2019

Я уже 3 дня сталкиваюсь с проблемой настройки Ansible на CentOs (управляющая машина) для работы с хостом Windows.

Я запустил ConfigureRemotingForAnsible.ps1 из здесь для настройкиWindows хост.Чтобы убедиться, что WinRM настроен правильно, я также использовал другую Windows для проверки двух вещей:

  • Выполнить Test-NetConnection -ComputerName 'win1.domain.local' -Port 5985/5986
  • Выполнить Test-WsMan -ComputerName 'win1.domain.local' -Port 5985/5986

ОтНа тестируемой Windows-машине управления все выглядит отлично.Мне удалось создать PSSession и удаленно выполненный сценарий.

На компьютере CentOs я использую telnet для тестирования прослушиваемого порта 5985 и 5986.

Мой group_vars / win.yml выглядит следующим образом:

ansible_user: user@domain.local
ansible_password: Password
ansible_connection: winrm
ansible_winrm_transport: kerberos
ansible_port: 5986
ansible_winrm_server_cert_validation: ignore

Мой хост - это просто полное доменное имя компьютера, как показано ниже

[win]
win1.domain.local

Моя команда для проверки

ansible-playbook -i hosts playbook.yml -vvvv

Моя книга воспроизведения очень проста.Просто проверьте каталог C: на целевом хосте Windows.До сих пор я всегда сталкиваюсь с проблемой:

Using module file /usr/lib/python2.7/site-packages/ansible/modules/windows/setup.ps1
Pipelining is enabled.
<win1.domain.local> ESTABLISH WINRM CONNECTION FOR USER: user@domain.local on PORT 5986 TO win1.domain.local
calling kinit with subprocess for principal user@domain.local
/usr/lib/python2.7/site-packages/winrm/transport.py:299: UserWarning: Function <unbound method HTTPKerberosAuth.__init__> does not contain optional arg force_preemptive, check installed version with pip list
  % (str(function), name))
/usr/lib/python2.7/site-packages/winrm/transport.py:299: UserWarning: Function <unbound method HTTPKerberosAuth.__init__> does not contain optional arg delegate, check installed version with pip list
  % (str(function), name))
/usr/lib/python2.7/site-packages/winrm/transport.py:299: UserWarning: Function <unbound method HTTPKerberosAuth.__init__> does not contain optional arg send_cbt, check installed version with pip list
  % (str(function), name))
/usr/lib/python2.7/site-packages/winrm/transport.py:299: UserWarning: Function <unbound method HTTPKerberosAuth.__init__> does not contain optional arg principal, check installed version with pip list
  % (str(function), name))
/usr/lib/python2.7/site-packages/winrm/transport.py:299: UserWarning: Function <unbound method HTTPKerberosAuth.__init__> does not contain optional arg sanitize_mutual_error_response, check installed version with pip list
  % (str(function), name))
/usr/lib/python2.7/site-packages/winrm/transport.py:299: UserWarning: Function <unbound method HTTPKerberosAuth.__init__> does not contain optional arg hostname_override, check installed version with pip list
  % (str(function), name))
fatal: [win1.domain.local]: UNREACHABLE! => {
    "changed": false, 
    "msg": "kerberos: HTTPSConnectionPool(host='win01-wmy4anstz.daa.local', port=5986): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f30681818d0>: Failed to establish a new connection: [Errno -2] Name or service not known',))", 
    "unreachable": true
}

Я не уверен, что мне не хватает.Я протестировал билет Kerberos с моей учетной записью user@domain.local и не обнаружил никаких проблем.

Ниже приведена версия моих пакетов

  • Ansible: 2.8.0
  • Pywinrm: 0.3.0
  • pykerberos: 1.2.1
  • request-kerberos: 0.12.0

1 Ответ

0 голосов
/ 16 июля 2019

У меня была такая же проблема на одном из наших серверов Windows 2016, и я безуспешно просматривал руководство по устранению неполадок.

В конце концов я выяснил, что это была проблема с именем сервера. в моем инвентаре у меня было это как

hosts:
  server-win01.domain.local

ping на server-win01.domain.local был в порядке. Когда я сделал обратный поиск, возвращенное значение было: Server-Win01.domain.local. Один из наших сотрудников назван с большой буквы в DNS Active Directory. Когда я изменил имя хоста на

hosts:
  Server-Win01.domain.local

ansible мог найти хост и плейбук, выполненные нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...