Was ist der einfachste Weg, um eine leere Datei mit Ansible zu erstellen? Ich weiß, dass ich eine leere Datei im files
Verzeichnis speichern und dann auf den Remote-Host kopieren kann, aber ich finde das etwas unbefriedigend.
Eine andere Möglichkeit besteht darin, eine Datei auf dem Remote-Host zu berühren:
- name: create fake 'nologin' shell
file: path=/etc/nologin state=touch owner=root group=sys mode=0555
Aber dann wird die Datei jedes Mal berührt und als gelbe Linie im Protokoll angezeigt, was ebenfalls unbefriedigend ist ...
Gibt es eine bessere Lösung für dieses einfache Problem?
force: no
.So etwas (das
stat
Modul zuerst verwenden, um Daten darüber zu sammeln und dann mit einer Bedingung zu filtern) sollte funktionieren:Alternativ können Sie möglicherweise die
changed_when
Funktionalität nutzen.quelle
Eine weitere Option, die das Befehlsmodul verwendet:
Das Argument 'create' stellt sicher, dass diese Aktion nicht ausgeführt wird, wenn die Datei vorhanden ist.
quelle
Aufbauend auf der akzeptierten Antwort können Sie Folgendes verwenden, wenn Sie möchten, dass die Datei bei jedem Lauf auf Berechtigungen überprüft wird und diese entsprechend geändert werden, wenn die Datei vorhanden ist, oder wenn Sie die Datei nur erstellen, wenn sie nicht vorhanden ist:
quelle
file: path=/etc/nologin state=touch
Volles Äquivalent zu Touch (neu in 1.4+) - Verwenden Sie stat, wenn Sie den Zeitstempel der Datei nicht ändern möchten.
quelle
file: path=/etc/nologin state=touch modification_time=preserve access_time=preserve
.Das Dateimodul bietet die Möglichkeit, Dateien zu berühren, ohne ihre Zeit zu ändern.
Referenz: https://docs.ansible.com/ansible/latest/modules/file_module.html
quelle
Es stellt sich heraus, dass ich nicht genug Ruf habe, um dies als Kommentar zu formulieren, was ein geeigneterer Ort dafür wäre:
Re. AllBlackt's Antwort: Wenn Sie das mehrzeilige Format von Ansible bevorzugen, müssen Sie das Angebot anpassen
state
(ich habe ein paar Minuten damit verbracht, dies auszuarbeiten, also hoffentlich beschleunigt dies jemand anderen).quelle
Um mit dem Ad-hoc-Befehl eine Datei auf dem Remotecomputer zu erstellen
Bitte korrigieren Sie mich, wenn ich falsch liege
quelle
Geändert, wenn Datei nicht vorhanden ist. Leere Datei erstellen.
quelle
Eine Kombination aus zwei Antworten mit einer Wendung. Der Code wird als geändert erkannt, wenn die Datei erstellt oder die Berechtigung aktualisiert wird.
und eine Version, die auch den Eigentümer und die Gruppe korrigiert und als geändert erkennt, wenn diese korrigiert werden:
quelle