Wie rekursiv ändern Sie Eigentümer und Gruppe auf ein Verzeichnis mit Chef?
den resource_directory
hat nur 2 Aktionen zur Verfügung: create
und delete
Muss ich aktualisieren Sie den Besitzer und Gruppe eines Verzeichnisses rekursiv.
Wie mache ich das?
mit einem einfachen resource_execute
?
execute "chown-data-www" do
command "chown -R www-data:www-data /var/www/myfoler"
user "root"
action :run
end
- Erstellen Sie das Verzeichnis, oder einfach nur mit chown-ing eine vorhandene dir?
resource_directory
können Sie diemode
, die Sie verwenden können, um das sticky bit und alles unter es Erben von diesem. Auch auf: tickets.opscode.com/browse/CHEF-690, warum Sie nie Hinzugefügt, rekursive chmod. Ihre execute-Anweisung ist wahrscheinlich der einfachste Weg zu gehen - Nicht sicher, ob es überschreibt die Verzeichnisse oder einfach nur änderungen der Berechtigungen, aber Sie können die
directory
Ressource und dierecursive true
option. - Unbeteiligte user, ähnliches problem. Mithilfe der Active directory-Ressourcen, mit rekursiven Aktion nicht Bearbeiten Besitzer aller Dateien in dem Verzeichnis. Die docs sagen, dass nur Blattknoten ist chowned.
- rekursive option ist festzulegen, erstellen Sie die übergeordnete Verzeichnisse, falls erforderlich
InformationsquelleAutor zabumba | 2014-05-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Standard-Aktion zu nichts, dann haben die Ressourcen, die Schraube Dinge informieren, die perm fixer:
mit mehr Optionen, die Sie könnte die Aktion :ausführen, aber nicht, wenn der übergeordnete Ordner ist schon der richtige Dauerwellen. Könnte man ändern, um eine tiefere/problem-Datei/Verzeichnis, oder mit einem suchen-Befehl ähnlich diese
Edit: Update zu reflektieren Kommentar unten
Könnten wir schreiben Koch-Ressource, die iteriert durch Ihre Verzeichnisstruktur und erstellt eine Datei oder ein Verzeichnis Ressource für jede Datei, die es findet, und dann legen Sie Sie zur Verwaltung der Eigentümer und die Gruppe auf diese Dateien. Sie werden das nicht mögen, aber wenn man da tausend Dateien in diesem Verzeichnis, dann bekommst du tausend chef Ressourcen und konvergiert langsam.
Wenn Sie wollen können Sie, in der Tat, roll your own code, der so etwas macht wie das, was ich schrieb in der ticket - tickets.opscode.com/browse/CHEF-690 die @Namen verwiesen wird, aber ich würde nicht empfehlen es.
Wenn Sie versuchen, um zu verhindern, "Manipulation" und fix zufällige Beschädigung von Benutzer-und Gruppen-Attribute, die dann Ihre Lösung ist wahrscheinlich richtig. Sie werden immer ausgeführt, dass der Befehl auf jeder Koch-Konvergenz und die Ressource wird immer so aktualisiert wird, aber der Befehl wird so schnell wie möglich laufen (chown -R ist im wesentlichen konvergente und idempotent, da es überprüft, der Dauerwellen vor, die versuchen, perms). Sie erhalten keine Rückmeldung auf festen Dauerwellen, das ist der einzige Nachteil.
Wenn Sie nur versuchen, zu beheben, der Dauerwellen, einmal auf einen server, dann sollten Sie werfen einen not_if bedingte es, zu überprüfen, dass, wenn das root-Verzeichnis hat die richtigen perms, die Sie nicht führen Sie es jedes mal. Geben Sie idempotentes Verhalten und nicht den Befehl ausführen, auf jedem Lauf, aber der Nachteil ist eindeutig, dass, wenn eine der Dateien in diesem Verzeichnis Struktur hat seine Dauerwellen entstellt durch jemanden oder durch etwas in der Zukunft, dann wird es nicht korrigiert bekommen.
Es ist möglich, verwenden Sie hier für eine einzelne Ressource, die sich verhält wie chown -R und dann berichten, was es behoben (und ein array von Dateien, die hatte Dauerwellen geändert), die wäre nützlich in Fällen, wie SOX und PCI-DSS-Berichte, aber wir derzeit nicht abdecken, die use-case.
tl;dr ist, dass Ihre Lösung ist gut, und Sie können hinzufügen, ein not_if der Hut, wenn Sie wie
chown
mit--verbose
haben es Liste alle Operationen, die Sie durchführen (änderungen oder schon richtige "beibehalten" ownership).--verbose
um eine Liste aller änderungen. Ich könnte mir vorstellen, mit einem ziemlich basic regex könnte man behandeln, sowohlchown
undchmod
Ausgabe-syntax Recht gut für reporting/ - testing der Anwendung von Berechtigungen, wie Sie SEHR ähnlich sind.Wenn dieses als ein one-off um die Berechtigungen zu korrigieren Ihre kürzeste Pfad kann nur Messer ssh. (Ich wusste, dass nach dem Ende hier auf meiner eigenen Suche.)
knife ssh 'name:*' "sudo chown -R $user:$group /full/path/to/directory"
knife ssh 'name:*' "sudo chmod -R 770 /full/path/to/directory"
Wenn ich diese Einstellung von Grund auf neu ich glaube, ich würde das Verzeichnis Pfad und Berechtigungen verfügen, die mit einer Zeile (HINWEIS: explizit gelten die Dauerwellen zu jedem Elternteil im Pfad)
erstellen und dann jede einzelne Datei als cookbook_file.
Ich würde einfach Ressource Verzeichnis mit
action :create
.Pro Dokumentation:
https://docs.chef.io/resource_directory.html