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陣列
- 陣列迴圈陣列
- C 語言實現使用靜態陣列實現迴圈佇列陣列佇列
- C 語言實現使用動態陣列實現迴圈佇列陣列佇列
- Java後臺接收前端傳遞的陣列物件引數的處理Java前端陣列物件
- 陣列迴圈移位陣列
- 陣列常見的遍歷迴圈方法、陣列的迴圈遍歷的效率對比陣列
- jQuery實現的多個陣列合並程式碼例項jQuery陣列
- 陣列迴圈輸出陣列
- awk 陣列和迴圈陣列
- 給一個介面傳遞引數,並接收返回的引數
- 迴圈實現從一個陣列中按順序任意擷取幾個字元。陣列字元
- Go 接收命令列引數Go命令列
- Python多個陣列合並(拼接)為一個陣列Python陣列
- Python多個陣列合並Python陣列
- for..in 迴圈陣列需注意陣列
- php陣列迴圈遍歷PHP陣列
- 迴圈佇列C++實現佇列C++
- 1到100迴圈,並把奇數放到陣列中,把偶數放到map中陣列
- 原生js實現的多個陣列合並效果程式碼例項JS陣列
- foreach迴圈和記憶體中的陣列記憶體陣列
- 佇列的一種實現:迴圈佇列佇列
- 陣列元素迴圈右移問題陣列
- 迴圈陣列最大子段和陣列
- linux awk 陣列和迴圈Linux陣列
- 給定一個整數陣列,找出總和最大的連續數列,並返回總和。陣列
- 如何遞迴實現陣列求和遞迴陣列
- while迴圈和do迴圈、緩衝區、一維陣列While陣列
- 1_使用swiper陣列物件迴圈圖片遇到的問題陣列物件
- 陣列中未出現的最小正整數陣列
- 實體類定義陣列物件,和物件陣列物件
- JS使用迴圈按指定倍數分割陣列組成新的陣列的方法JS陣列
- Vue實現對陣列、物件的深拷貝、複製Vue陣列物件
- 位運算實現整數與位元組陣列轉換陣列
- 輸入一個整數陣列,輸出奇偶數相間排列的陣列陣列
- 手擼MQ訊息佇列——迴圈陣列MQ佇列陣列