Доступно в Windows: разрешение становится / становится_пользователем / проблемы с владельцем - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу выполнить некоторые действия, которые не требуют использования учетной записи администратора. Например, клонирование git-репо или создание папки.

Я пробовал это:

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

Это создает желаемый директой, но когда я захожу как пользователь vagrant и пытаюсь удалить его, я получаю:

Вам необходимо предоставить разрешение администратора для удаления этой папки.

Пользователю Vagrant не предоставлено никаких разрешений для папки gogo1. Мне нужно сделать это дополнительно:

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


Использование win_psexec работает как задумано. Он создает каталог, дает пользователю vagrant разрешения, и поэтому я могу удалить его без запроса указанного выше сообщения.

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

Как я могу использовать become и become_user для создания папки (или клонирования git-репо) и предоставления пользователю всех необходимых разрешений и прав владения (как win_psexec делает?

1 Ответ

0 голосов
/ 30 апреля 2018

Чтобы программа стала работать так, как вам нужно, вам нужно войти в систему в интерактивном режиме, чтобы профиль для пользователя загружался при создании папки.

Чтобы сделать это, вы можете попробовать установить логин_флаги (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

Вы можете прочитать все подробности на становиться_флагами здесь: http://docs.ansible.com/ansible/latest/user_guide/become.html

...