Windows 上的 Ansible 身份验证
Ansible authentication on Windows
我在 windows 主机上使用 Jenkins 运行 ansible 剧本。我正在尝试在 windows 上的 NAS 共享和本地目录之间执行一个非常简单的命令,例如 robocopy
。问题是我一直收到 ACCESS DENIED(5)
。这不是真的,因为我 运行ning ansible 所在的用户 (domain\sysansible
) 已经拥有全部权限。当我在 windows 或任何机器上启动相同的命令时没有问题。我注意到,当 Jenkins 运行ning ansible 剧本时,它被识别为不是 domain\sysansible
而是本地管理员组 windows_host\administrator
的成员,该组无权共享 NAS (他们不能拥有,因为只有域帐户被批准)。
我的库存文件如下所示:
[application_host]
lizard ansible_host=windows_host.domain.companynet.net ansible_connection=winrm ansible_winrm_transport=kerberos ansible_user=sysansible@company.com ansible_password=***** ansible_port=5986 ansible_winrm_server_cert_validation=ignore
我的ansible任务很简单。当我将源代码交换到本地目录而不是 \nas-share\applications\app-home
时,它会起作用。我也使用了 robocopy 参数的某种变体,但它们也失败了。
- name: Sync the contents of home directory to backup site, including subdirectories
win_command: robocopy \nas-share\applications\app-home d:\application\backup\home-folder /E /w:5 /r:2 /log:D:\Applications\log.txt /XD \nas-share\applications\app-home\artifacts
register: info_robocopy
tags:
- robo
我的问题是为什么我被识别为本地管理员帐户组?如何在 windows 上被识别为 domain\sysansible
?
您正在使用基本身份验证,它不允许您将凭据委托给您要将文件复制到的下一个主机。
(参见 https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html)
尝试使用 CredSSP 连接到您的主机或与清单中的以下(示例)变量建立 Kerberos 连接:
ansible_user = user@yourdomain
ansible_password = Passwordthere
ansible_port =5985
ansible_connection = winrm
ansible_winrm_transport = kerberos
ansible_winrm_message_encryption = auto
ansible_winrm_kerberos_delegation = yes
我在 windows 主机上使用 Jenkins 运行 ansible 剧本。我正在尝试在 windows 上的 NAS 共享和本地目录之间执行一个非常简单的命令,例如 robocopy
。问题是我一直收到 ACCESS DENIED(5)
。这不是真的,因为我 运行ning ansible 所在的用户 (domain\sysansible
) 已经拥有全部权限。当我在 windows 或任何机器上启动相同的命令时没有问题。我注意到,当 Jenkins 运行ning ansible 剧本时,它被识别为不是 domain\sysansible
而是本地管理员组 windows_host\administrator
的成员,该组无权共享 NAS (他们不能拥有,因为只有域帐户被批准)。
我的库存文件如下所示:
[application_host]
lizard ansible_host=windows_host.domain.companynet.net ansible_connection=winrm ansible_winrm_transport=kerberos ansible_user=sysansible@company.com ansible_password=***** ansible_port=5986 ansible_winrm_server_cert_validation=ignore
我的ansible任务很简单。当我将源代码交换到本地目录而不是 \nas-share\applications\app-home
时,它会起作用。我也使用了 robocopy 参数的某种变体,但它们也失败了。
- name: Sync the contents of home directory to backup site, including subdirectories
win_command: robocopy \nas-share\applications\app-home d:\application\backup\home-folder /E /w:5 /r:2 /log:D:\Applications\log.txt /XD \nas-share\applications\app-home\artifacts
register: info_robocopy
tags:
- robo
我的问题是为什么我被识别为本地管理员帐户组?如何在 windows 上被识别为 domain\sysansible
?
您正在使用基本身份验证,它不允许您将凭据委托给您要将文件复制到的下一个主机。
(参见 https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html)
尝试使用 CredSSP 连接到您的主机或与清单中的以下(示例)变量建立 Kerberos 连接:
ansible_user = user@yourdomain
ansible_password = Passwordthere
ansible_port =5985
ansible_connection = winrm
ansible_winrm_transport = kerberos
ansible_winrm_message_encryption = auto
ansible_winrm_kerberos_delegation = yes