web-dev-qa-db-ja.com

ドメインユーザーがいるWindowsでAnsibleを使用する

私はAnsibleを学び始めていますが、ドキュメントはあまり役に立ちません。

制御マシンをRHELにインストールし、必要なhostsファイルとwindows.ymlを作成しました。

しかし、リモートのWindowsサーバーに接続してポンを取り戻そうとすると、次のエラーが発生します。

[root@myd666 ansible_test]# ansible windows -i hosts -m win_ping
hostname | UNREACHABLE! => {
    "changed": false,
    "msg": "ssl: the specified credentials were rejected by the server",
    "unreachable": true
}

python-kerberos依存関係のインストール

私は今このエラーを受け取ります:

hostname | UNREACHABLE! => {
    "changed": false,
    "msg": "Kerberos auth failure: kinit: KDC reply did not match expectations while getting initial credentials",
    "unreachable": true
}

私のwindows.ymlファイルには以下が含まれています:

# it is suggested that these be encrypted with ansible-vault:
# ansible-vault edit group_vars/windows.yml
ansible_ssh_user: [email protected]
ansible_ssh_pass: password
ansible_ssh_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore

Domain\userの構文に何か問題がありますか?たぶん私はWindowsマシンに何かをインストールするのを忘れましたか? ConfigureRemotingForAnsible.ps1スクリプトのみを実行しましたが、Pythonはインストールされていません。

これは私のkrb5.confファイルです:

[libdefaults]
default_realm = MYDOMAIN.NET
#dns_lookup_realm = true
#dns_lookup_kdc = true

[realms]
MYDOMAIN.NET = {
kdc = dc1.mydomain.net
default_domain = hpeswlab.net
}

[domain_realm]
.mydomain.net = MYDOMAIN.NET
 mydomain.net = MYDOMAIN.NET

そして、私はKinitを使用してトークンを取得します:

kinit -C [email protected]

klist

Klist出力:

Valid starting       Expires              Service principal
01/31/2017 11:25:33  01/31/2017 21:25:33  krbtgt/[email protected]
        renew until 02/01/2017 11:25:29

windows.ymlで、ansible_ssh_user: [email protected]行に実際に大文字のレルムMYDOMAIN.NETが含まれていることを再確認してください。どこかで、KDCへのレルム要求が大文字ではなく小文字で送信されているため、「KDC応答が期待と一致しませんでした。」エラーが発生します。

krb5.confでは、大文字と小文字の区別も重要です。まず、KDC名はIPホストの名前であるため、以下に示す例のように、完全修飾ホスト名として指定する必要があることに注意してください。 KDCの名前が「dc1.mydomain.net」であると想定しています。次に、ドメイン名は小文字の場合のみにする必要があります。一方、Kerberosレルム名は大文字である必要があります-このファイルでレルム名が小文字で誤って指定されている場合、このエラーメッセージが表示される可能性があります。 krb5.conf全体を以下に示すように変更してください(「dc1」のみを実際の名前に変更してください)。これで機能するはずです。補足:krb5.confに必ずしも2つのdns_lookup_行が必要なわけではないので、以下に従ってコメントアウトしてください。これらは MIT Kerberos Documentation によるフォールバックメカニズムであり、単純なユースケースで実際に問題を引き起こす可能性があります。いずれかの構成ファイルを変更した後、再度テストする前に、必ずAnsibleエンジンを再起動してください。

[libdefaults]
default_realm = MYDOMAIN.NET
#dns_lookup_realm = true
#dns_lookup_kdc = true

[realms]
MYDOMAIN.NET = {
kdc = dc1.mydomain.net
default_domain = mydomain.net
        }

[domain_realm]
.mydomain.net = MYDOMAIN.NET 
mydomain.net = MYDOMAIN.NET

Krb5.confを適切に設定する方法については、次のMITリファレンスを参照してください: サンプルkrb5.confファイル

Hostsファイルで、IPから名前へのマッピングが正しいことを確認します。 RFCによると、Kerberosには適切に機能するDNSが必要であり、Hostsファイルに古いエントリが含まれている場合はDNSをショートチェンジするリスクがあります。

最後に、使用しているAnsibleのバージョンを特定できませんでしたが、調査を行ったところ、「Ansible 2.0では、ansible_ssh_user、ansible_ssh_Host、ansible_ssh_portの「ssh」が廃止され、ansible_user、ansible_Host、ansible_portになりました。 「」これは確かに問題の一部である可能性があります。参照: WindowsドキュメントでAnsible

10
T-Heron