Ansible 2.1.0 mit geworden/become_user nicht Berechtigungen auf die temp-Datei
Ich habe eine ansible 2.1.0 auf meinem server, wo ich die Bereitstellung über vagrant und auf PC zu.
Die Funktion "bereitstellen" haben :
- name: upload code
become: true
become_user: www-data
git: [email protected]:****.git
dest=/var/www/main
key_file=/var/www/.ssh/id_rsa
accept_hostkey=true
update=yes
force=yes
register: fresh_code
notify: restart php-fpm
tags: fresh_code
In diesem Fall mit ansible 2.1.0 bekomme ich eine Fehlermeldung:
fatal: [default]: FAILED! => {"failed": true, "msg": "Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user. For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user"}
Es ansible 2.0.1.0, die ich auf meinem PC ist alles normal - Ordner /var/www/habe den Ordner main mit Besitzer und Gruppe www-data
Wenn ich nur became_user: www-data und wenn ich become_method: sudo mit became_user: www-data - bekam ich denselben Fehler
Was tun müssen, um dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass
www-data
keinen Zugriff auf die gleichen Dateien mit dem default non-root ansible Benutzer erstellt, die Sie verwenden, um mit dem Rechner zu verbinden. Auch die Fehlermeldung zeigt deutlich, dass zu ansible Dokumentation, die beschreibt, welche Möglichkeiten Sie haben, um dieses Problem zu beheben, die beim aktualisieren von ansible 2.0 oder unten.Schlagen Sie vor drei Möglichkeiten, um richtig zu beheben das Problem:
Oder wenn Sie kann nicht jedes dieser Updates, dann können Sie erzwingen, ansible zu laufen, ein bisschen unsicherer Weg (die Schienen werden standardmäßig in ansible 2 und unten), das sollte auch dein problem lösen, aber wäre das nicht zu beheben das zugrunde liegende Sicherheitsrisiko:
become: true become_user: www-data
und alles wird gutacl
Modul auf Debian-Server (Option 2) war mit Abstand die einfachste Möglichkeit für mich, und das funktioniert auch, wenn Sie "verlassen, temp-Dateien auf dem server" aktiviert debugging. Ich gab auf, Ansible pipelining arbeiten (OS X 10.11 client, Debian 7 Server, habe versucht, verschiedene config-Datei ändert sich aber nichts funktionierte). Ich fand auch, dass mit dem "verbinden als root" - option lief in ein unbedeutender bug, wo die meisten das playbook wurde schweigend übergangen.--ask-become-password
(option 3), die Ursache ist das Problem - installieren Sie einfach dieacl
- Modul, um Sie zu beheben: "Playbook fragt nach sudo Passwort und verwendet es zu sudo (Sie Holen Sie sich ein Passwort Fehler wenn falsch geschrieben) aber dann beendet wird, ohne Fehler, nachdem Sie die [setup] implizite Aufgabe (die angezeigt wird, um erfolgreich zu sein)". Scheint wie eine Ansible 2.1.0 bug.Unter debian/ubuntu können Sie dies beheben, indem Sie zuerst die Installation der
acl
Paket auf dem remote-host, wie mit diesem ansible Aufgabe:Gleiche Sache mit redhat/centos -- installieren Sie die
acl
Paket auf dem remote-host:fstab
oder ein reboot?