Ansible: Cấu hình Ansible Retry task trong playbook

Ansible: Cấu hình Ansible Retry task trong playbook | Khi bạn thiết kế các tác vụ tự động bằng playbook trong Ansible, bạn sẽ gặp một trường hợp là mong muốn tác vụ cụ thể nào đó có thể tự động chạy lại nếu thất bại.

ansible retry task

Có thể bạn cũng quan tâm:
Tầm quan trọng của tự động hoá trong Công Nghệ Thông TIn
Hướng dẫn copy file trên cùng host với Ansible
Các mẹo giúp tăng tốc độ thực thi Ansible

Cấu hình Retry Task trong Playbook Ansible

Đưới đây là mẫu cấu hình đơn giản để hiểu keyword ‘retries‘.

---
- hosts: all
  connection: local
  tasks:
    - shell: exit 1
      register: task_result
      until: task_result.rc == 0
      retries: 10
      delay: 1
      ignore_errors: yes

Chú thích:

  • until: điều kiện để dừng vòng lặp loop retry.
  • register: cấu hình biến chứa thông tin của quá trình thực thi module ‘shell’ trước đó.
  • retries: số lần chạy lại tác vụ task khi thất bại hoặc chưa thoả điều kiện.
  • delay: thời gian (giây) độ trễ giữa các lần chạy lại tác vụ.
  • ignore_errors: nếu có lỗi phát sinh khi chạy module thì bỏ qua, chạy lại tiếp tục .

Diễn giải:

  • Với tác vụ trên, thì module ‘shell‘ sẽ trả về mã trạng thái tác vụ (return code = rc) là ‘1‘, tức là thực hiện thất bại một lệnh terminal shell. Sau đó kết quả đó sẽ được kèm vào biến ‘task_result‘, nếu Ansible playbook kiểm tra trạng thái kết quả ‘1‘ khác 0, thì sẽ tiếp tục số lần thử lại tác vụ.
  • Ví dụ trên chủ yếu sử dụng để làm mẫu cấu hình nhằm hiểu nhu cầu cấu hình Retry Task trong Ansible playbook.

Giờ chạy thử nào.

# ansible-playbook -s retry.yml -i hosts/hosts.collector

PLAY [all] ****************************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************************
ok: [webserver]

TASK [command] ************************************************************************************************************************************************************************
FAILED - RETRYING: command (10 retries left).
FAILED - RETRYING: command (9 retries left).
FAILED - RETRYING: command (8 retries left).
FAILED - RETRYING: command (7 retries left).
FAILED - RETRYING: command (6 retries left).
FAILED - RETRYING: command (5 retries left).
FAILED - RETRYING: command (4 retries left).
FAILED - RETRYING: command (3 retries left).
FAILED - RETRYING: command (2 retries left).
FAILED - RETRYING: command (1 retries left).
fatal: [webserever]: FAILED! => {"attempts": 10, "changed": true, "cmd": "exit 1", "delta": "0:00:00.005483", "end": "2018-04-05 22:25:22.677330", "failed": true, "rc": 1, "start": "2018-04-05 22:25:22.671847", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
...ignoring

PLAY RECAP ****************************************************************************************************************************************************************************
webserver : ok=2 changed=1 unreachable=0 failed=0

Đơn giản vô cùng phải không nào, đây là một nội dung thú vị và cơ bản của cấu hình sử dụng retry Ansible Playbook đấy. Chúc các bạn thành công.

Nguồn: https://cuongquach.com/

Previous articleKiểm tra phiên bản OpenSSL trên CentOS/RHEL
Next articleNhững ưu điểm khi sử dụng Cloud Server thay vì VPS truyền thống
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !