我的場景有點類似于這里提到的
但有點不同,讓我以 Vladimir Botka 在上述問題解決方案中提到的相同例子為例,添加 name:c 和 name:d 塊
output:
- Name: A
source: [a, b, c, a, b, c]
dest: [x,y,z]
- Name: B
source: [a, b, c, a, b, c]
dest: [x.c, y, z, x, y, z]
- Name: C
source:
dest:
- Name: D
source: "1.2"
dest: "x"
我使用了上面帖子中建議的相同答案,但做了一些修改:
- set_fact:
out1: "{{output |replace('None','[]')}}"
- set_fact:
out: "{{ out|d([]) [{'Name': item.Name,
'source': _src,
'dest': _dst}] }}"
loop: "{{ out1 }}"
vars:
_src: "{{ item.source|unique}}"
_dst: "{{ item.dest|unique}}"
- debug:
var: out
我使用了out1: "{{output |replace('None','[]')}}"cause loop is failed for name:cas source 和 dest 是空的,而不是一個串列,我通過替換Noneas將它列出來[],為了克服回圈錯誤,我能夠修復回圈錯誤。不確定它的方法是否正確,但解決了回圈錯誤問題。
但我得到第二個錯誤是Object of type set is not JSON serializable對name:d事業的源和目標是不是一個串列。
如何修復此錯誤或任何解決方法?
uj5u.com熱心網友回復:
問:“源和目標不是串列時出錯”
A:如果值的型別是串列,則過濾唯一項,否則復制值,例如
- set_fact:
out: "{{ out|d([]) [{'Name': item.Name,
'source': _src,
'dest': _dst}] }}"
loop: "{{ out1 }}"
vars:
_src: "{{ (item.source|type_debug == 'list')|
ternary(item.source|unique, item.source) }}"
_dst: "{{ (item.dest|type_debug == 'list')|
ternary(item.dest|unique, item.dest) }}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367485.html
上一篇:用反引號替換單引號
