0Pricing
DevOps Bootcamp · บทเรียน

แยก 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.yml

include_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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงสร้างไดเรกทอรีที่แนะนำ
  2. ไดเรกทอรี group_vars และ host_vars
  3. แยก Playbook ด้วย import และ include
  4. การตั้งชื่อ คอมเมนต์ และรูปแบบที่ขยายได้
← กลับไปที่ DevOps Bootcamp