So formatieren Sie eine variable in Ansible Wert
Gegeben, dass Ansible verarbeitet alle Variablen durch Jinja2, und etwas zu tun, wie dies möglich ist:
- name: Debug sequence item value
debug: msg={{ 'Item\:\ %s'|format(item) }}
with_sequence: count=5 format="%02d"
Welche korrekt interpoliert die Zeichenfolge als:
ok: [server.name] => (item=01) => {"item": "01", "msg": "Item: 01"}
ok: [server.name] => (item=02) => {"item": "02", "msg": "Item: 02"}
ok: [server.name] => (item=03) => {"item": "03", "msg": "Item: 03"}
ok: [server.name] => (item=04) => {"item": "04", "msg": "Item: 04"}
ok: [server.name] => (item=05) => {"item": "05", "msg": "Item: 05"}
Warum dann nicht diese Arbeit:
- name: Debug sequence item value
debug: msg={{ 'Item\:\ %02d'|format(int(item)) }}
with_sequence: count=5
Diese offenbar bewirkt, dass eine Art parsing-Problem, die Ergebnisse in die von uns gewünschte string gerendert wird, ausführlich:
ok: [server.name] => (item=01) => {"item": "01", "msg": "{{Item\\:\\ %02d|format(int(item))}}"}
Fest, dass im obigen Beispiel item
ist ein string, weil das Standard-format von with_sequence
ist %d
, und format()
nicht gegossen, den Wert von item
format erforderlich, die von der string-interpolation %02d
, daher die Notwendigkeit der Besetzung mit int()
.
Ist das ein bug oder bin ich etwas fehlt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es dauerte ein paar versucht, dieses Recht zu bekommen, aber versuchen Sie dieses, statt:
Jinja2 ist ein bisschen komisch.