Windows上的Ansible:成为/ become_user权限/所有者问题

时间:2018-04-30 12:11:28

标签: windows ansible file-permissions ansible-2.x

我想执行一些不需要使用Administrator帐户的操作。例如,克隆git仓库或创建文件夹。

我试过了:

  - name: Create gogo1 directory
    win_shell: mkdir c:\tmp\gogo1
    become: yes
    become_user: vagrant
    vars:
      ansible_become_pass: vagrant

这会创建所需的directoy,但是当我以用户vagrant登录并尝试删除它时,我得到:

  

您需要提供管理员权限才能删除此文件夹。

用户Vagrant未获得文件夹gogo1的任何权限。 我还需要这样做:

  - name: Change owner of gogo1
    win_owner:
      path: c:\tmp\gogo1
      user: vagrant
      recurse: yes


使用win_psexec按预期工作。它创建了目录,为用户设置了流氓权限,因此我可以删除它而不会被提示上面的消息。

- name: Create gogo2 directory
    win_psexec: 
      command: cmd /k "cd c:\tmp && mkdir gogo && exit"
      username: vagrant
      password: vagrant

如何使用becomebecome_user创建文件夹(或克隆git repo)并为用户提供所有必要的权限和所有权(如win_psexec一样?

1 个答案:

答案 0 :(得分:3)

要成为您想要的工作,您需要以交互方式登录,以便在创建文件夹时加载用户的个人资料。

为此,您可以尝试将login_flags(Ansible 2.5+)设置为如下:

  - name: Create gogo1 directory
    win_shell: mkdir c:\tmp\gogo1
    become: yes
    become_user: vagrant
    become_flags: logon_type=interactive logon_flags=with_profile
    vars:
      ansible_become_pass: vagrant

您可以在此处阅读 become_flags 的所有细节:http://docs.ansible.com/ansible/latest/user_guide/become.html