Ansible で http + Kerberos を使用するように強制する方法 (エラー WINRM 接続エラー: 401 権限がありません。)

Ansible で http + Kerberos を使用するように強制する方法 (エラー WINRM 接続エラー: 401 権限がありません。)

http、winRM、Kerberosを使用してWindowsマシンに接続するようにansible(CentOS 6.7)を設定しています

/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"}

関連情報