2017-01-29 101 views
5

我開始學習Ansible,但文檔不是太有幫助。在域用戶的Windows上使用Ansible

我已經安裝在RHEL控制機,並建立了必要的主機文件和windows.yml

但是當試圖連接到遠程Windows服務器,以獲得一個乒乓球回來,我得到以下錯誤:

[[email protected] 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 
} 

Installing python-kerberos dependencies

現在我得到這個錯誤:

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 

我對的語法做了什麼錯誤域\用戶?也許我忘了在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 
+0

您是否瀏覽過:https://github.com/ansible/ansible/issues/16478和https://github.com/ansible/ansible/issues/13416? – techraf

+0

您的RHEL控制器是否符合此處的要求:http://docs.ansible.com/ansible/intro_windows.html#active-directory-support? – Zlemini

+0

是的。我有所有要求 –

回答

7

贏dows.yml,請仔細檢查並確保ansible_ssh_user: [email protected]行確實具有大寫的MYDOMAIN.NET領域。某處,KDC的領域請求正以小寫而不是大寫形式發送,導致「KDC回覆與預期不符」錯誤。

krb5.conf,區分大小寫也很重要。首先我會注意到,由於KDC名稱是IP主機的名稱,因此需要將其指定爲完全限定的主機名,如下所示。它假定你的KDC被命名爲「dc1.mydomain.net」。接下來,域名只應在下方的情況下。另一方面,Kerberos領域名稱需要位於上面的大小寫 - 如果在此文件中以小寫形式錯誤地指定領域名稱,這是另一個原因,您可能會收到此錯誤消息。請修改您的整個krb5.conf,如下所示(只更改「dc1」爲實際名稱),它應該可以工作。注意:你不一定需要你的krb5.conf中的兩行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,請參考MIT參考資料。conf:Sample krb5.conf File

主機文件中,檢查以確保您的IP到名稱映射是正確的。根據RFC,Kerberos需要正常運行的DNS,並且如果Hosts文件中的條目已過期,則存在短期風險。最後,雖然我無法分辨出你正在使用哪種版本的Ansible,但我做了一些研究,發現「Ansible 2.0已將ansible_ssh_user,ansible_ssh_host和ansible_ssh_port中的」ssh「棄用爲ansible_user,ansible_host和ansible_port「。這當然可能是問題的一部分。請參閱:Ansible on Windows Documentation

+0

可悲的是它沒有幫助:( –

+0

我添加了更多的答案 - 請仔細檢查我對windows.yml和krb5.conf的新評論。請使用整個krb5.conf,如圖所示,確保在對配置文件進行任何更改後重新啓動Ansible引擎您是否收到相同或不同的錯誤消息?您是否可以重新編輯您的問題以向我們顯示當前的應用程序的windows.yml,krb5.conf和Hosts文件服務器和客戶端? –

+0

好吧,所以我編輯我的問題與您建議的文件。錯誤仍然相同 –

相關問題