ansible-playbook接收物件陣列引數並實現對多個task整體迴圈
緣起
業務需要在ansible中進行迴圈操作,但是由於原playbook中tasks之間有順序關係,所以希望可以將多個task整體迴圈,但是網上找到的大部分playbook迴圈案例都是針對單個task迴圈。
一開始的思路是迴圈role,但是無法生效,機緣巧合看到了include_tasks
,測試之後發現可以滿足需求,特此記錄一下。
原理
通過include_tasks
和with_items
對tasks.yml
檔案內的所有task進行整體迴圈,而不是在每個task上寫with_items
。
注:雖然我認為用
roles
更優雅,但經測試roles
無法支援with_items
,也無法將{{ item.* }}
透傳到role內部。如果有大佬知道相關寫法歡迎交流~
相關檔案
目錄結構
hosts
192.168.111.11 ansible_ssh_port=[port] ansible_ssh_user=[username] ansible_ssh_pass=[password]
main.yml
---
- hosts: all
gather_facts: no
vars:
diskParamList:
- disk: /dev/sdb
diskfullpath: /dev/sdb1
fstype: ext4
mountDir: /data
tasks:
- include_tasks: tasks.yml
with_items: "{{ diskParamList }}"
tasks.yml
---
- name: tasks
block:
- name: haha
debug:
msg: "{{ item.fstype }} {{ item.diskfullpath }} {{ item.mountDir }}"
- name: heihei
debug:
msg: "{{ item.disk }} - 11"
param.json
{
"diskParamList":[
{
"disk":"1",
"diskfullpath":"1",
"fstype":"1",
"mountDir":"1"
},
{
"disk":"2",
"diskfullpath":"2",
"fstype":"2",
"mountDir":"2"
},
{
"disk":"3",
"diskfullpath":"3",
"fstype":"3",
"mountDir":"3"
}
]
}
執行
命令
ansible-playbook -i hosts main.yml -e "@param.json"
輸出
可以看到輸出中迴圈是以tasks檔案中的一組task(而不是單個task)為單位迴圈的。
相關文章
- 後臺接收Json請求引數相容陣列和單個物件JSON陣列物件
- 靜態佇列,迴圈陣列實現佇列陣列
- js陣列迴圈方法對比JS陣列
- 陣列迴圈陣列
- Java後臺接收前端傳遞的陣列物件引數的處理Java前端陣列物件
- 陣列常見的遍歷迴圈方法、陣列的迴圈遍歷的效率對比陣列
- Python多個陣列合並Python陣列
- Python多個陣列合並(拼接)為一個陣列Python陣列
- Go 接收命令列引數Go命令列
- 1到100迴圈,並把奇數放到陣列中,把偶數放到map中陣列
- PAT1008 陣列元素迴圈右移問題(java實現)陣列Java
- for..in 迴圈陣列需注意陣列
- 迴圈佇列C++實現佇列C++
- 實體類定義陣列物件,和物件陣列物件
- 給定一個整數陣列,找出總和最大的連續數列,並返回總和。陣列
- 佇列的一種實現:迴圈佇列佇列
- 1_使用swiper陣列物件迴圈圖片遇到的問題陣列物件
- 陣列中未出現的最小正整數陣列
- while迴圈和do迴圈、緩衝區、一維陣列While陣列
- SpringMVC中@RequestBody接收前端傳來的多個引數SpringMVC前端
- 位運算實現整數與位元組陣列轉換陣列
- 輸入一個整數陣列,輸出奇偶數相間排列的陣列陣列
- 手擼MQ訊息佇列——迴圈陣列MQ佇列陣列
- postman測試多檔案上傳,並且後臺接收檔案陣列Postman陣列
- 給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。陣列
- 迴圈佇列的實現及細節佇列
- 【LeetCode-陣列】陣列式整數加法LeetCode陣列
- Js陣列物件的屬性值升序排序,並指定陣列中的某個物件移動到陣列的最前面JS陣列物件排序
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- O1空間複雜度實現陣列迴圈右移_LeetCode189複雜度陣列LeetCode
- 使用 call/cc 實現計數迴圈
- Go_ if else語句 ,,迴圈,,switch,,陣列Go陣列
- 457. 環形陣列是否存在迴圈陣列
- 資料結構-迴圈佇列(Python實現)資料結構佇列Python
- JavaScript 拼接多個陣列並刪除重複元素JavaScript陣列
- 陣列中每個陣列元素出現的次數陣列
- 3516 求n個整數的最小值 迴圈結構
- 習題8-3 陣列迴圈右移 及 練習7-8 方陣迴圈右移陣列