สถานะที่ต้องการ ไม่ใช่สคริปต์ทีละขั้นตอน
เหตุใดแนวทางเชิงประกาศจึงดีกว่าแนวทางเชิงคำสั่ง
สถานะที่ต้องการ ไม่ใช่สคริปต์ทีละขั้นตอน เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
อธิบายจุดสิ้นสุด ไม่ใช่ขั้นตอน
Ansible เป็นระบบเชิงประกาศ คุณอธิบายสถานะสุดท้ายที่ต้องการ แล้ว Ansible จะหาขั้นตอนเพื่อไปถึงสถานะนั้นจากสถานะปัจจุบันของโฮสต์
แนวทางเชิงคำสั่ง
สคริปต์เชิงคำสั่งจะแสดงคำสั่งที่แน่นอนตามลำดับ โดยตั้งสมมติฐานเกี่ยวกับสถานะเริ่มต้น จึงทำงานผิดพลาดหากโฮสต์ถูกตั้งค่าไว้บางส่วนแล้ว
apt-get update
apt-get install -y nginx
systemctl start nginxแนวทางเชิงประกาศ
งานแบบเชิงประกาศเพียงระบุเป้าหมายว่า nginx ควรได้รับการติดตั้งและกำลังทำงาน Ansible จะตรวจสอบสภาพจริงและดำเนินการเมื่อจำเป็นเท่านั้น
ansible.builtin.package:
name: nginx
state: presentstate ระบุเป้าหมาย
คีย์ state คือจุดที่คุณประกาศเจตนา ค่า present, started หรือ absent ต่างระบุสถานะสุดท้ายที่ต้องการ ไม่ใช่การกระทำที่ต้องดำเนินการ
ansible.builtin.service:
name: nginx
state: startedAnsible เปรียบเทียบก่อน
ก่อนเปลี่ยนแปลงสิ่งใด โมดูลจะเปรียบเทียบสถานะปัจจุบันกับสถานะที่คุณประกาศไว้ หากตรงกันอยู่แล้ว โมดูลจะไม่ทำอะไรเลย
นี่คือการลู่เข้าสู่สถานะเดียวกัน
การทำงานแต่ละครั้งจะขยับโฮสต์เข้าใกล้สถานะที่คุณประกาศไว้ นี่คือการลู่เข้าสู่สถานะเดียวกัน: ไม่ว่าจะเริ่มจากจุดใด โฮสต์ก็จะลงเอยที่จุดเดียวกัน
ลำดับสำคัญน้อยลง
เนื่องจากงานประกาศเป้าหมายไว้ การเรียกใช้เพลย์ที่ทำค้างไว้ซ้ำจะทำส่วนที่เหลือให้เสร็จ คุณไม่จำเป็นต้องติดตามว่าขั้นตอนไหนล้มเหลวในครั้งก่อน
เรียกใช้ซ้ำได้อย่างปลอดภัย
งานแบบประกาศสถานะสามารถเรียกใช้ซ้ำได้อย่างปลอดภัย โฮสต์ที่อยู่ในสถานะถูกต้องแล้วจะไม่ถูกแตะต้อง ซึ่งเป็นรากฐานทั้งหมดของคุณสมบัติทำซ้ำได้โดยไม่เปลี่ยนผลลัพธ์
มีสิ่งที่ต้องจำให้น้อยลง
คุณไม่ต้องเขียนการตรวจสอบว่า “ถ้าติดตั้งแล้วให้ข้าม” ด้วยตนเองอีกต่อไป โมดูลจะจัดการตรรกะนั้นเอง ทำให้เพลย์บุ๊กของคุณสั้นและอ่านง่าย
เพลย์บุ๊กคือแหล่งอ้างอิงหลัก
เพลย์บุ๊กแบบประกาศสถานะอ่านได้เหมือนเอกสารของเซิร์ฟเวอร์ที่ต้องการ: ควรมีแพ็กเกจ บริการ และไฟล์ใดอยู่บนเซิร์ฟเวอร์นั้นบ้าง
- name: Web server desired state
hosts: web
tasks:
- ansible.builtin.package:
name: nginx
state: presentบางงานยังคงเป็นงานเชิงคำสั่ง
งานคำสั่งดิบและงานเชลล์เป็นงานเชิงคำสั่ง: งานเหล่านี้จะทำงานทุกครั้ง โปรดเลือกใช้โมดูลที่อิงสถานะ เพื่อให้ Ansible ยังคงทำงานแบบประกาศสถานะได้
ตรวจสอบอย่างรวดเร็ว
คุณเขียนงานที่ระบุว่า nginx ควรมีอยู่ แล้วเรียกใช้เพลย์บุ๊กกับโฮสต์ที่มี nginx อยู่แล้ว
สรุปทบทวน
คุณประกาศสถานะที่ต้องการ และ Ansible จะทำให้โฮสต์ลู่เข้าสู่สถานะนั้น โดยดำเนินการเฉพาะเมื่อสถานะจริงแตกต่างกัน ความปลอดภัยนี้คือคุณสมบัติทำซ้ำได้โดยไม่เปลี่ยนผลลัพธ์ 🎯
คำถามที่พบบ่อย
บทเรียน “สถานะที่ต้องการ ไม่ใช่สคริปต์ทีละขั้นตอน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สถานะที่ต้องการ ไม่ใช่สคริปต์ทีละขั้นตอน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สถานะที่ต้องการ ไม่ใช่สคริปต์ทีละขั้นตอน”
เหตุใดแนวทางเชิงประกาศจึงดีกว่าแนวทางเชิงคำสั่ง คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “สถานะที่ต้องการ ไม่ใช่สคริปต์ทีละขั้นตอน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สถานะที่ต้องการ ไม่ใช่สคริปต์ทีละขั้นตอน
- การอ่าน changed เทียบกับ ok ในเอาต์พุต
- เหตุใด command จึงทำลายการทำงานซ้ำได้ผลเหมือนเดิม
- โหมดตรวจสอบ: การทดลองทำงานด้วย --check