Ansible: Tìm hiểu cấu hình Handler trong Ansible Playbook

385

Ansible: Tìm hiểu cấu hình Handler trong Ansible Playbook | Yoyo, chào các bạn, chúng ta cùng tiếp tục Series về chương trình Ansible nhé. Hôm nay bạn sẽ tìm hiểu cách sử dụng tác vụ ‘Handler‘ trong Ansible để thực thi khi kết thúc 1 tác vụ task trong playbook ansible.

cấu hình handler ansible

Có thể bạn quan tâm chủ đề khác
Cấu hình Ansible Retry Task
Các mẹo tăng tốc độ thực thi của Ansible
Hướng dẫn sử dụng Ansible Ad-hoc cơ bản
Ebook Ansible for DevOps
Ebook Mastering Ansible

1. Handler Ansible là gì ?

Ok, handler trong Ansible là gì ? Handler là một tác vụ y như ‘task’ trong playbook nhưng khác ở chỗ ‘task‘ được tự động khởi chạy theo flow cấu hình hoặc theo ‘tag‘ còn ‘handler‘ thì không thể khởi chạy nếu không có tín hiệu (notify) triệu gọi sử dụng.

Tóm gọn

  • handler : là danh sách một hoặc nhiều tác vụ chờ được triệu gọi sử dụng từ task. Một tác vụ handler được khai báo cấu hình y hệt một task, nhưng yêu cầu phải có tên tác vụ rõ ràng để dùng khi triệu gọi.
  • notify : là keyword dùng để triệu gọi một hoặc nhiều handler trong một task.

Lưu ý chung:

  • Khi notify các tác vụ ‘handler‘ , thì các tác vụ sẽ luôn chạy theo thứ tự từ trên xuống đã được định nghĩa.
  • Nếu có hai tác vụ ‘handler’ cùng tên, thì chỉ chạy một cái duy nhất theo thứ tự đầu tiên.
  • Không sử dụng [tag] cho tác vụ handler được.

Cấu trúc cơ bản của ‘handler’

1.1 Ví dụ 1

Giải thích:
Khi mà task copy file cấu hình ‘main.conf‘ thay thế file ‘nginx.conf‘ hoàn thành không lỗi. Thì task copy sẽ triệu gọi một tác vụ ‘handler‘, bằng keyword cấu hình ‘notify‘, có tên là ‘restart nginx‘ để tiến hành khởi động lại dịch vụ Nginx.

1.2 Ví dụ 2

Bạn có thể gọi sử dụng nhiều tác vụ handler trong một task.

1.3 Ví dụ 3

Bạn có thể kết hợp với xử lý điều kiện ‘when‘ khi cấu hình tác vụ handler như xài với task bình thường.

2. Handler Listen

Từ Ansible version 2.2 trở đi thì Ansible đã hỗ trợ một cấu hình mang tên ‘Handler Listen‘. Với keyword ‘listen‘ sử dụng khi cấu hình một tác vụ ‘handler‘, ta có thể hiểu nó giống như việc gom nhóm các tác vụ ‘handler‘ thành một group theo tên ‘listen‘. Và bạn chỉ cần gọi tên của ‘listen‘ được khai báo là có thể chạy toàn bộ các tác vụ ‘handler‘ con của nhóm ‘listen‘ đó.

Ví dụ 4

Giải thích:

  • Mình có một playbook đơn giản, là cần copy cấu hình file nginx.conf lên con máy chủ remote. Sau đó cần restart toàn bộ service liên quan webserver nginx. Thì thay vì phải gọi (notify) từng tên tác vụ handler như ở phần đầu, thì giờ mình có thể gọi tên nhóm ‘listen‘ là ‘restart_nginx_cluster‘ tức nhóm các tác vụ ‘handler‘ đã được khai báo và thực thi . Việc khai báo ‘listen‘ này nhìn chung rất gọn gàng nếu bạn có nhiều ‘handler’ cần phải sử dụng cùng lúc.
  • Lưu ý là các tác vụ ‘handler‘ trong một nhóm ‘listen‘ vẫn chạy theo thứ tự đã khai báo trong mục danh sách tác vụ ‘handler‘ nhé.

Tổng kết

Vậy là bạn đã hiểu được tác vụ Handler Ansible là gì ? sử dụng như thế nào bằng ‘notify’ và Handler Listen cấu hình ra sao trên Ansible rồi nhé. Chúc các bạn thực hành thành công.

Nguồn: https://cuongquach.com

Đánh giá sao từ người đọc :
[ Tổng : 0 - Trung bình: 0 ]