как заставить ansible использовать http + kerberos (ошибка WINRM CONNECTION ERROR: 401 Unauthorized.)

как заставить ansible использовать http + kerberos (ошибка WINRM CONNECTION ERROR: 401 Unauthorized.)

Я настраиваю ansible (CentOS 6.7) для подключения к машине Windows с использованием http, winRM и kerberos.

Из /etc/ansible/hostфайла

[training]
machinename:5985

Я установил специфичный для хоста yaml-файл

ansible_winrm_scheme: http
ansible_port: 5985
ansible_connection: winrm

Затем, следующая команда

 ansible machinename -m win_ping -vvvv

ошибки со следующими

<machinename > ESTABLISH WINRM CONNECTION FOR USER: jnambood on PORT 5985 TO machinename 
<machinename > WINRM CONNECT: transport=plaintext endpoint=http://machinename :5985/wsman
<machinename > WINRM CONNECTION ERROR: 401 Unauthorized.


<machinename > WINRM CONNECT: transport=plaintext endpoint=https://machinename :5985/wsman
<machinename > WINRM CONNECTION ERROR: 500 WinRMTransport. [Errno 1] _ssl.c:492: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
machinename  | FAILED => 500 WinRMTransport. [Errno 1] _ssl.c:492: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Ansible попытался подключиться к http, получил ошибку 401. Как это исправить?

решение1

Если вы установили модуль kerberos и ansible_user содержит @ (например, username@realm), Ansible сначала попытается выполнить аутентификацию Kerberos. Этот метод использует принципал, с которым вы аутентифицированы в Kerberos на управляющей машине, а не ansible_user. Если это не удается, либо потому, что вы не вошли в Kerberos на управляющей машине, либо потому, что соответствующая учетная запись домена на удаленном хосте недоступна, то Ansible вернется к «простой» аутентификации по имени пользователя/паролю.~Введение в Ansible Windows

$ cat ansible/group_vars/os-windows.yml
# <user>@<realm> means use principal in krb5cc, name here doesn't matter
ansible_ssh_user: use@KERBEROS
ansible_ssh_port: 5985
ansible_connection: winrm

$ ansible host.ad.example.com -m win_ping -o
host.ad.example.com | success >> {"changed": false, "ping": "pong"}

Связанный контент