问题描述
在使用Ansible在Windows 2016服务器上运行多个任务时遇到了以下问题:
– 将服务器加入域SOMEDOMAIN
– 使用Ansible将SOMEDOMAIN\SOMEUSER
添加到本地管理员组
– 以域用户SOMEDOMAIN\SOMEUSER
的身份在连接到域的机器上运行多个任务
最后一部分需要使用become
和runas
来运行Ansible任务(参考Ansible文档)。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据最佳回答,这个问题与组策略有关,可能可以通过与此问题相同的答案解决。
在Windows上使become
正常工作所需的权限似乎是:
– 允许作为服务登录
– 允许本地登录
另外,还有一种解决方案是使用batch
方法,它会将进程运行在类似于设置了密码的计划任务的批处理上下文中。这应该可以绕过大多数WinRM限制,如果become_user
不允许交互式登录,则非常有用。
如果域用户具有Allow Logon as a Batch Job
权限,用户可以像运行计划任务一样运行脚本。
您可以使用Ansible的become
运行脚本,并将登录类型更改为batch
,如下所示:
win_whoami:
become: yes
become_user: 'SOMEDOMAIN\SOMEUSER'
become_method: runas
become_flags: logon_type=batch
方案2
根据回答2,问题可能是由于”Secondary Logon”服务被禁用导致的。启用该服务后,再次运行Ansible playbook即可解决问题。
您可以在此博客文章中找到相关建议。
请注意,这些解决方案可能需要根据您的具体情况进行调整和测试。
以上是解决在域连接的Windows机器上使用Ansible的become
和runas
方法的可能原因和解决方案。
注意:在实施任何更改之前,请确保备份您的系统和数据。
希望对您有所帮助!