برنامه نویسی

اعتبارسنجی پیکربندی Terraform ساده تر شده است

ارتقاء نسخه‌های ارائه‌دهنده برای مدیریت زیرساخت شما با Terraform به‌روز و با ویژگی‌های غنی ضروری است.

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

کار با خروجی Terraform's validate دستور همیشه راحت نیست، با توجه به اینکه به راحتی می تواند بیش از 50000 (بله، پنجاه هزار) خط باشد.

کمی در terraform validate

من اخیراً در چنین موقعیتی قرار گرفتم. ایالت Terraform من نزدیک به 3600 نمونه منبع دارد که 2075 مورد از آنها منسوخ شده است – 57٪ از همه نمونه های منبع 😄

│ This resource is deprecated and will be removed in a future major version release.
│ 
│ (and 4133 more similar warnings elsewhere)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

terraform validate (docs) یک ابزار عالی است – تمام جزئیات مربوط به منابع منسوخ شده و پیکربندی نادرست را که نیاز به توجه شما دارند را به شما نشان می دهد:

{
  "format_version": "1.0",
  "valid": true,
  "error_count": 0,
  "warning_count": 2075,
  "diagnostics": [
    {
      "severity": "warning",
      "summary": "Deprecated Resource",
      "detail": "This resource is deprecated and will be removed in a future major version release. Please use CDEF instead.",
      "address": "module.some.module.address.abcd.name",
      "range": {
        "filename": ".terraform/modules/some.address/main.tf",
        "start": {
          "line": 539,
          "column": 71,
          "byte": 13195
        },
        "end": {
          "line": 539,
          "column": 72,
          "byte": 13196
        }
      }
    }
  ]
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تنها مشکل این است که فایل خروجی از terraform validate -json فایل بیش از 50000 خط دارد و کار با آن چندان راحت نیست. terraform-validate-explorer به نجات!

terraform-validate-explorer

terraform-validate-explorer ابزاری است که به شما کمک می کند نمونه های منابع را از خروجی جستجو و فیلتر کنید terraform validate -json. آن را از این مخزن GitHub دریافت کنید.

ایده این ابزار ناشی از موقعیتی بود که در کار بود: فایل state دارای منابع Snowflake زیادی است و ارائه دهنده Terraform برای Snowflake در سال گذشته دستخوش تغییرات زیادی شده است که منجر به انحرافات زیادی شده است.

نسخه 1.x ارائه‌دهنده Snowflake در دسترس قرار گرفت و من می‌خواستم ارائه‌دهنده را ارتقا دهم، به این معنی که باید با 2075 نمونه منبعی که منسوخ شده بودند مقابله کنم. برخی از این ها با کمک های مالی سر و کار دارند و من نمی خواهم آن ها را بشکنم. در واقع، من نمی خواهم چیزی را برای سهامدارانم بشکنم، بنابراین تصمیم گرفتم کارها را به آرامی انجام دهم.

فیلتر “حاوی” است

ارتقاء یک به یک این منابع به این معنی است که ابتدا باید آنها را پیدا کنم، و اینجاست که فیلتر “حاوی” به من کمک کرد:

شامل tables_future_read است

اسکرین شات بالا جستجوی همه منابعی را که در اختیار دارند نشان می دهد tables_future_read به نام (کمک های مالی “آینده” btw شگفت انگیز است!)

فیلتر “حاوی ندارد”.

فقط برای تأیید آن snowflake_ منابع منسوخ شده اند، من تمام هشدارهایی را که حاوی کلمه نیستند فیلتر کردم snowflake:

حاوی دانه های برف نیست

بدون خطا و بدون هشدار – عالی!

فیلتر “regex”.

اگر دو فیلتر دیگر آن را برای شما قطع نمی‌کنند، همیشه می‌توانید این کار را با یکی از زبان‌های فقط نوشتاری دنیا انجام دهید.

فرض کنید می خواهید به دنبال یک نمونه منبع بگردید که دارد future_ در نام و به دنبال آن یک کلمه چهار حرفی که در انتهای نام منبع قرار دارد:

جستجوی regex

با regex، آسمان حد است! همچنین محدودیت 255 کاراکتری که من روی آن QLineEdit قرار دادم محدودیت است.

اعتبار سنجی فایل خروجی

اگر فایل خروجی از terraform validate -json به نوعی نامعتبر شد (با errrm، ویرایش دستی؟)، terraform-validate-explorer آن را نیز بررسی خواهد کرد:

فایل نامعتبر

مراحل بعدی

terraform-validate-explorer در حال حاضر ساده است، فقط با عملکرد اولیه. برای مفیدتر و پایدارتر کردن آن در آینده، قصد دارم اجرا کنم:

  • تست های واحد
  • رسیدگی به خطا
  • فقط منابع منحصر به فرد را نشان می دهد
  • فیلتر کردن مجموعه داده از قبل فیلتر شده

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا