我正在尝试以管理员身份在Ansible中启动一些命令。 根据{{3}}:
您可以与成为与ansible_user相同的用户使用成为对象来绕过这些限制,并运行WinRM会话中通常无法访问的命令。
但这对我不起作用。每当我尝试运行以下剧本时:
- hosts: jenkins-win
gather_facts: no
tasks:
- win_whoami:
become: yes
become_user: foo
我得到Failed to become user foo: Exception calling \"RunAsUser\" with \"7\" argument(s): \"LogonUser failed (The user name or password is incorrect, Win32ErrorCode 1326)\"
。
用户foo
是Administrators
组的成员。如果单击带有人民币的图标并选择“以管理员身份运行”,则无需输入密码即可得到UAC提示。如果我禁用UAC,则该命令仅以管理员身份运行。
如果我分别将ansible_become_user
和ansible_become_password
分别设置为foo
和password
,则一切正常。我想避免设置ansible_become_password
,因为我已经通过WinRM登录了。
我正在使用Ansible 2.7.6,带有CredSSP和Windows Server 2016的WinRM。
答案 0 :(得分:0)
尝试添加
become_method=runas
到ansible.cfg
文件。
答案 1 :(得分:0)
问题似乎已经在ansible mailing list上回答了
要回答有关是否要求输入密码的问题。 runas成为方法是Ansible对runas可执行文件https://technet.microsoft.com/en-us/library/bb490994.aspx的实现,其中需要用户名和密码。内部Win32 API要求同时设置用户名和密码,我们不能绕过它。最后,您确实需要指定用于普通帐户的密码,但是如果您在devel分支上,则还有另一种选择。您可以通过将SYSTEM设置为begin_user来成为SYSTEM帐户,并且不需要密码。 SYSTEM帐户就像Windows上的root,可以执行几乎所有操作。