我按照指定here设置了Ansible Tower和Windows Kerberos / Active Directory身份验证。这也是官方文档中解释的相同程序。这里的信息是我做的 -
我可以通过运行建议的kinit命令来验证我的配置是否正常工作 -
kinit -C username@DOMAIN.COM
klist命令在显示预期信息之后运行
klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: username@DOMAIN.COM
Valid starting Expires Service principal
2016-05-03T10:59:04 2016-05-03T20:59:04 krbtgt/DOMAIN.COM@DOMAIN.COM
renew until 2016-05-04T10:58:59
My Ansible Tower库存只包含一个VM,在主机属性中的变量下,我已指定以下详细信息 -
ansible_connection: winrm
ansible_port: "5986"
ansible_ssh_user: username@DOMAIN.COM
我认为没有必要输入密码,因为票证是通过kinit命令获得的。我已经尝试通过指定 ansible_ssh_pass 添加上面的密码,但这没有帮助。
现在,当我运行“作业模板”时,它会立即显示此消息。
TASK [setup] *******************************************************************
fatal: [VM-NAME]: FAILED! => {"failed": true, "msg": "kerberos: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('No Kerberos credentials available', -1765328243)), plaintext: 401 Unauthorized."}
如何解决此问题?
答案 0 :(得分:1)
对于此问题的任何未来潜伏者...在Windows客户端上从命令提示符处将其设置为admin:
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
答案 1 :(得分:1)
我的环境中大约有10%的服务器遇到了类似的问题:
"msg": "kerberos: authGSSClientStep() failed: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Server not found in Kerberos database', -1765328377))",
原因是配置了PTR记录但是它不正确或有重复的PTR记录。
您可以通过host
命令在bash中进行检查,也可以通过Resolve-DnsName
在PowerShell中进行检查。
示例:
检查DNS记录
host {{ Server FQDN }}
根据先前DNS查找的输出检查反向DNS记录:
host {{ Returned IP from Normal DNS lookup }}
请注意,没有PTR记录可以,但不正确或重复的PTR记录可能会导致问题。
答案 2 :(得分:0)
如https://medium.com/@ripon.banik/ansible-windows-domain-authentication-1531d1d256c3
所示确保Windows主机已加入域,并且清单中的ansible_host是使用主机的FQDN设置的。
通常我用IP填充清单文件,将其更改为FQDN可以为我解决此问题。
此处还有更多信息:https://groups.google.com/g/ansible-project/c/tdDj4pabj30