![Ansible with_items 不循環](https://rvso.com/image/776319/Ansible%20with_items%20%E4%B8%8D%E5%BE%AA%E7%92%B0.png)
我想我已經這樣做太久了,但我一生都無法弄清楚為什麼我的第二次帶有項目不像我的第一個那樣循環。我已經嘗試過使用json_query就像第一個任務一樣,這沒有幫助。
任務:
- name: Set backing_lunuuid
set_fact:
backing_lunuuid: "{{ item | json_query('guest_disk_info.*.backing_lunuuid') }}"
with_items: " {{ rdm_jsondata.results }}"
- debug:
msg: " {{ backing_lunuuid }}"
- name: Remove leading and trailing backing_lunuuid to set disk.UUID
set_fact:
rdm_uuid: "{{ item[10:-12] }}"
with_items: " {{ backing_lunuuid }}"
- debug:
msg: " {{ rdm_uuid }}"
第一個偵錯輸出(對於 backing_lunuuid):
TASK [debug] ********************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": " ['0200110000600507681081007e1800000000000053323134352020', '02000f0000600507681081007e1800000000000051323134352020', '0200150000600507681081007e1800000000000059323134352020', '0200130000600507681081007e1800000000000055323134352020', '0200140000600507681081007e1800000000000056323134352020', '0200240000600507681081007e1800000000000057323134352020', '0200420000600507681081007e1800000000000058323134352020', '0200100000600507681081007e1800000000000052323134352020', '0200120000600507681081007e1800000000000054323134352020']"
第二個調試輸出(對於 rdm_uuid),它不像第一個那樣循環”
TASK [Remove leading and trailing backing_lunuuid to set disk.UUID] *************************************************************************************************************************************
ok: [localhost] => (item=0200110000600507681081007e1800000000000053323134352020)
ok: [localhost] => (item=02000f0000600507681081007e1800000000000051323134352020)
ok: [localhost] => (item=0200150000600507681081007e1800000000000059323134352020)
ok: [localhost] => (item=0200130000600507681081007e1800000000000055323134352020)
ok: [localhost] => (item=0200140000600507681081007e1800000000000056323134352020)
ok: [localhost] => (item=0200240000600507681081007e1800000000000057323134352020)
ok: [localhost] => (item=0200420000600507681081007e1800000000000058323134352020)
ok: [localhost] => (item=0200100000600507681081007e1800000000000052323134352020)
ok: [localhost] => (item=0200120000600507681081007e1800000000000054323134352020)
TASK [debug] ********************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": " 600507681081007e1800000000000054"
任何幫助將非常感激。
答案1
您正在覆蓋rdm_uuid
每個循環迭代。試試這樣的事情:
- name: Remove leading and trailing backing_lunuuid to set disk.UUID
set_fact:
rdm_uuid: "{{ rdm_uuid | default([]) + [item[10:-12]] }}"
with_items: " {{ backing_lunuuid }}"
編輯:第一個是做同樣的事情,但最後一個元素rdm_jsondata.results
包含您需要的資料。試試看rdm_jsondata.results
。
答案2
使用正規表示式_替換將管道中的項目進行切片
rdm_uuid: "{{ backing_lunuuid|map('regex_replace', regex, replace)|list }}"
regex: '.{10}(.*).{12}'
replace: '\1'