Ansible: Füllen einer Vorlage, die unveränderliche Interpolationen enthält

Ansible: Füllen einer Vorlage, die unveränderliche Interpolationen enthält

Ich muss ein Playbook erstellen, das eine Vorlagendatei nimmt, einige Variablen interpoliert und die resultierende Datei in einem anderen Verzeichnis ablegt.

Der erste Teil des Problems besteht darin, dass die resultierende Datei als weiteres Ansible-Playbook verwendet wird, sodass die Quelldatei andere Interpolationen enthält und diese Interpolationen unverändert beibehalten werden müssen. Nehmen wir als Beispiel an, dass die Quelldatei etwa Folgendes enthält:

key1: {{ value1 }}
key2: {{ value2 }}

Der Wert von key1muss von meinem Playbook interpoliert werden (er soll der Wert der Variable werden ), muss value1aber gleichzeitig so belassen werden, wie er ist (er soll sein ).value2{{ value2 }}

Der zweite Teil des Problems besteht darin, dass ich nicht einfach die Quelldatei ändern und vor den geschweiften Klammern Backslashes hinzufügen kann, da diese Datei von anderen Prozessen aktualisiert wird. Da die Vorlagendatei außerdem von Zeit zu Zeit aktualisiert wird, kann ich nicht vorhersagen, welche Variablen nach der nächsten Aktualisierung übersprungen werden müssen. Ich weiß nur, dass ich interpolieren muss value1, aber ich kenne die Namen der anderen Variablen nicht (heute sind es value2und value3, morgen haben die Entwickler sie value2in umbenannt value2_deprecatedund irgendwo hinzugefügt value3).

Kann ich Ansible bitten, nur zu interpolieren value1?

Danke schön.

Antwort1

Q:"Die Vorlage enthält Interpolationen und diese Interpolationen müssen unverändert beibehalten werden."

A: Standardvariablen deklarieren

    lbr: '{{ "{{" }}'
    rbr: '{{ "}}" }}'
    value1: '{{ lbr }} value1 {{ rbr }}'
    value2: '{{ lbr }} value2 {{ rbr }}'

und erstellen Sie die Vorlage

shell> cat template.yml.j2
key1: {{ value1 }}
key2: {{ value2 }}

Q:"Ich muss nur Wert1 interpolieren."

A: Überschreiben Sie den Standardwert, zB

    - template:
        src: template.yml.j2
        dest: playbook.yml
      vars:
        value1: value1

gibt

shell> cat playbook.yml 
key1: value1
key2: {{ value2 }}

verwandte Informationen