Wie um zu überprüfen, ob ein Element vorhanden ist in einem Ansible array?
Sagen wir, ich habe das folgende Beispiel, die Speicherung aller git config
Werte in einem Ansible variable:
- shell: git config --global --list
register: git_config_list
Ansible speichert das Ergebnis dieses Befehls in der git_config_list
variable, und eines der Elemente ist stdout_lines
mit der Ausgabe des Befehls in ein array von Eingaben, z.B.
[
"user.name=Foo Bar",
"[email protected]"
]
Wie kann ich überprüfen, ob ein bestimmter Wert bereits gesetzt ist, z.B. für die überprüfung, die user.name
einen Wert hat?
Gibt es eine Möglichkeit zu nennen, so etwas wie contains
auf das array, kombiniert mit einer regular expression, die mir erlaubt, um den Wert zu finden, den ich Suche? Oder muss ich eine Schleife über die stdout_lines
Einträge zu finden, was ich Suche?
Ein Beispiel, wie man so etwas tun würde geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Theorie sollte das möglich sein durch die Kombination der Filter
match
undselect
. Letztere gibt nur die Liste der Elemente, die übergeben Sie einen anderen filter. Dann könnte man den test für die Länge des Ergebnisses.In der Theorie. Habe es gerade getestet und ich kann nicht ankommen es zu wirken. Im Allgemeinen sind die
select
(sowie diereject
) - filter gibt einen string zurück, wie<generator object _select_or_reject at 0x10531bc80>
auch mit einfachen filtern, wie das Beispiel aus den docs mitodd
. War nicht in der Lage, eine Lösung zu finden noch. Vielleicht haben Sie mehr Erfolg.Aber Sie konnte einfach
join
Ihre Liste zu einem string, und dann die Suche in der Zeichenkette mitmatch
. Während es hässlich ist, es funktioniert.select
umgewandelt werden können, um eine Liste mit dem list filter:| list
Einfaches python -
in
tun würde just fine, NOTE, die ich verwendenstdout
stattstdout_lines
:Alles in allem
ansible
ist schrecklich für die Programmierung. Versuchen Sie, so viel wie Sie können außerhalb des playbook und schreiben nur die Orchestrierung-Logik im inneren des playbook. Hier sind ein paar Beispiele, wie Sie es tun können mit--get
Möglichkeitgit
.Wählen Sie mit und Spiel (verlängern Antwort von udondan):