اعتبارسنجی پیکربندی 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
به نام (کمک های مالی “آینده” btw شگفت انگیز است!)
فیلتر “حاوی ندارد”.
فقط برای تأیید آن snowflake_
منابع منسوخ شده اند، من تمام هشدارهایی را که حاوی کلمه نیستند فیلتر کردم snowflake
:
بدون خطا و بدون هشدار – عالی!
فیلتر “regex”.
اگر دو فیلتر دیگر آن را برای شما قطع نمیکنند، همیشه میتوانید این کار را با یکی از زبانهای فقط نوشتاری دنیا انجام دهید.
فرض کنید می خواهید به دنبال یک نمونه منبع بگردید که دارد future_
در نام و به دنبال آن یک کلمه چهار حرفی که در انتهای نام منبع قرار دارد:
با regex، آسمان حد است! همچنین محدودیت 255 کاراکتری که من روی آن QLineEdit قرار دادم محدودیت است.
اعتبار سنجی فایل خروجی
اگر فایل خروجی از terraform validate -json
به نوعی نامعتبر شد (با errrm، ویرایش دستی؟)، terraform-validate-explorer
آن را نیز بررسی خواهد کرد:
مراحل بعدی
terraform-validate-explorer
در حال حاضر ساده است، فقط با عملکرد اولیه. برای مفیدتر و پایدارتر کردن آن در آینده، قصد دارم اجرا کنم:
- تست های واحد
- رسیدگی به خطا
- فقط منابع منحصر به فرد را نشان می دهد
- فیلتر کردن مجموعه داده از قبل فیلتر شده