2017-07-11 2 views
0

Ich benutze Vagrant, um eine playbook-local.yml-Datei zu erstellen, um eine lokale Entwicklungsumgebung zu erstellen, die 95% der gleichen Rollen wie die Haupt-playbook.yml ausführt, was schließlich zu dem wird, was erstellt unsere Bühnen-/Produktserver. Wenn ich eine lokale Umgebung erstelle, habe ich 4 Verzeichnisse und 2 Dateien, die ich brauche, um die Berechtigungen für den Host-Rechner (in diesem Fall mein MacBook) zu ändern. Das Ändern der Verzeichnis-Berechtigungen auf dem Gastcomputer scheint nicht zu funktionieren. Wenn ich mich in den Gast einschalte und versuche, etwas zu chmodieren, ändert sich das nicht, aber es ändert sich, wenn ich es vom Host aus mache.Verwenden von Ansible zum Ändern der Host-Ordnerberechtigungen

Meine Frage ist, wie bekomme ich Ansible, Ordner- und Dateiberechtigungen auf meinem Host-Computer zu ändern, so dass es bei der Einrichtung des Projekts nicht notwendig ist, dies manuell zu tun? Hier sind einige Dinge, die ich versucht habe:

- name: Set folder permissions to 0775 
    shell: scripts/set-perms.sh // This runs the chmod commands 
    connection: local 

Und dieses:

- name: Set folder permissions to 0775 
    become: true 
    connection: local 
    command: sudo find "{{ item }}" -type d -exec chmod 0775 {} \; 
    file: path={{ item }} mode=0775 state=directory recurse=yes 
    with_items: 
    - ../../../../www/system/cache 
    - ../../../../www/_images 
    - ../../../../www/app/templates 
    - ../../../../www/html-assets 

ich gegoogelt habe den Mist aus dieser und keiner der Vorschläge, die ich Arbeit gefunden habe. Der häufigste Fehler, den ich bekomme, ist die Frage nach dem sudo-Passwort (siehe unten). Wenn ich ein Passwort eingeben muss, während Ansible läuft, ist das in Ordnung, aber wie mache ich das?

FAILED! => {"changed": false, "failed": true, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 1} 

Antwort

1

Wenn die Dateien/Verzeichnisse auf Ihrem Host-Rechner mit dem gleichen Benutzer gehören, läuft das Textbuch brauchen Sie nicht become: True oder sudo in Ihrem command Modul.

- name: Set folder permissions to 0775 
    become: False 
    connection: local 
    file: path={{ item }} mode=0775 state=directory recurse=yes 
    with_items: 
    - ../../../../www/system/cache 
    - ../../../../www/_images 
    - ../../../../www/app/templates 
    - ../../../../www/html-assets 

Alternativ, wenn die Dateien/Verzeichnisse, die von einem anderen Benutzer gehört, werden Sie zurückkehren müssen ein worden Passwort an Ihren ansible-Textbuch-Befehl oder einrichten passwordless sudo auf dem Host-Maschine zurück zum become: True und entweder zu liefern. Da du Vagrant benutzt, wirst du wahrscheinlich Letzteres wollen.

+0

Dies war die hilfreichste Antwort, danke. Es endete für mich zu arbeiten. –

Verwandte Themen