شناسایی و رفع انحراف (Drift) در Terraform

انحراف در Terraform ریسک‌های پنهانی در محیط عملیاتی (production) شما ایجاد می‌کند. این اتفاق زمانی رخ می‌دهد که زیرساخت واقعی شما دیگر با کد شما مطابقت نداشته باشد.

این عدم تطابق باعث قطعی سرویس (outages) می‌شود. شکاف‌های امنیتی ایجاد می‌کند و منجر به عدم رعایت قوانین انطباق (compliance) می‌گردد.

چرا انحراف رخ می‌دهد؟

  • مهندسان اصلاحات فوری (hotfixes) اضطراری را در کنسول ابری انجام می‌دهند.
  • تیم‌ها در طول یک حادثه، تغییرات دستی اعمال می‌کنند.
  • افراد منابع را خارج از جریان کاری IaC شما ایجاد می‌کنند.
  • سرعت کار از قوانین حاکمیتی (governance) شما پیشی می‌گیرد.

مثال: کد شما یک نمونه EC2 را به عنوان t2.micro تعریف می‌کند. یک مهندس به صورت دستی آن را در کنسول AWS به t2.large تغییر می‌دهد. اکنون کد شما و واقعیت موجود با هم متفاوت هستند. این همان انحراف (drift) است.

چگونه آن را پیدا کنیم: دستور terraform plan را اجرا کنید. این دستور شکاف بین کد شما و ابر را نشان می‌دهد. توجه داشته باشید که اگر برخی تغییرات دستی بر منابع خاصی که Terraform ردیابی می‌کند تأثیر نگذارند، ممکن است پنهان بمانند.

چگونه از آن جلوگیری کنیم:

  • از یک remote backend استفاده کنید. وضعیت (state) خود را در AWS S3 ذخیره کنید. این کار فایل state شما را برای کل تیم، ایمن و دارای نسخه (versioned) نگه می‌دارد.
  • از GitOps استفاده کنید. Git را به تنها منبع حقیقت (single source of truth) خود تبدیل کنید. هر تغییری باید از طریق یک pull request انجام شود.
  • تست را خودکار کنید. تغییرات زیرساخت خود را قبل از عملیاتی شدن بررسی کنید.
  • به‌طور مداوم نظارت کنید. از ابزارهایی مانند AWS Config یا Spacelift استفاده کنید تا در صورت بروز تغییرات خارج از کد شما، به شما هشدار دهند.

چگونه آن را رفع کنیم: اگر انحرافی پیدا کردید، باید زیرساخت را دوباره با کد خود مطابقت دهید. از دستور terraform apply استفاده کنید تا تغییرات دستی را بازنویسی کرده و وضعیت مورد نظر خود را بازیابی کنید.

ثبات و یکپارچگی، سیستم‌های شما را پایدار نگه می‌دارد.

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

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