首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在windows上与域用户一起使用Ansible

在windows上与域用户一起使用Ansible
EN

Stack Overflow用户
提问于 2017-01-29 15:24:29
回答 1查看 19.5K关注 0票数 7

我已经开始学习Ansible了,但是文档并不是很有帮助。

我已经在RHEL上安装了控制机器,并创建了必要的主机、文件和windows.yml

但是,当试图连接到远程Windows服务器以获得一个pong时,我得到以下错误:

代码语言:javascript
运行
复制
[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依赖项之后,

我现在得到了这个错误:

代码语言:javascript
运行
复制
hostname | UNREACHABLE! => {
    "changed": false,
    "msg": "Kerberos auth failure: kinit: KDC reply did not match expectations while getting initial credentials",
    "unreachable": true
}

我的windows.yml文件包含:

代码语言:javascript
运行
复制
# it is suggested that these be encrypted with ansible-vault:
# ansible-vault edit group_vars/windows.yml
ansible_ssh_user: user@MYDOMAIN.NET
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文件:

代码语言:javascript
运行
复制
[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得到了一个令牌:

代码语言:javascript
运行
复制
kinit -C user@MYDOMAIN.NET

klist

Klist输出:

代码语言:javascript
运行
复制
Valid starting       Expires              Service principal
01/31/2017 11:25:33  01/31/2017 21:25:33  krbtgt/MYDOMAIN.NET@MYDOMAIN.NET
        renew until 02/01/2017 11:25:29
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 14:55:15

windows.yml中,请反复检查并确保ansible_ssh_user: user@MYDOMAIN.NET行确实具有大写的领域MYDOMAIN.NET。在某个地方,向KDC发送的领域请求是用小写而不是大写发送的,这导致“KDC答复不符合预期”。错误。

krb5.conf中,区分大小写也很重要。首先,我将注意到,由于KDC名称是IP主机的名称,因此需要将其指定为完全限定的主机名,如下所示。它假设您的KDC名为"dc1.mydomain.net“。接下来,域名应该是小写的。另一方面,Kerberos领域名称需要大写--如果在此文件中以小写错误地指定了领域名称,这也是您可能收到此错误消息的另一个原因。请将整个krb5.conf修改为如下所示(只将"dc1“更改为实际名称),它应该可以工作。附带注意:您不一定需要krb5.conf中的两行dns_lookup_行,因此请按照下面的说明对它们进行注释。这些只是麻省理工学院Kerberos文档的回退机制,实际上可能会导致简单用例中的问题。修改任何配置文件后,请确保在再次测试之前重新启动Ansible引擎。

代码语言:javascript
运行
复制
[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:示例krb5.conf文件,请参阅此MIT参考

主机文件中,检查以确保您的IP到名称映射是正确的。根据RFCs,Kerberos需要一个正常工作的DNS,如果主机文件中有过时的条目,您就有可能对其进行短时间更改。

最后,虽然我无法判断您使用的是哪种版本的Ansible,但我做了一些研究,发现"Ansible 2.0已经从ansible_ssh_user、ansible_ssh_host和ansible_ssh_port中的“ssh”变成了ansible_user、ansible_host和ansible_port。“这当然是问题的一部分。请参阅:Windows文档上的可移植性

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41922521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档