0Pricing
Terraform Infrastructure as Code · บทเรียน

การจัดการสถานะคลาดเคลื่อนและการทำให้สอดคล้อง

ตรวจจับ วินิจฉัย และทำให้ความคลาดเคลื่อนสอดคล้องกัน ซึ่งเป็นช่องว่างระหว่างสถานะ Terraform กับโครงสร้างพื้นฐานจริง ก่อนทำให้ระบบหยุดให้บริการหรือเกิดการเปลี่ยนแปลงที่ไม่คาดคิด

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

การเปลี่ยนแปลงนอกแผนคืออะไร

การเปลี่ยนแปลงนอกแผนเกิดขึ้นเมื่อโครงสร้างพื้นฐานจริงเปลี่ยนแปลงนอก Terraform เช่น วิศวกรปรับการตั้งค่าในคอนโซล หรือเครื่องมืออื่นแก้ไขทรัพยากร ทำให้สถานะกับความเป็นจริงไม่ตรงกัน และการ apply ครั้งถัดไปอาจย้อนกลับหรือเขียนทับการเปลี่ยนแปลงเหล่านั้นโดยไม่คาดคิด

ตรวจจับการเปลี่ยนแปลงนอกแผนด้วย plan

terraform plan แบบปกติจะรีเฟรชสถานะและแสดงความแตกต่าง หากทรัพยากรเกิดการเปลี่ยนแปลงนอกแผน แผนจะแจ้งการเปลี่ยนแปลงที่คุณไม่ได้ทำในโค้ด

terraform plan

แผนสำหรับรีเฟรชเท่านั้น

หากต้องการดูการเปลี่ยนแปลงนอกแผนโดยไม่เสนอการเปลี่ยนแปลงการกำหนดค่า ให้ใช้แผนแบบรีเฟรชเท่านั้น แผนนี้จะอัปเดตสถานะให้ตรงกับความเป็นจริงและแสดงสิ่งที่แตกต่างกัน

terraform plan -refresh-only

การอ่านรายงานการเปลี่ยนแปลงนอกแผน

Terraform จะทำเครื่องหมายแอตทริบิวต์ที่เปลี่ยนแปลงนอกแผนพร้อมระบุการเปลี่ยนแปลงที่ตรวจพบ เครื่องหมายทิลดาบ่งบอกการเปลี่ยนแปลงภายในทรัพยากรเดิม ส่วนคู่เครื่องหมายลบ/บวกบ่งบอกว่าค่าถูกเพิ่มหรือลบนอก Terraform

# aws_instance.web has changed
  ~ instance_type = "t3.micro" -> "t3.small"

สองวิธีในการปรับให้สอดคล้อง

เมื่อพบการเปลี่ยนแปลงนอกแผน คุณต้องเลือกแนวทาง:

  • ยอมรับความเป็นจริง — อัปเดตโค้ดให้ตรงกับสถานะใหม่
  • กู้คืนตามโค้ด — ใช้ apply เพื่อปรับโครงสร้างพื้นฐานกลับไปตามที่การกำหนดค่าระบุ

ยอมรับการเปลี่ยนแปลงนอกแผนเข้าสู่สถานะ

หากการเปลี่ยนแปลงด้วยตนเองเป็นสิ่งที่ตั้งใจไว้ ให้เรียกใช้ apply -refresh-only เพื่อบันทึกความเป็นจริงลงในสถานะ จากนั้นอัปเดตโค้ดให้ตรงกัน เพื่อให้แผนในอนาคตไม่มีการเปลี่ยนแปลงที่ไม่คาดคิด

terraform apply -refresh-only

ย้อนกลับการเปลี่ยนแปลงนอกแผน

หากการเปลี่ยนแปลงไม่ได้รับอนุญาต การเรียกใช้ terraform apply ตามปกติจะปรับโครงสร้างพื้นฐานกลับไปตามการกำหนดค่าที่ประกาศไว้ และยกเลิกการแก้ไขด้วยตนเอง

terraform apply

กำหนดเป้าหมายทรัพยากรเดียว

สำหรับการแก้ไขเฉพาะจุด -target จะจำกัดการดำเนินการไว้ที่ทรัพยากรเดียว ควรใช้เท่าที่จำเป็น เพราะอาจบดบังการเปลี่ยนแปลงนอกแผนในส่วนอื่น

terraform apply -target=aws_instance.web

ป้องกันการเปลี่ยนแปลงนอกแผนที่ไม่ใช่ปัญหา

แอตทริบิวต์บางรายการได้รับการจัดการโดย AWS หรือเครื่องมืออื่น ใช้ ignore_changes เพื่อให้ Terraform หยุดพยายามควบคุมแอตทริบิวต์เหล่านั้น

resource "aws_instance" "web" {
  lifecycle {
    ignore_changes = [tags["LastScanned"]]
  }
}

ตรวจจับการเปลี่ยนแปลงนอกแผนอย่างต่อเนื่อง

ตรวจจับการเปลี่ยนแปลงนอกแผนตั้งแต่เนิ่น ๆ ด้วยการเรียกใช้แผนแบบรีเฟรชเท่านั้นตามกำหนดเวลาใน CI Terraform Cloud มีการตรวจจับการเปลี่ยนแปลงนอกแผนในตัว ซึ่งจะแจ้งเตือนเมื่อสถานะกับความเป็นจริงไม่ตรงกัน

on:
  schedule:
    - cron: "0 6 * * *"

วัฒนธรรมสำคัญกว่าเครื่องมือ

วิธีป้องกันการเปลี่ยนแปลงนอกแผนที่ดีที่สุดคือกระบวนการ: จำกัดสิทธิ์เขียนในคอนโซล ส่งการเปลี่ยนแปลงทั้งหมดผ่าน Terraform และถือว่าการแก้ไขด้วยตนเองเป็นเหตุการณ์ผิดปกติ เครื่องมือช่วยตรวจจับการเปลี่ยนแปลงนอกแผน แต่ความมีวินัยช่วยหลีกเลี่ยงการเกิดขึ้น

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความรู้เกี่ยวกับการจัดการการเปลี่ยนแปลงนอกแผนของคุณ

ทบทวน: รักษาความถูกต้องของสถานะ

ตอนนี้คุณจัดการการเปลี่ยนแปลงนอกแผนได้แล้ว:

  • ตรวจจับด้วย plan หรือ plan -refresh-only
  • ยอมรับด้วย apply -refresh-only แล้วอัปเดตโค้ด
  • ย้อนกลับด้วย apply ตามปกติ
  • ใช้ ignore_changes และการตรวจสอบตามกำหนดเวลาเพื่อรับมือได้ล่วงหน้า

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

บทเรียน “การจัดการสถานะคลาดเคลื่อนและการทำให้สอดคล้อง” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการสถานะคลาดเคลื่อนและการทำให้สอดคล้อง”

ตรวจจับ วินิจฉัย และทำให้ความคลาดเคลื่อนสอดคล้องกัน ซึ่งเป็นช่องว่างระหว่างสถานะ Terraform กับโครงสร้างพื้นฐานจริง ก่อนทำให้ระบบหยุดให้บริการหรือเกิดการเปลี่ยนแปลงที่ไม่คาดคิด คุณปฏิบัติ Terraform Infrastructure as Code ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “การจัดการสถานะคลาดเคลื่อนและการทำให้สอดคล้อง” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน Terraform Infrastructure as Code นี้ได้ไหม

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

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

  1. การแก้ไขข้อผิดพลาดในการกำหนดค่า Terraform
  2. กลยุทธ์การเพิ่มประสิทธิภาพ
  3. การกู้คืนจากภัยพิบัติด้วย Terraform
  4. การจัดการสถานะคลาดเคลื่อนและการทำให้สอดคล้อง
← กลับไปที่ Terraform Infrastructure as Code