Ansible - 流程控制
Contents
透過 Playbook 可以很方便執行大量機器部署,掌握如何操控 Playbook 流程,例如 Playbook 迴圈或是條件式判斷等操作,能更有效率執行部署機器。
練習環境
可以使用 HowHow 的創建 Lab 練習環境,來操作多台機器練習 Ansible,使用方式請參閱 HowHow 網站。
1. 迴圈 Loop
Loop 迴圈減少 PlayBook 重複內容。
1.1. 簡易的迴圈
使用 loop 關鍵字定義迴圈,並使用 item 當作變數, Playbook 範例:
|
|
1.2. 字典陣列迴圈
當一個迴圈有多個變數可以透字典方式來協助, Playbook 範例:
|
|
2. 條件判斷式
透過條件斷式可以執行更進階操作。
2.1. 簡易的條件判斷
使用 when 關鍵字來定義條件式的判斷開始。
|
|
2.2. 條件判斷列表
選項 | 範例 |
---|---|
等於(字串) | ansible_facts[‘machine’] == ‘x86_64’ |
等於(數值) | ansible_facts[‘max_memory’] == 512 |
大於 | ansible_facts[‘max_memory’] > 512 |
小於 | ansible_facts[‘max_memory’] < 128 |
大於等於 | ansible_facts[‘max_memory’] >= 512 |
小於等於 | ansible_facts[‘max_memory’] <= 128 |
不等於 | ansible_facts[‘max_memory’] != 512 |
變數存在 | ansible_facts[‘machine’] is defined |
變數不存在 | ansible_facts[‘machine’] is not defined |
布林值為1 | ansible_facts[‘hostname’] |
布林值為0 | not ansible_facts[‘hostname’] |
條件有在陣列中 | ansible_facts[‘hostname’] in abc |
3. 小結
程式控制流程與寫程式類似的邏輯,盡可能使用最簡短的方式達成想要的目的。
如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!