play高階用法
控制併發更新主機的數量
# 指定具體數字
---
- name: test1 serial
hosts: all
serial: 2 # 每次同時處理2個主機
max_fail_percentage: 50 # 當兩臺機器中一臺執行失敗,既終止task
或者
#也可以使用百分比進行控制
---
- name: test2 serail
hosts: all
serial: "20%" #每次只同時處理20%的主機
loop迴圈
loop迴圈建立使用者,ansible引用變數是“{{ 變數名 }}”,loop的預設變數名是item
cat users.yml
---
- name: 批次建立使用者
hosts: node1
tasks:
- name: 建立使用者task
user:
name: "{{ item }}"
state: present
loop:
- testuser1
- testuser2
ansible錯誤控制
# 結果有3種,ok(無變化) changed(有變化) failed(失敗)
1.task控制的條件判斷錯誤控制
when -> skip
changed_when -> changed/ok
failed_when -> failed
2.網路相關的錯誤
unreachable,一般和ssh埠,ssh密碼,ssh免密,sudo提權配置等等網路和ssh服務配置相關的部分
3.task的錯誤忽略
ignore_errors -> ignored,忽略預期的錯誤,我們可能預料到task的位置會出現錯誤,所以我們為了讓執行這
個task的節點可以繼續執行下去,我們需要對task設定錯誤忽略
4.錯誤控制結合使用的內容
register變數
facts變數
magic變數
debug模組
5.錯誤控制裡面有個錯誤控制三件套
block: 定義一組執行的task
rescue: 如果block裡面的task執行失敗了,將會使用rescue部分定義的task進行回滾(roll out)
always: 不管block和rescue執行的結果如何,都會執行。
ansible-handers
# play層面設定force_handlers: yes
# 防止handlers遇到palybook執行錯誤,不執行hanlers,(因為handlers預設等所有任務執行完成併成功後才執行)