delegate_to และ run_once สำหรับการประสานงาน
เรียกใช้งานบนโฮสต์เดียวเพื่อจัดการหลายโฮสต์
delegate_to และ run_once สำหรับการประสานงาน เป็นบทเรียน Ansible Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ansible Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน
งานไม่ได้ทำงานบนตำแหน่งที่คุณคิดเสมอไป
โดยค่าเริ่มต้น งานแต่ละงานจะทำงานบนโฮสต์เป้าหมายของตนเอง สำหรับการประสานงาน บางครั้งคุณจำเป็นต้องให้งานทำงานที่อื่นโดยสิ้นเชิง 🎯
ทำความรู้จัก delegate_to
คีย์เวิร์ด delegate_to จะสั่งให้งานทำงานบนโฮสต์อื่นที่ไม่ใช่โฮสต์ปัจจุบัน โดยยังคงใช้ตัวแปรของโฮสต์นั้น
- name: Add web node to load balancer
community.general.haproxy:
host: "{{ inventory_hostname }}"
state: enabled
delegate_to: lb01กรณีใช้งานแบบคลาสสิก
ขณะวนลูปผ่านโหนดเว็บ ให้มอบหมายการเปลี่ยนแปลงของตัวกระจายโหลดไปยังโฮสต์ LB เพลย์ยังคงทำงานแยกตามแต่ละโหนด แต่การดำเนินการจะเกิดขึ้นบน LB
มอบหมายงานไปยัง localhost
ให้งานทำงานบนโหนดควบคุมของคุณโดยมอบหมายไปยัง localhost วิธีนี้เหมาะอย่างยิ่งสำหรับการเรียกใช้ API หรือส่งการแจ้งเตือนจากจุดเดียว
- name: Notify chat
ansible.builtin.uri:
url: "{{ webhook }}"
method: POST
delegate_to: localhostตัวแปรยังคงอยู่กับโฮสต์เดิม
การมอบหมายจะเปลี่ยนตำแหน่งที่งานทำงาน ไม่ได้เปลี่ยนว่าระบบจะเห็นข้อมูลระบบของโฮสต์ใด inventory_hostname ยังคงระบุชื่อเป้าหมายเดิม ไม่ใช่โฮสต์ที่รับมอบหมาย
ทำความรู้จัก run_once
คีย์เวิร์ด run_once จะสั่งให้งานทำงานเพียงครั้งเดียวสำหรับทั้งชุดการทำงาน ไม่ใช่ครั้งละหนึ่งครั้งต่อโฮสต์ Ansible จะเลือกโฮสต์แรกเพื่อดำเนินการ
- name: Run database migration
ansible.builtin.command: ./migrate.sh
run_once: trueเหตุใด run_once จึงสำคัญ
การดำเนินการบางอย่างต้องเกิดขึ้นเพียงครั้งเดียว เช่นการย้ายข้อมูลหรือการเลือกผู้นำ run_once ช่วยป้องกันไม่ให้ทุกโฮสต์ทำขั้นตอนที่ใช้ร่วมกันซ้ำ
ใช้ทั้งสองอย่างร่วมกัน
ใช้ run_once ร่วมกับ delegate_to เพื่อดำเนินการหนึ่งอย่างบนโฮสต์ที่เลือกไว้หนึ่งโฮสต์ เช่น เรียกใช้การย้ายข้อมูลจากโหนดแอปเพียงโหนดเดียว
- name: Migrate db once
ansible.builtin.command: ./migrate.sh
run_once: true
delegate_to: app01ผลลัพธ์ใช้ร่วมกัน
เมื่อใช้ run_once ผลลัพธ์ที่ลงทะเบียนไว้จะถูกใช้ร่วมกันในทุกโฮสต์ของชุดการทำงาน ทุกโฮสต์จะเห็นผลลัพธ์จากการทำงานเพียงครั้งเดียวนั้น
- ansible.builtin.command: cat /etc/version
run_once: true
register: verรวบรวมข้อมูลระบบจากโฮสต์ที่รับมอบหมาย
ใช้ delegate_facts หากต้องการให้ข้อมูลระบบที่รวบรวมได้ผูกกับโฮสต์ที่รับมอบหมายแทนโฮสต์ปัจจุบัน โดยค่าเริ่มต้นจะปิดใช้งาน
การประสานงาน ไม่ใช่แค่การกำหนดค่า
เมื่อใช้คีย์เวิร์ดเหล่านี้ร่วมกัน การกำหนดค่ารายโฮสต์จะกลายเป็นการประสานงานอย่างแท้จริง นั่นคือการประสานการดำเนินการหนึ่งอย่างทั่วทั้งกลุ่มเครื่องจากจุดเดียว
ตรวจสอบความเข้าใจอย่างรวดเร็ว
มาทบทวนคีย์เวิร์ดสำหรับการประสานงานเหล่านี้กัน
สรุปทบทวน
ใช้ delegate_to เพื่อให้งานทำงานบนโฮสต์อื่น และใช้ run_once เพื่อให้งานทำงานเพียงครั้งเดียวต่อชุดการทำงาน ซึ่งเป็นหัวใจของการประสานงาน ✅
คำถามที่พบบ่อย
บทเรียน “delegate_to และ run_once สำหรับการประสานงาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “delegate_to และ run_once สำหรับการประสานงาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ansible Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “delegate_to และ run_once สำหรับการประสานงาน”
เรียกใช้งานบนโฮสต์เดียวเพื่อจัดการหลายโฮสต์ คุณปฏิบัติ Ansible Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ansible Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ansible Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “delegate_to และ run_once สำหรับการประสานงาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ansible Academy นี้ได้ไหม
ได้ บทเรียน Ansible Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำระบบอุปกรณ์เครือข่ายอัตโนมัติด้วย cli_command
- delegate_to และ run_once สำหรับการประสานงาน
- ประสานชั้น Web, App และ DB
- นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า