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?

InformationsquelleAutor Ivan | 2013-08-05
Schreibe einen Kommentar