2016-06-21 19 views
0

シェルコマンドでネストループを使用しようとしています。カウンターパート(0から5までのループ)は、ライン上で代用されておらず、スレーブエラーが原因です。ネストされたループカウンタの問題の可能性のあるスローエラー

タスクはちょうど私たちが

output.results.0.stdout.split('|').1 
or 
output.results.1.stdout.split('|').1 

としてタスクを与えるときに我々はcorrspondin IPを取得しているデバッグ出力

changed: [1.1.1.1] => (item=2.2.2.2) 
changed: [1.1.1.1] => (item=3.3.3.3) 
changed: [1.1.1.1] => (item=4.4.4.4) 
changed: [1.1.1.1] => (item=5.5.5.5) 
changed: [1.1.1.1] => (item=6.6.6.6) 
changed: [1.1.1.1] => (item=7.7.7.7) 

を表示する

- name: debug 
    debug: var=output.results.{{item}}.stdout.split('|').1 
    with_items: 
    - 0 
    - 1 
    - 2 
    - 3 
    - 4 
    - 5 

- name: Remove Groups 
    shell: echo neutron port-update {{ output.results.{{item}}.stdout.split("|").1 }} --no-security-groups > /tmp/test.txt 
    with_items: 
    - 0 
    - 1 
    - 2 
    - 3 
    - 4 
    - 5 

以下の通りです。

しかし、5回のために、私たちのループには、項目は次のエラー

fatal: [1.1.1.1]: FAILED! => {"failed": true, "msg": "template error while templating string: expected name or number. String: echo neutron port-update {{ output.results.[item].stdout.split(\"|\").1 }} --no-security-groups > /tmp/test.txt"} 

答えて

1

すでに神社変数/式として解釈されvar部分が生じsubsttitutedなっていないとき。したがって、中括弧を含む変数を内部に配置することはできません。また、互いに式を入れ子にすることはできません。 {{ foo {{ bar }} }}は無効な構文です。

これは動作するはずです:

debug: msg="{{ output.results[item].stdout.split('|').1 }}" 
... 
shell: echo neutron port-update {{ output.results[item].stdout.split("|").1 }} --no-security-groups > /tmp/test.txt 
関連する問題