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

defaults เทียบกับ vars: ลำดับการเขียนทับ

ออกแบบอินเทอร์เฟซตัวแปรของ Role ให้สะอาด

defaults เทียบกับ vars: ลำดับการเขียนทับ เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

โฟลเดอร์ตัวแปรสองแห่ง

บทบาทสามารถกำหนดตัวแปรได้สองแห่ง ได้แก่ defaults/main.yml และ vars/main.yml ทั้งสองดูคล้ายกัน แต่มีพฤติกรรมแตกต่างกันมาก

defaults มีลำดับความสำคัญต่ำ

ค่าใน defaults/main.yml มีลำดับความสำคัญต่ำที่สุด เป็นเพียงคำแนะนำที่สิ่งอื่นแทบทุกอย่างสามารถเขียนทับได้

# defaults/main.yml
http_port: 80
workers: 4

vars มีลำดับความสำคัญสูง

ค่าใน vars/main.yml มีลำดับความสำคัญสูง เป็นการกำหนดที่บทบาทยืนยันให้ใช้ และเขียนทับได้ยาก

# vars/main.yml
config_path: /etc/myapp

Defaults คือ API สาธารณะของคุณ

ใส่ทุกสิ่งที่ผู้ใช้อาจต้องการปรับไว้ใน defaults นั่นเป็นการสื่อว่า “เปลี่ยนฉันได้อย่างอิสระ” นี่คือวิธีออกแบบบทบาทที่เป็นมิตรและนำกลับมาใช้ใหม่ได้

Vars คือค่าคงที่ภายใน

เก็บ vars ไว้สำหรับค่าที่บทบาทต้องใช้เพื่อทำงาน และผู้ใช้ไม่ควรแก้ไข เช่น เส้นทางภายในหรือชื่อแพ็กเกจที่กำหนดตายตัว

เขียนทับ Default ได้ง่าย

ผู้ใช้สามารถเขียนทับ default ได้จาก group_vars, host_vars, เพลย์ หรือบรรทัดคำสั่ง การเขียนทับที่เรียบง่ายกว่าจะมีผลทันที

roles:
  - role: web
    vars:
      http_port: 8080

การเขียนทับค่า vars ทำได้ยาก

vars ของบทบาทมีลำดับเหนือกว่า group_vars, host_vars และตัวแปรของเพลย์ มีเพียง extra-vars บนบรรทัดคำสั่งเท่านั้นที่มีลำดับสูงกว่า ดังนั้นควรใช้ vars อย่างระมัดระวัง

Extra Vars ชนะเสมอ

ตัวแปรที่ส่งด้วย -e บนบรรทัดคำสั่งมีลำดับสูงกว่าแหล่งอื่นทั้งหมด รวมถึง vars ของบทบาทด้วย จึงเป็นการเขียนทับขั้นสูงสุด

ansible-playbook site.yml -e http_port=9090

ลำดับที่ควรจำ

จำลำดับขั้นนี้ไว้: defaults อยู่ล่างสุด ตามด้วยตัวแปรจากอินเวนทอรีและเพลย์ จากนั้นคือ vars ของบทบาทที่อยู่ใกล้ด้านบน และ extra-vars ที่อยู่เหนือทั้งหมด

เคล็ดลับด้านการออกแบบ

เลือกใช้ defaults กับเกือบทุกอย่าง ใช้ vars เฉพาะเมื่อค่าหนึ่งจำเป็นต้องถูกล็อกไว้จริง ๆ บทบาทที่ยืดหยุ่นช่วยให้ทีมทำงานได้อย่างราบรื่น

จัดทำเอกสารสำหรับ Defaults

ใส่คำอธิบายกำกับแต่ละค่าใน defaults/main.yml เนื่องจากผู้ใช้จะปรับค่าเหล่านี้ บันทึกที่ชัดเจนจึงทำให้บทบาทของคุณเป็นระบบอัตโนมัติที่อธิบายตัวเองได้

ตรวจสอบอย่างรวดเร็ว

ลองคิดดูว่าไฟล์ใดที่ผู้ใช้สามารถเขียนทับได้ง่ายที่สุด

สรุป

ใช้ defaults สำหรับค่าที่ผู้ใช้ปรับได้และเขียนทับได้ ส่วน vars ใช้สำหรับค่าคงที่ภายในที่ถูกล็อกไว้ Extra-vars บน CLI มีลำดับเหนือทุกอย่าง 🎚️

คำถามที่พบบ่อย

บทเรียน “defaults เทียบกับ vars: ลำดับการเขียนทับ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “defaults เทียบกับ vars: ลำดับการเขียนทับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “defaults เทียบกับ vars: ลำดับการเขียนทับ”

ออกแบบอินเทอร์เฟซตัวแปรของ Role ให้สะอาด คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “defaults เทียบกับ vars: ลำดับการเขียนทับ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การพึ่งพา Role ใน meta/main.yml
  2. defaults เทียบกับ vars: ลำดับการเขียนทับ
  3. include_role และ import_role ขณะทำงาน
  4. allow_duplicates และความทำซ้ำได้ของ Role
← กลับไปที่ DevOps Bootcamp