2016-11-24 53 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

相关问题