Wie kann ich die Schleife über jede Zeile innerhalb einer Datei mit ansible?
Ich bin auf der Suche nach etwas, das wäre ähnlich with_items:
aber das würde die Liste der Elemente aus einer Datei, anstatt Sie in die playbook-Datei.
Wie kann ich dies in ansible?
- warum gehst du nicht erstellen Sie eine variable für die Liste der Elemente(in einer separaten Datei) und verwenden Sie die variable in
with_items
? - Ich habe klar festgestellt, dass ich noch eine Textdatei mit einem Eintrag pro Zeile. Diese Datei wird generiert, nach außen, so dass ist, warum ich es brauche.
- habe ich entfernt, meine Antwort, ein kleines Missverständnis
- aktualisiert meine Antwort.
- Erstens:
shell: cat file; register: res
nebenwith_items: res.stdout_lines
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich es geschafft, eine einfache alternative:
with_items: "{{ lookup('file', 'files/branches.txt').splitlines() }}"
zur Verwendung der lokalen Datei.Können sagen, Sie haben eine Datei wie
Und Sie wollen, diese Elemente zu installieren.Einfach den Inhalt der Datei in einer Variablen, die mit register.Und diese variable verwenden, für
with_items
. Stellen Sie sicher, dass Ihre Datei hat ein Element pro Zeile.stdout_lines
Schlüsselwith_lines
Ich bin überrascht, dass niemand erwähnt das ansible Lookups, ich denke, das ist genau das, was Sie wollen.
Liest es Inhalte, die Sie verwenden möchten, in Ihrem playbook aber nicht im inneren des playbook von Dateien, Rohr, csv, redis etc aus Ihrem lokalen Steuerung Maschine(nicht aus der remote-Maschine, das ist wichtig, da in den meisten Fällen werden diese Inhalte sind neben Ihrem playbook auf Ihrem lokalen Rechner), und es funktioniert mit ansible Schleifen.
with_lines
hier ist tatsächlich eine Schleife mit Linien-lookup, um zu sehen, wie dielines
- lookup funktioniert, finden Sie den code hier, es läuft einfach alle Befehle, die Sie geben es(so können Sie es geben, eine Sache wie echo, cat, etc), dann split der Ausgabe in Zeilen und gibt Sie zurück.Es gibt viele leistungsstarke-lookups, um eine umfassende Liste, überprüfen Sie heraus die lookup-plugins-Ordner.
Neuesten Ansible empfiehlt,
loop
stattwith_something
. Es kann verwendet werden, in Kombination mitlookup
undsplitlines()
als Ikar Pohorský hingewiesen:files/branches.txt
Bezug auf das playbook.