#概要
AnsibleからKerberos認証を利用してWindows環境へ接続してみたら、いろいろあったので、方法や注意点を備忘録としてまとめました。
#環境
Ansible環境:CentOS7.6+Ansible2.8.5
ターゲット:Windows2016(ホスト名=ws16001
)
ドメインコントローラ:Windows2016(ホスト名=ad01
、ドメイン名=hoge.com
)
#ターゲット側の設定
ターゲットマシンは、ドメイン(hoge.com)に参加しておきます。
winrmで、ServiceのAllowUnencrypted
やauthのBasic
を変更する必要はありません。
(http通信のBasic認証を利用するときの設定ですね。)
#Ansible側の設定
Ansible側ですが、公式サイトや、先人達の優良な記事があるので、詳細は割愛します。
当方が実施したコマンドは、以下です。
yum -y install krb5-devel krb5-libs krb5-workstation
pip install pywinrm[kerberos]
また、Kerberos用ファイルの内容は以下の通りです。
注意点としては、よく挙げられていますが、大文字小文字は気をつける必要があります。
(変更部分を抜粋)
[libdefaults]
default_realm = HOGE.COM
[realms]
HOGE.COM = {
kdc = ad01.hoge.com
admin_server = ad01.hoge.com
defautl_domain = ad01.hoge.com
}
[domain_realm]
.hoge.com = HOGE.COM
hoge.com = HOGE.COM
下記コマンドにて、Kerberos認証の動作確認をします。
klist
コマンドで、チケット入手ができていればOKです。
kinit -C administrator@HOGE.COM
klist
※チケットを破棄する場合は、kdestory
を実行します。
Ansibleのインベントリファイルは以下の感じです。
[windows]
ws16001
[windows:vars]
ansible_username=Administrator@HOGE.COM
ansible_password=password
ansible_port=5985
ansible_connection=winrm
なお、Ansible2.3以降は、インベントリファイルにansible_user
とansible_password
を指定しておけば、自動的にチケットの取得や破棄を行ってくれます。
Automatic Kerberos Ticket Management
#接続確認
接続確認は、win_ping
で行いました。
(接続コマンド等は割愛します)
その際、以下点で引っかかりました。
1)プロキシ設定
IPアドレスは除外していたのですが、FQDNは除外していなかったので、
ずっとプロキシ経由でアクセスしようとしていました。(-vvvvv
オプションで判明しました・・・)
→FQDNを除外設定して、直接接続するようになりました。
2)Ansibleのインベントリファイル
IPアドレスはNGで、FQDNで指定する必要がありました。
(http通信のときに、IPアドレスを指定していたので、そのまま利用したのがまずかった。。)
当然名前解決できる必要がありましたが、これは、hostsファイルへの記載でもOKでした。