2016-11-24 65 views
1

我想使用Ansible來自動化我的部署過程。讓我對此說幾句話。在我的情況下,部署過程分爲兩個步驟:Ansible,windows - 如何訪問網絡文件夾?

  • 更新數據庫(SQL腳本)

  • 副本組預定義的文件到各種網絡文件夾(在不同的機器)

對於這個目的我使用特殊的自寫程序叫做Installer.exe。如果我自己運行它,它會以我的憑據執行操作。所以它擁有我的全部權利,例如訪問網絡文件夾和SQL Databese。 enter image description here 我想使用Ansible作爲我的程序(Installer.exe)的包裝,而不是它。我的目標場景 - Ansible準備配置文件並在遠程Windows計算機上運行我的安裝程序。我遇到了問題 - 我的程序由Ansible運行並不是我的全部權利。它可以在同一臺機器上成功訪問SQL數據庫1,但無法訪問遠程機器上的SQL數據庫2或訪問網絡文件夾。我總是在網絡訪問上得到「訪問被拒絕」,SQL數據庫說了一些關於NT AUTHORITY \ ANONYMOUS LOGON的內容。 它看起來像雙跳問題,但並不完全如我所知。雙跳是關於服務帳戶的,但我試圖用我自己的個人帳戶訪問遠程服務器。

UPD 1: 我該組變量是:

ansible_user: [email protected] 
ansible_port: 5986 
ansible_connection: winrm 
ansible_winrm_server_cert_validation: ignore 
ansible_winrm_operation_timeout_sec: 120 
ansible_winrm_read_timeout_sec: 150 
ansible_winrm_transport: kerberos 
ansible_winrm_kerberos_delegation: yes 

與Ansible我運行以下命令的任何行動之前:

$> kinit [email protected] 

,並輸入密碼。稍後如果運行klist,我可以看到一些有效的票據。我打算使用域帳戶,但不是本地系統帳戶。我做對了嗎?

UPD 2:如果我在劇本中添加這樣的命令:

... 
raw: "klist" 
... 

我得到的是這樣的:

fatal: [targetserver.abc.ru]: FAILED! => {"changed": true, "failed": true, "rc": 1, "stderr": "", "stdout": "\r\nCurrent LogonId is 0:0x20265db4\r\nError calling API LsaCallAuthenticationPackage (ShowTickets substatus): 1312\r\n\r\nklist failed with 0xc000005f/-1073741729: A specified logon session does not exist. It may already have been terminated.\r\n\r\n\r\n", "stdout_lines": ["", "Current LogonId is 0:0x20265db4", "Error calling API LsaCallAuthenticationPackage (ShowTickets substatus): 1312", "", "klist failed with 0xc000005f/-1073741729: A specified logon session does not exist. It may already have been terminated.", "", ""]} 
+0

具有相同的問題。嘗試訪問網絡文件夾時,我的訪問被拒絕。 另外:win_command:whoami顯示了我爲ansible_user設置的正確的域用戶,而win_command:'net use s://some.server.name/a_network_folder/user:domain \ username password'給出了「done done」運行win_command:net use顯示驅動器s:爲「不可用」。 您是否設法解決此問題?怎麼樣? –

回答

2

根據您的問題聲明,這聽起來像在Windows機器運行installer.exe在本地系統帳戶下,它沒有Windows機器本身以外的權限,並且總是會嘗試在SQL數據庫2上運行任何過程時失敗。這不會是Kerberos雙跳場景。例如,在運行installer.exe和SQL Database 2的圖表中間的Windows機器之間只有一個跳點。由於您的Ansible程序正在將installer.exe封裝在其中,因此除非丟失了某些東西,否則請運行Windows計算機上的Ansible程序具有AD域憑據,具有適當的SQL數據庫2權限。

編輯:由於您問題的重點是基於解決有關NT AUTHORITY \ ANONYMOUS LOGON的SQL數據庫2消息,不是這是一個Kerberos雙跳問題(看起來不像),這就是我回答的問題。請注意,您有ansible_user定義但不是ansible_ssh_pass。文檔中有一個明顯的錯誤(http://docs.ansible.com/ansible/intro_windows.html),所以請使用ansible_ssh_pass而不是ansible_ssh_password。

+0

我打算使用域accoung,但不知道如果我做對了。我更新了我的問題,你能看到'UPD 1'部分嗎? – QtRoS

+1

我編輯了我的答案,以迴應你的問題編輯... –

+0

我試過所有可能的組合/有沒有ansible_user/ansible_ssh_pass,沒有運氣。再次更新帖子。 – QtRoS

相關問題