簡體   English   中英

在 Windows 上與域用戶一起使用 Ansible

[英]Using Ansible on windows with domain user

我開始學習 Ansible,但文檔並沒有太大幫助。

我已經在 RHEL 上安裝了控制機器並創建了必要的主機文件和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: user@MYDOMAIN.NET
ansible_ssh_pass: password
ansible_ssh_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore

我對Domain\\user\u003c/strong>的語法做錯了嗎? 也許我忘了在 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 user@MYDOMAIN.NET

klist

Klist輸出:

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

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_行,因此請按照下面的說明將它們注釋掉。 根據MIT Kerberos 文檔,這些只是后備機制,實際上可能會在您的簡單用例中導致問題。 修改任一配置文件后,請確保在再次測試之前重新啟動 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

請參閱此 MIT 參考以了解如何正確設置 krb5.conf: 示例 krb5.conf 文件

Hosts文件中,檢查以確保您的 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。 ” 這當然可能是問題的一部分。 請參閱: Windows 上的 Ansible 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM