Ansible Setting Fakt mit dynamischem Schlüssel / Wert

Joe Lieberman

Ich versuche, aus dem Standard einer Befehlsaufgabe, die ich von einer anderen Rolle aus aufrufe, ansible Fakten zu ermitteln.

Rolle A:

- name: example command
  command: client get -s {{ service }}
  register: vars_string

- name: set vars
  set_fact: vars={{ vars_string.stdout.split('\n')}}
  when:
    - vars_string.stdout | length > 0

- name: set vars as facts
  set_fact: "{{ item }}"
  with_items: "{{ vars }}"

vars Ausgabe:

"vars": [
        "tst=ansible", 
        "example=values"
]

Rolle B:

- debug:
    var: tst

Ergebnisse aus Rolle B:

Erwartung: { "tst": "ansible" }

Wirklichkeit: { "tst": "VARIABLE IS NOT DEFINED!" }

Ich habe versucht, Vars in ein Diktat zu spucken und auch zu verwenden set_fact: "{{ item.key }}" : "{{ item.value }}". Dies ergab die gleichen Ergebnisse.

Ich möchte in zukünftigen Rollen über den vom Befehl zurückgegebenen Variablennamen aufrufen können. Irgendwelche Ideen?

mdaniel

Zwei Punkte zu Ihrem Code-Snippet, die Sie interessieren könnten:

  • Es gibt bereits eine nach Zeilenumbrüchen geteilte Version der Ausgabe Ihres Befehls vars_string.stdout_lines
  • Ich kann nicht sagen, ob Sie diese Variable zufällig ausgewählt haben oder ob Sie versucht haben, sie tatsächlich der integrierten Variablen zuzuweisenvars , aber so oder so, tun Sie das nicht

Wie ich am besten beurteilen kann, gibt es keine unterstützte Syntax zum Zuweisen beliebiger Host-Fakten der obersten Ebene innerhalb einer Aufgabe.

Sie haben zwei Möglichkeiten: Schreiben Sie diese Variablen in eine Datei und include_vars:lesen Sie sie dann ein. Dadurch werden sie als Host-Fakten zugewiesen oder Sie geben zu, wie Sie set_fact:möchten, und geben sich mit den dynamischen Variablen zufrieden, die unter einem bekannten Schlüssel in Host-Fakten leben

Wir werden letzteres zuerst zeigen, weil es kürzer ist:

- set_fact:
    my_facts: >-
      {{ "{" + (vars_string.stdout_lines
      | map('regex_replace', '^([^=]+)=(.+)', '"\1": "\2"')
      | join(",")) + "}"
      }}
  when:
  - vars_string.stdout | length > 0

Beachten Sie natürlich, dass Tricks nicht funktionieren, wenn Ihre Schlüssel oder Werte nicht JSON-freundliche Zeichen enthalten. Wenn diese einfache Version jedoch nicht funktioniert, stellen Sie eine Folgefrage, da viel mehr Tricks enthalten sind die gleiche Ader

Der include_vars:Weg ist:

- tempfile:
    state: file
    suffix: .json
  register: vars_filename

- copy:
    dest: '{{ vars_filename.path }}'
    content: >-
       {{ "{" + (vars_string.stdout_lines
       | map('regex_replace', '^([^=]+)=(.+)', '"\1": "\2"')
       | join(",")) + "}"
       }}

- include_vars:
    file: '{{ vars_filename.path }}'

- file:
    path: '{{ vars_filename.path }}'
    state: absent

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

JSON-Wert mit dynamischem Schlüssel mit Python lesen

PHP: Wert des Arrays mit dynamischem Schlüssel löschen

Winkel 2 erhält Schlüssel und Wert vom JSON-Array mit dynamischem Schlüssel

Verwenden Sie ansible Fakten, um Schnittstellen mit Fakt = Wert zu filtern

So erhalten Sie Wert aus JSON mit dynamischem Schlüssel in Postgres

Attribute als Blöcke mit dynamischem Schlüssel und Wert in Terraform

Aktualisieren Sie den Status mit dynamischem Schlüssel und Wert mithilfe von Reaktions-Hooks

Analysieren von JSONObject mit dynamischem Schlüssel

reagiere setState mit dynamischem Schlüssel

Pydantisches Modellschema mit dynamischem Schlüssel erstellen

Redux Nested State ... mit dynamischem Schlüssel

Dekodieren Sie JSON mit dynamischem Schlüssel

CircularPercentIndicator mit dynamischem Wert

ngTemplateOutlet mit dynamischem Wert

Maximalwertprüfer mit dynamischem Wert

jQuery hasClass() mit dynamischem Wert

Wert mit Schlüssel abrufen

Schlüssel mit Wert tauschen

PHP-Array mit dynamischem Schlüssel zusammenführen

setState-Schlüssel mit dynamischem Index funktioniert nicht - ReactJS

Zugriff auf Objekt durch undefinierten Fehler mit dynamischem Schlüssel

Swift & Firebase - Datenbank mit dynamischem Schlüssel aktualisieren

Jackson - De-Serialize json mit dynamischem Schlüssel

ReactJS setState mit mehrdimensionalem Objekt und dynamischem Schlüssel

Einfache Syntax zum Erstellen eines Objekts mit dynamischem Schlüssel

Zuordnen verschachtelter Objekte mit dynamischem Schlüssel zu Java Object

iOS - Verschachteltes JSON mit dynamischem Schlüssel decodieren

Zugriff auf Objekt mit dynamischem Schlüssel in Typescript

Verschachteltes Array von Objekten mit dynamischem Schlüssel sortieren

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv