Ansible på Windows: bliver/become\_user permission/ejer problemer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil udføre nogle handlinger, der ikke kræver brug af administratorkontoen. For eksempel kloning af en git repo eller oprettelse af en mappe.


Jeg prøvede dette:


  - name: Create gogo1 directory
    win\_shell: mkdir c:	mpgogo1
    become: yes
    become\_user: vagrant
    vars:
      ansible\_become\_pass: vagrant


Dette skaber den ønskede directoy, men når jeg er logget ind som bruger vagrant og forsøger at fjerne det, får jeg:



  Du skal give administrator tilladelse til at slette denne mappe.



Brugeren Vagrant er ikke givet nogen tilladelser til mappen gogo1.
Jeg skal også gøre det her:


  - name: Change owner of gogo1
    win\_owner:
      path: c:	mpgogo1
      user: vagrant
      recurse: yes






Brug af win\_psexec fungerer som beregnet. Det skaber mappen, giver brugerens vagrant tilladelserne, og dermed kan jeg slette det uden at blive bedt om at få den ovenstående meddelelse.


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


Hvordan kan jeg bruge become og become\_user til at oprette en mappe (eller klone en git repo) og give brugeren alle nødvendige tilladelser og ejerskab (som win\_psexec gør?

Bedste reference


For at blive til arbejde som du vil have du brug for det til at logge ind interaktivt, så profilen til brugeren indlæses, når mappen er oprettet.


For at gøre dette kan du forsøge at indstille login\_flags (Ansible 2.5+) på sådan måde:


  - name: Create gogo1 directory
    win\_shell: mkdir c:	mpgogo1
    become: yes
    become\_user: vagrant
    become\_flags: logon\_type=interactive logon\_flags=with\_profile
    vars:
      ansible\_become\_pass: vagrant


Du kan læse alle specifikationerne på become\_flags her: http://docs.ansible.com/ansible/latest/user\_guide/become.html[9]