Trình xử lý là danh sách các tác vụ, không thực sự khác biệt so với các tác vụ thông thường, được tham chiếu bằng một tên duy nhất trên toàn cầu và được thông báo bởi các thông báo. Nếu không có gì thông báo cho một trình xử lý, nó sẽ không chạy. Bất kể có bao nhiêu nhiệm vụ thông báo cho một người xử lý, nó sẽ chỉ chạy một lần, sau khi tất cả các nhiệm vụ hoàn thành trong một lần chơi cụ thể. tài liệu ansible
1) Người xử lý làm điều tương tự nên được đặt tên giống nhau.
restart nginx
LUÔN LUÔN khởi động lại nginx, không handler1
vàhandler2
2) Trình xử lý được chạy ở KẾT THÚC của toàn bộ "Phát" một lần phát trong phạm vi các phần của bạn.
3) Tôi sẽ sử dụng register
và các when
chức năng cho các nhiệm vụ nên được khởi động lại, lưu ý var này sẽ mang theo bên mình.
Mã nguồn
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "Play 1"
}
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role2 : Run if change in task c of role 1] *******************************
changed: [localhost]
TASK [role2 : Always true in role2] ********************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "This is a task in a play"
}
RUNNING HANDLER [role1 : handler] **********************************************
ok: [localhost] => {
"msg": "This is a handler in role1"
}
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "Play 2"
}
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role1 : Always true in role1] ********************************************
changed: [localhost]
TASK [role2 : Run if change in task c of role 1] *******************************
changed: [localhost]
TASK [role2 : Always true in role2] ********************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "This is a task in a play"
}
RUNNING HANDLER [role1 : handler] **********************************************
ok: [localhost] => {
"msg": "This is a handler in role1"
}
PLAY RECAP *********************************************************************
localhost : ok=20 changed=14 unreachable=0 failed=0
Rất nhiều cách để làm cùng một nhiệm vụ. Trình xử lý được thiết kế để ngăn khởi động lại cùng một quy trình nhiều lần, chẳng hạn như nhiều thay đổi đối với máy chủ nginx có trang web, ssl certs và các tác vụ khác cần khởi động lại dịch vụ.