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

การปรับโครงสร้างสถานะด้วย moved และ removed

เปลี่ยนชื่อและปรับโครงสร้างทรัพยากรอย่างปลอดภัยโดยไม่ทำลายโครงสร้างพื้นฐาน ด้วยคำสั่งจัดการสถานะและบล็อก moved กับ removed แบบประกาศ

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

ปัญหาการเปลี่ยนชื่อ

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

เครื่องมือปรับโครงสร้างสถานะช่วยบอก Terraform ได้ว่าทรัพยากรเพียงแค่ย้ายตำแหน่ง

การตรวจสอบสถานะ

เริ่มด้วยการแสดงรายการสิ่งที่ติดตามอยู่ในสถานะ คำสั่ง terraform state list จะแสดงที่อยู่ของทรัพยากรที่จัดการอยู่ทั้งหมด

terraform state list

state mv แบบ命令

แนวทางดั้งเดิมคือ terraform state mv ซึ่งเขียนที่อยู่ของทรัพยากรใหม่ในสถานะ ในที่นี้เราจะเปลี่ยนชื่ออินสแตนซ์จาก aws_instance.web เป็น aws_instance.app

terraform state mv aws_instance.web aws_instance.app

ข้อเสียของ state mv

state mv เป็นการดำเนินการ CLI แบบทำด้วยตนเองและทำเพียงครั้งเดียว การดำเนินการนี้ไม่ได้บันทึกไว้ในโค้ด ดังนั้นเพื่อนร่วมทีมที่ใช้การเปลี่ยนแปลงเดียวกันบนเครื่องของตนต้องทำซ้ำเอง ซึ่งทำให้เกิดข้อผิดพลาดได้ง่ายในกระบวนการทำงานร่วมกัน

บล็อก moved แบบประกาศ

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

moved {
  from = aws_instance.web
  to   = aws_instance.app
}

การย้ายเข้าโมดูล

บล็อก moved ยังรองรับการนำทรัพยากรไปห่อไว้ในโมดูลด้วย โดยที่อยู่เป้าหมายจะรวมเส้นทางของโมดูลไว้ด้วย

moved {
  from = aws_instance.app
  to   = module.compute.aws_instance.app
}

การตรวจสอบด้วยแผน

หลังเพิ่มบล็อก moved ให้เรียกใช้ terraform plan การย้ายที่ถูกต้องจะแสดงว่าไม่มีการทำลายหรือสร้างใหม่ มีเพียงการเปลี่ยนที่อยู่เท่านั้น หากยังเห็นการแทนที่ แสดงว่าบล็อกไม่ถูกต้อง

terraform plan

การนำออกจากสถานะ

บางครั้งคุณต้องการให้ Terraform หยุดจัดการทรัพยากรโดยไม่ทำลายโครงสร้างพื้นฐานจริง คำสั่งแบบทำด้วยตนเองคือ terraform state rm

terraform state rm aws_instance.legacy

บล็อก removed แบบประกาศ

Terraform รุ่นใหม่รองรับบล็อก removed ด้วย เมื่อใช้ร่วมกับ lifecycle { destroy = false } ระบบจะลืมทรัพยากรออกจากสถานะ แต่จะไม่เปลี่ยนแปลงโครงสร้างพื้นฐานจริง

removed {
  from = aws_instance.legacy

  lifecycle {
    destroy = false
  }
}

การแยกไฟล์สถานะ

สำหรับโครงการขนาดใหญ่ terraform state mv -state-out สามารถย้ายทรัพยากรระหว่างไฟล์สถานะแยกกันได้ ซึ่งมีประโยชน์เมื่อแยกระบบขนาดใหญ่ให้เป็นชุดระบบที่ใช้การดำเนินการแยกกัน

terraform state mv -state-out=network.tfstate \
  aws_vpc.main aws_vpc.main

การสำรองข้อมูลและความปลอดภัย

Terraform จะเขียนไฟล์ .backup ก่อนแก้ไขสถานะ อย่างไรก็ตาม เมื่อใช้ส่วนจัดเก็บสถานะระยะไกล ควรตรวจสอบเสมอว่าสถานะไม่ได้ถูกเพื่อนร่วมทีมล็อกไว้ก่อนดำเนินการด้วยตนเอง เพื่อป้องกันความเสียหาย

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

ทดสอบความรู้เกี่ยวกับการปรับโครงสร้างสถานะ

ทบทวน: การปรับโครงสร้างสถานะอย่างปลอดภัย

ตอนนี้คุณสามารถปรับโครงสร้างโครงสร้างพื้นฐานได้โดยไม่ทำลายระบบ:

  • state mv / state rm สำหรับการเปลี่ยนแปลงแบบทำด้วยตนเอง
  • บล็อก moved สำหรับการเปลี่ยนชื่อแบบประกาศ
  • บล็อก removed สำหรับลืมทรัพยากรโดยไม่ทำลาย
  • ตรวจสอบด้วยแผนเสมอ โดยแผนต้องไม่แสดงการแทนที่

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

บทเรียน “การปรับโครงสร้างสถานะด้วย moved และ removed” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การปรับโครงสร้างสถานะด้วย moved และ removed”

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

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

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

บทเรียน “การปรับโครงสร้างสถานะด้วย moved และ removed” ใช้เวลานานแค่ไหน

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

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

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

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

  1. แบ็กเอนด์สถานะระยะไกล
  2. การล็อกสถานะและความสอดคล้อง
  3. การนำเข้าทรัพยากรที่มีอยู่
  4. การปรับโครงสร้างสถานะด้วย moved และ removed
← กลับไปที่ Terraform Infrastructure as Code