Site logo

Ansible Handlers và Notifications Part 1

5:00 read

Bạn đã biết cách sử dụng handlers cơ bản để restart service. Nhưng trong thực tế, bạn sẽ gặp các tình huống phức tạp hơn: restart nhiều service theo thứ tự, chỉ restart khi cần, hoặc xử lý dependencies giữa các service.

Trong bài học này, chúng ta sẽ tìm hiểu sâu hơn về:

  • Cách handlers hoạt động thực sự
  • Quản lý thứ tự thực thi handlers
  • Handlers trong roles
  • Meta handlers và flush handlers
  • Patterns và best practices nâng cao

Handlers Hoạt Động Như Thế Nào?

Luồng Thực Thi

Task 1 (changed) → notify Handler A
Task 2 (ok)      → không notify
Task 3 (changed) → notify Handler A, Handler B
Task 4 (changed) → notify Handler B
---
Tất cả tasks hoàn thành
---
Handler A chạy (1 lần duy nhất)
Handler B chạy (1 lần duy nhất)

Nguyên Tắc Quan Trọng

  • ⚠️ Handlers chỉ chạy 1 lần dù được notify nhiều lần
  • ⚠️ Handlers chạy sau tất cả tasks trong play
  • ⚠️ Handlers không chạy nếu play bị lỗi (trừ khi dùng force)
  • ⚠️ Handlers chạy theo thứ tự được định nghĩa, không theo thứ tự notify

Ví Dụ Cơ Bản Ôn Tập

---
- name: Cấu hình web server
  hosts: webservers
  become: yes
  
  tasks:
    - name: Cập nhật file cấu hình Nginx
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Restart nginx
    
    - name: Cập nhật SSL certificate
      copy:
        src: server.crt
        dest: /etc/nginx/ssl/server.crt
      notify: Restart nginx
  
  handlers:
    - name: Restart nginx
      service:
        name: nginx
        state: restarted

Trong ví dụ này, dù 2 tasks đều notify, Nginx chỉ restart 1 lần.


Yêu cầu đăng nhập

Vui lòng đăng nhập để truy cập nội dung này

Additional Resources

Course Guide

Comprehensive PDF guide with examples

GitHub Repository

Example code for all lessons

Discussion

Have a question about this lesson? Post it here and get answers from instructors and peers.