2016-12-22 12 views
0

with_itemsを使用して、カスタムの安全なモジュールに渡すキーと値のペアのリストを指定しようとしています。with_itemsに渡されたときに文字列を解析できないようにする

キーまたは値の文字列がリスト形式の場合、問題が発生します。例えば、"[('a', 'b'), ('c', 'd')]"。そのような場合、with_itemsはおそらく文字列をリストに変換し、私の設定で大混乱を引き起こします。

最小限の例では、(私はdebugモジュールを使用していますが、カスタムモジュールと動作は同じである)を再生します、このような文字列がうまく渡されwith_itemsなければ

- name: with_items_test 
    debug: msg="{{ item.value }}" 
    with_items: 
    - { value: "[('a', 'b'), ('c', 'd')]" } 
TASK [with_items_test] ********************************************************* 
ok: [localhost] => (item={u'value': u"[('a', 'b'), ('c', 'd')]"}) => { 
    "item": { 
     "value": "[('a', 'b'), ('c', 'd')]" 
    }, 
    "msg": [ 
     [ 
      "a", 
      "b" 
     ], 
     [ 
      "c", 
      "d" 
     ] 
    ] 
} 

- name: with_items_test 
    debug: msg="[('a', 'b'), ('c', 'd')]" 
TASK [with_items_test] ********************************************************* 
ok: [localhost] => { 
    "msg": "[('a', 'b'), ('c', 'd')]" 
} 

答えて

1

これは、with_itemsがどのように動作するかについてではなく、Ansibleテンプレートエンジンについてです。
stringフィルターを使用して変換を防止します。詳細については私のother答えを参照してください。

- name: with_items_test 
    debug: msg="{{ item.value | string }}" 
    with_items: 
    - { value: "[('a', 'b'), ('c', 'd')]" } 
関連する問題