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

วนซ้ำกับพจนานุกรม

สร้างผู้ใช้จากข้อมูลคีย์-ค่า

วนซ้ำกับพจนานุกรม เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. คีย์เวิร์ด loop กับรายการ
  2. วนซ้ำกับพจนานุกรม
  3. ลูปซ้อนด้วย subelements
  4. loop_control: label, index และ pause
← กลับไปที่ DevOps Bootcamp