Ansible: Objekt mit Bindestrich (Dash) in Playbook ansprechen

In Ansible werden Bindestrich (auch Dash oder Hyphen genannt) normalerweise als Definition von Items in einer Liste verwendet (mehr Dazu in der Ansible Doku). Jedoch kann es vorkommen, dass man ein Objekt verwendet, bei dem ein Variablennamen ebenfalls einen Bindestrich beinhalten. Damit man diese Variable nun in Ansible ansprechen kann, muss man sich eines speziellen Tricks bedienen. Doch fangen wir mit der Ausgangssituation an. Wir haben ein JSON-Objekt, welches wie folgt aussieht:

{
    "Nodes":"local-test01",
    "VMs": {
        "local-test01": {
            "TimeUTC": "2020-01-01T00:00:00Z",
            "DayOfWeek": "Monday",
            "WeeksOfMonth": 1,
            "PRTGID": "000000",
            "LoadbalancerPath": "C:\\inetpub\\Monitoring\\lbcheck.txt",
            "LoadbalancerActiveString": "Active",
            "ExchangeVersion": "EX2019"
        }
}

Angenommen wir möchten nun den Inhalt von „DayOfWeek“ in einer Debug Message in unserem Playbook ausgeben. Normalerweise würde man folgenden Task kreieren:

- name: JSONTesting
  hosts: "all"

  tasks:
    - name: Print JSON
      debug:
        msg: 
          - "DayOfWeek: {{ VMs.local-test01.DayOfWeek }}"

Schaut auf den ersten Blick vernünftig aus, ist es aber nicht. Da der Variablennamen einen Bindestrich beinhaltet, wird beim Starten des Tasks folgende Fehlermeldung geworfen: „The task includes an option with an undefined variable. The error was: ‚local‘ is undefined„. Damit die Debug-Message den korrekten Wert ausgibt, muss dieser angepasst werden:

- name: JSONTesting
  hosts: "all"

  tasks:
    - name: Print JSON
      debug:
        msg: 
          - "DayOfWeek: {{ VMs[\"local-test01\"].DayOfWeek }}"

Damit sollte in der Konsole der korrekte Wert, nämlich „Monday“ erscheinen.

You may also like...

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
0
Hinterlass' doch deine Meinung zu diesem Artikelx