วนซ้ำกับพจนานุกรม
สร้างผู้ใช้จากข้อมูลคีย์-ค่า
วนซ้ำกับพจนานุกรม เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
รายการค่าอย่างเดียวไม่เพียงพอ
การสร้างผู้ใช้ต้องมีมากกว่าชื่อ เช่น กลุ่ม เชลล์ และสถานะ รายการค่าแบบแบนไม่สามารถเก็บข้อมูลเหล่านี้ได้ คุณจึงต้องใช้ dictionaries ซึ่งเป็นรายการของพจนานุกรม 🗂️
รายการของพจนานุกรม
แต่ละรายการในลิสต์จะกลายเป็น dictionary ขนาดเล็กที่ประกอบด้วยคู่คีย์กับค่า ดังนั้นการทำงานแต่ละรอบจึงมีฟิลด์ที่ตั้งชื่อไว้หลายฟิลด์ให้ใช้งาน
loop:
- { name: alice, group: admin }
- { name: bob, group: dev }เข้าถึงคีย์ด้วย item.key
เมื่อ item เป็นพจนานุกรม ให้อ่านแต่ละฟิลด์ด้วย item.fieldname ดังนั้น item.name และ item.group จึงดึงค่าจากรายการปัจจุบันได้
- name: Add users
ansible.builtin.user:
name: "{{ item.name }}"
group: "{{ item.group }}"
loop:
- { name: alice, group: admin }
- { name: bob, group: dev }รูปแบบหลายบรรทัดที่อ่านง่ายกว่า
วงเล็บปีกกาที่เขียนในบรรทัดเดียวอาจดูอัดแน่น เมื่อรายการมีคีย์จำนวนมาก ควรเขียนพจนานุกรมแต่ละรายการแยกหลายบรรทัดเพื่อให้ readability ดีขึ้น
loop:
- name: alice
group: admin
shell: /bin/bash
- name: bob
group: dev
shell: /bin/zshดึงรายการจากตัวแปร
กำหนดรายการพจนานุกรมเป็น variable แล้ววนซ้ำกับรายการนั้น ข้อมูลจะอยู่ในที่เดียว ขณะที่งานยังคงสั้นและนำกลับมาใช้ซ้ำได้
vars:
users:
- { name: alice, group: admin }
tasks:
- ansible.builtin.user:
name: "{{ item.name }}"
loop: "{{ users }}"วนซ้ำกับพจนานุกรมจริง
หากต้องการวนซ้ำกับพจนานุกรมจริงที่ประกอบด้วยคู่คีย์กับค่า ให้ส่งผ่านตัวกรอง dict2items เพื่อให้แต่ละคู่กลายเป็นรายการที่วนซ้ำได้
loop: "{{ ports | dict2items }}"item.key และ item.value
หลังใช้ dict2items แต่ละ item จะมี item.key และ item.value ซึ่งเป็นชื่อและข้อมูลของการจับคู่เดิม
- ansible.builtin.debug:
msg: "{{ item.key }} = {{ item.value }}"
loop: "{{ settings | dict2items }}"คีย์ที่มีและไม่มีปะปนกัน
ไม่ใช่ทุกรายการที่จำเป็นต้องมีทุกคีย์ คุณสามารถใช้ลูปร่วมกับตัวกรอง default เพื่อให้ฟิลด์ที่หายไปใช้ค่าทดแทนที่เหมาะสม
shell: "{{ item.shell | default('/bin/sh') }}"พจนานุกรมช่วยจัดระเบียบข้อมูล
การรวมฟิลด์ที่เกี่ยวข้องไว้ในแต่ละรายการช่วยแยก data and logic separate ออกจากกัน การแก้ไขผู้ใช้จึงหมายถึงการแก้ไขข้อมูล ไม่ใช่ตัวงาน
ยังคงเป็นไอดีมโพเทนต์อย่างสมบูรณ์
การทำงานกับพจนานุกรมแต่ละรายการคือการเรียกมอดูลแยกกัน ดังนั้น Ansible จะแจ้ง changed or ok สำหรับผู้ใช้แต่ละราย เช่นเดียวกับรายการค่าแบบง่าย
เหมาะสำหรับการกำหนดค่าจำนวนมาก
ผู้ใช้ โฮสต์เสมือน และกฎไฟร์วอลล์ ล้วนเป็นข้อมูลที่มีคุณลักษณะหลายอย่างต่อรายการ จึงเหมาะกับ list of dictionaries อย่างยิ่ง
ตรวจสอบความเข้าใจ
คุณวนซ้ำกับรายการของพจนานุกรม แล้วจะอ่านฟิลด์หนึ่งฟิลด์ได้อย่างไร
สรุป: การวนซ้ำกับพจนานุกรม
คุณวนซ้ำกับรายการของพจนานุกรม อ่านฟิลด์ item.name และใช้ dict2items กับแมปจริง ต่อไปคือการใช้ลูปซ้อนกัน 🎉
คำถามที่พบบ่อย
บทเรียน “วนซ้ำกับพจนานุกรม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “วนซ้ำกับพจนานุกรม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “วนซ้ำกับพจนานุกรม”
สร้างผู้ใช้จากข้อมูลคีย์-ค่า คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “วนซ้ำกับพจนานุกรม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คีย์เวิร์ด loop กับรายการ
- วนซ้ำกับพจนานุกรม
- ลูปซ้อนด้วย subelements
- loop_control: label, index และ pause