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.
