แยก Playbook ด้วย import และ include
การรวมงานแบบคงที่เทียบกับแบบไดนามิก
แยก Playbook ด้วย import และ include เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
ไฟล์ขนาดใหญ่ไฟล์เดียวสร้างปัญหา
เพลย์บุ๊กขนาด 500 บรรทัดอ่านและนำกลับมาใช้ใหม่ได้ยาก Ansible ช่วยให้คุณแบ่งงานออกเป็นส่วน ๆ แล้วดึงเข้ามาใช้เมื่อจำเป็น ✂️
สองรูปแบบ: import และ include
Ansible มีรูปแบบการนำกลับมาใช้ซ้ำสองแบบ ได้แก่ import_* สำหรับการรวมแบบคงที่ และ include_* สำหรับการรวมแบบไดนามิก ความแตกต่างอยู่ที่จังหวะเวลา
import_tasks แบบคงที่
import_tasks จะถูกประมวลผลล่วงหน้าเมื่อวิเคราะห์เพลย์บุ๊ก ก่อนที่งานใด ๆ จะเริ่มทำงาน จึงมีลักษณะตายตัวและคาดการณ์ได้
- import_tasks: setup.ymlinclude_tasks แบบไดนามิก
include_tasks จะถูกประมวลผลขณะทำงานตามลำดับ จึงตอบสนองต่อตัวแปรและผลลัพธ์ที่ตัดสินใจก่อนหน้านั้นในเพลย์ได้
- include_tasks: "{{ os_family }}.yml"เหตุใดจังหวะเวลาจึงสำคัญ
เนื่องจาก import เป็นแบบคงที่ คุณจึงไม่สามารถใช้ตัวแปรขณะทำงานในชื่อไฟล์ได้ สำหรับกรณีนี้ต้องใช้ include_tasks แบบไดนามิกแทน
การวนซ้ำต้องใช้ include
ต้องการทำไฟล์ทั้งไฟล์ซ้ำหรือไม่ เฉพาะ include_tasks เท่านั้นที่รองรับการวนซ้ำ เพราะชุดไฟล์จะถูกตัดสินใจขณะเพลย์กำลังทำงาน
- include_tasks: user.yml
loop: "{{ users }}"แท็กทำงานต่างกัน
แท็กบน import_tasks จะมีผลกับงานที่นำเข้าทุกงาน แต่แท็กบน include_tasks จะมีผลเฉพาะคำสั่ง include เองเท่านั้น
การนำเข้าเพลย์บุ๊กทั้งชุด
ที่ระดับบนสุด ให้ใช้ import_playbook เพื่อรวมเพลย์บุ๊กทั้งชุดเข้าด้วยกัน นี่คือวิธีที่ site.yml ใช้ประกอบโครงการของคุณ
- import_playbook: webservers.yml
- import_playbook: dbservers.ymlการใช้ซ้ำข้ามเพลย์
ไฟล์งานที่ใช้ร่วมกัน เช่น การตั้งค่าเริ่มต้นทั่วไป สามารถนำเข้าไปยังเพลย์บุ๊กหลายชุดได้ คุณจึง เขียนตรรกะเพียงครั้งเดียว แล้วนำกลับมาใช้ซ้ำได้ทุกที่
ค่าเริ่มต้นที่เหมาะสม
ควรเลือกใช้ import สำหรับขั้นตอนที่คาดการณ์ได้และต้องทำงานเสมอ ให้เลือกใช้ include เฉพาะเมื่อจำเป็นต้องตัดสินใจขณะทำงานจริง ๆ เช่น การวนซ้ำหรือชื่อไฟล์ที่มาจากตัวแปร
ตัวอย่างการแยกใช้งาน
ในตัวอย่างนี้ เพลย์จะนำเข้าไฟล์การตั้งค่าแบบคงที่ แล้วจึงรวมไฟล์เฉพาะสำหรับ OS ตามเงื่อนไข เครื่องมือสองแบบ งานสองประเภท 🎯
tasks:
- import_tasks: base.yml
- include_tasks: "{{ ansible_os_family }}.yml"ตรวจสอบความเข้าใจ
คุณต้องสร้างชื่อไฟล์จากตัวแปรขณะทำงาน ควรใช้คำสั่งใด
สรุปทบทวน
คุณได้เรียนรู้ว่า import_* เป็นแบบคงที่และถูกวิเคราะห์ล่วงหน้า ขณะที่ include_* เป็นแบบไดนามิกและทำงาน ณ ตำแหน่งนั้น จึงรองรับการวนซ้ำและชื่อไฟล์จากตัวแปรได้ ✅
คำถามที่พบบ่อย
บทเรียน “แยก Playbook ด้วย import และ include” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แยก Playbook ด้วย import และ include” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แยก Playbook ด้วย import และ include”
การรวมงานแบบคงที่เทียบกับแบบไดนามิก คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “แยก Playbook ด้วย import และ include” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างไดเรกทอรีที่แนะนำ
- ไดเรกทอรี group_vars และ host_vars
- แยก Playbook ด้วย import และ include
- การตั้งชื่อ คอมเมนต์ และรูปแบบที่ขยายได้