การตรวจจับและแก้ไข Terraform Drift

Terraform drift สร้างความเสี่ยงที่มองไม่เห็นในสภาพแวดล้อม production ของคุณ สิ่งนี้เกิดขึ้นเมื่อโครงสร้างพื้นฐาน (infrastructure) จริงของคุณไม่ตรงกับโค้ดอีกต่อไป

ความไม่สอดคล้องกันนี้ทำให้เกิดระบบขัดข้อง (outages) สร้างช่องโหว่ด้านความปลอดภัย และนำไปสู่ความล้มเหลวในการปฏิบัติตามข้อกำหนด (compliance)

ทำไมถึงเกิด drift?

  • วิศวกรทำการแก้ไขปัญหาด่วน (hotfixes) ผ่าน cloud console
  • ทีมงานทำการเปลี่ยนแปลงด้วยตนเอง (manual changes) ระหว่างเกิดเหตุการณ์ขัดข้อง
  • มีการสร้างทรัพยากรนอกเหนือจากเวิร์กโฟลว์ IaC ของคุณ
  • ความเร็วในการทำงานแซงหน้ากฎเกณฑ์การควบคุม (governance rules) ของคุณ

ตัวอย่าง: โค้ดของคุณกำหนดให้ EC2 instance เป็น t2.micro แต่วิศวกรได้เปลี่ยนมันเป็น t2.large ด้วยตนเองใน AWS console ตอนนี้โค้ดและความเป็นจริงของคุณจึงไม่ตรงกัน นี่คือ drift

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

วิธีการป้องกัน:

  • ใช้ remote backend โดยจัดเก็บ state ไว้ใน AWS S3 วิธีนี้จะช่วยให้ไฟล์ state ของคุณปลอดภัยและมีการเก็บเวอร์ชันไว้สำหรับทั้งทีม
  • ใช้ GitOps โดยกำหนดให้ Git เป็นแหล่งข้อมูลความจริงเพียงหนึ่งเดียว (single source of truth) ทุกการเปลี่ยนแปลงจะต้องผ่าน pull request
  • ทำการทดสอบแบบอัตโนมัติ (Automate testing) ตรวจสอบการเปลี่ยนแปลงโครงสร้างพื้นฐานของคุณก่อนที่จะนำไปใช้งานจริง
  • ตรวจสอบอย่างสม่ำเสมอ ใช้เครื่องมืออย่าง AWS Config หรือ Spacelift เพื่อแจ้งเตือนเมื่อมีการเปลี่ยนแปลงเกิดขึ้นนอกเหนือจากโค้ดของคุณ

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

ความสอดคล้องกันจะช่วยให้ระบบของคุณมีความเสถียร

Source: https://dev.to/vprachi360/terraform-drift-detection-and-remediation-tactics-29bm

Optional learning community: https://t.me/GyaanSetuAi