play高階用法

itk發表於2024-08-02

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預設等所有任務執行完成併成功後才執行)

相關文章