ตัวจัดการคือรายการของงานไม่แตกต่างจากงานปกติที่อ้างอิงโดยใช้ชื่อที่ไม่ซ้ำกันทั่วโลกและได้รับแจ้งจากตัวแจ้ง หากไม่มีสิ่งใดแจ้งตัวจัดการมันจะไม่ทำงาน ไม่ว่าจะมีกี่งานที่แจ้งผู้จัดการมันจะทำงานเพียงครั้งเดียวหลังจากงานทั้งหมดเสร็จสมบูรณ์ในการเล่นที่เฉพาะเจาะจง เอกสาร ansible
1) ตัวจัดการที่ทำสิ่งเดียวกันควรตั้งชื่อเดียวกัน
restart nginx
เริ่มใหม่ nginx ไม่ใช่เสมอhandler1
และhandler2
2) ตัวจัดการทำงานที่ส่วนท้ายของ "Play" การเล่นทั้งหมดที่กำหนดไว้ในส่วนของคุณ
3) ฉันจะใช้register
และwhen
ฟังก์ชั่นสำหรับงานที่ควรเริ่มต้นใหม่โปรดทราบว่า var นี้ควรพกติดตัวไปด้วย
รหัสแหล่งที่มา
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
มีหลายวิธีในการทำงานเดียวกัน ตัวจัดการถูกออกแบบมาเพื่อป้องกันการรีสตาร์ทกระบวนการเดียวกันหลายครั้งเช่นการเปลี่ยนแปลงหลายครั้งในเซิร์ฟเวอร์ nginx ที่มีเว็บไซต์ ssl certs และงานอื่น ๆ ที่ต้องเริ่มบริการใหม่