Ansible が Jinja2 を介してすべての変数を処理するとすると、次のようなことが可能になります。
- name: Debug sequence item value
debug: msg={{ 'Item\:\ %s'|format(item) }}
with_sequence: count=5 format="%02d"
文字列を次のように正しく補間します。
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"}
なぜこれが機能しないのですか:
- name: Debug sequence item value
debug: msg={{ 'Item\:\ %02d'|format(int(item)) }}
with_sequence: count=5
これにより、何らかの解析の問題が発生し、目的の文字列が冗長にレンダリングされるようになります。
ok: [server.name] => (item=01) => {"item": "01", "msg": "{{Item\\:\\ %02d|format(int(item))}}"}
item
のデフォルト形式は であり、 の値を文字列補間で必要な形式にキャストしないため、上記の例では が文字列であるwith_sequence
こと%d
に注意format()
してください。したがって、 を使用してキャストする必要があります。item
%02d
int()
これはバグですか、それとも何か不足していますか?