我想使用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:为“不可用”。 您是否设法解决此问题?怎么样? –