我想使用Ansible來自動化我的部署過程。讓我對此說幾句話。在我的情況下,部署過程分爲兩個步驟:Ansible,windows - 如何訪問網絡文件夾?
更新數據庫(SQL腳本)
副本組預定義的文件到各種網絡文件夾(在不同的機器)
對於這個目的我使用特殊的自寫程序叫做Installer.exe。如果我自己運行它,它會以我的憑據執行操作。所以它擁有我的全部權利,例如訪問網絡文件夾和SQL Databese。 我想使用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.", "", ""]}
具有相同的問題。嘗試訪問網絡文件夾時,我的訪問被拒絕。 另外: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:爲「不可用」。 您是否設法解決此問題?怎麼樣? –