برنامه نویسی

samwise-CLI: ردیاب وابستگی ماژول Terraform منبع باز

Summarize this content to 400 words in Persian Lang

Terraform

Terraform یک ابزار Infrastructure-as-Code (IaC) است که به زبان پیکربندی Hashicorp (HCL) نوشته شده است. این مقاله فرض می کند که خواننده با Terraform کار کرده است و نحوه کار ماژول ها را درک می کند.

هر کسی که در Terraform کد نویسی می کند یا ماژول های خود را ایجاد کرده است یا حداقل از ماژول های شخص دیگری استفاده می کند.

ماژول های Terraform

ماژول ها محفظه هایی برای چندین منبع هستند که با هم استفاده می شوند. یک ماژول شامل مجموعه ای از فایل های tf. و/یا .tf.json است که با هم در یک فهرست نگهداری می شوند.

ماژول ها راه اصلی برای بسته بندی و استفاده مجدد از تنظیمات منابع با Terraform هستند.

ماژول ها را می توان در رجیستری هایی مانند Terraform registry یا GitLab منتشر کرد. ماژول ها همچنین می توانند از مخازن Git با ارائه URL های HTTPS یا SSH ارائه شوند. اینها را نیز می توان نسخه کرد. به عنوان مثال،

module “consul” {
source = “github.com/hashicorp/example”
}

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

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

نسخه شده:

module “consul” {
source = “github.com/hashicorp/example?ref=1.2.6”
}

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

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

چالش

همانطور که مخازن شما رشد می کنند و ماژول های خود را در مخازن دیگر ارجاع می دهید، ماژول های خود را به طور منطقی نسخه می کنید تا مطمئن شوید که تغییرات بالادستی در منبع زیرساخت شما را خراب نمی کند. با این حال، پیگیری همه نسخه‌های جدید برای ماژول‌های مورد استفاده دشوار است و حتی انجام منظم آن سخت‌تر است. بدون پرداختن به این موضوع، اضافه کاری به عنوان بدهی فناوری ایجاد می کند، همانطور که یک روز متوجه می شوید که یک ماژول اصلی اکنون 3 نسخه اصلی در راه است.

راه حل

ارائه samwise-cli، ابزاری برای کمک به ردیابی وابستگی های Terraform/OpenTofu مخزن شما در بالادست. مخزن شما را برای استفاده از ماژول‌ها جستجو می‌کند و گزارشی از ماژول‌هایی که به‌روزرسانی‌های موجود را دارند همراه با همه نسخه‌هایی که پیشرفته‌تر از نسخه‌ای که در حال حاضر استفاده می‌شود، ایجاد می‌کند.

در حال حاضر، تنها یک دستور وجود دارد، اما امیدواریم که به زودی با توسعه ابزار، دستور بیشتری وجود داشته باشد.

فعلاً مخزن تصادفی

یک برنامه CLI برای همراهی در سفر ماژول زمینی شما و به اشتراک گذاشتن بار به‌روزرسانی‌های وابستگی ماژول‌ها، درست همانطور که یک هابیت شجاع به فرودو کمک کرد تا او را حمل کند 🙂

یک برنامه CLI برای همراهی در سفر ماژول زمینی شما و به اشتراک گذاشتن بار به‌روزرسانی‌های وابستگی ماژول‌ها، درست همانطور که یک هابیت شجاع به فرودو کمک کرد تا او را حمل کند 🙂

%,( “' /%% / Cccc' (چون نتوانستم هنر Samwise Gamgee ASCII به اندازه کافی خوب پیدا کنم) Frodo اثر Shanaka Dias”>
\ : /
‘-: __ :-‘
-: )(_ :–
-‘ |r-_i’-
,sSSSSs, (2-,7
sS’;:’`Ss )-j
;K e (e s7 / (
S, ” SJ ( ;/
sL_~~_;(S_) _7
|, ‘J)_.-‘ />’-‘ `Z
j J /-;-A’-‘|’–‘-j\
L L ) |/ : / \
\ \ | | | ‘._.’| L
\ \ | | | | \ J
\ \ _/ | | | ‘,|
\ L.,’ | | | | |/
_;-r-…

چک برای به روز رسانی

برای اجرا در جایی که ماژول ها از مخازن خصوصی GitHub استفاده می کنند، فایل پیکربندی .samwise.yaml باید به عنوان آرگومان ارسال شود یا باید در فهرست اصلی کاربر وجود داشته باشد.

فرمت .samwise.yaml:

github_key:
github_username:

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

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

در حال حاضر فقط احراز هویت HTTPS GitHub پشتیبانی می شود اما احراز هویت SSH به زودی پشتیبانی می شود.

نتیجه

فرمت CSV

فرمت JSON

محدودیت ها (یا بهتر است به عنوان ویژگی هایی که باید اضافه شوند توصیف شود)

احراز هویت SSH برای بازیابی منابع ماژول
ردیابی ماژول رجیستری Hashicorp (آنها یک API برای لیست کردن نسخه ها در اینجا دارند

زمینه برای نام

من عاشق ارباب حلقه ها هستم 🙂

Terraform

Terraform یک ابزار Infrastructure-as-Code (IaC) است که به زبان پیکربندی Hashicorp (HCL) نوشته شده است. این مقاله فرض می کند که خواننده با Terraform کار کرده است و نحوه کار ماژول ها را درک می کند.

هر کسی که در Terraform کد نویسی می کند یا ماژول های خود را ایجاد کرده است یا حداقل از ماژول های شخص دیگری استفاده می کند.

ماژول های Terraform

ماژول ها محفظه هایی برای چندین منبع هستند که با هم استفاده می شوند. یک ماژول شامل مجموعه ای از فایل های tf. و/یا .tf.json است که با هم در یک فهرست نگهداری می شوند.

ماژول ها راه اصلی برای بسته بندی و استفاده مجدد از تنظیمات منابع با Terraform هستند.

ماژول ها را می توان در رجیستری هایی مانند Terraform registry یا GitLab منتشر کرد. ماژول ها همچنین می توانند از مخازن Git با ارائه URL های HTTPS یا SSH ارائه شوند. اینها را نیز می توان نسخه کرد. به عنوان مثال،

module "consul" {
  source = "github.com/hashicorp/example"
}
وارد حالت تمام صفحه شوید

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

نسخه شده:

module "consul" {
  source = "github.com/hashicorp/example?ref=1.2.6"
}
وارد حالت تمام صفحه شوید

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

چالش

همانطور که مخازن شما رشد می کنند و ماژول های خود را در مخازن دیگر ارجاع می دهید، ماژول های خود را به طور منطقی نسخه می کنید تا مطمئن شوید که تغییرات بالادستی در منبع زیرساخت شما را خراب نمی کند. با این حال، پیگیری همه نسخه‌های جدید برای ماژول‌های مورد استفاده دشوار است و حتی انجام منظم آن سخت‌تر است. بدون پرداختن به این موضوع، اضافه کاری به عنوان بدهی فناوری ایجاد می کند، همانطور که یک روز متوجه می شوید که یک ماژول اصلی اکنون 3 نسخه اصلی در راه است.

راه حل

ارائه samwise-cli، ابزاری برای کمک به ردیابی وابستگی های Terraform/OpenTofu مخزن شما در بالادست. مخزن شما را برای استفاده از ماژول‌ها جستجو می‌کند و گزارشی از ماژول‌هایی که به‌روزرسانی‌های موجود را دارند همراه با همه نسخه‌هایی که پیشرفته‌تر از نسخه‌ای که در حال حاضر استفاده می‌شود، ایجاد می‌کند.

راهنمای samwise-cli

در حال حاضر، تنها یک دستور وجود دارد، اما امیدواریم که به زودی با توسعه ابزار، دستور بیشتری وجود داشته باشد.

فعلاً مخزن تصادفی

یک برنامه CLI برای همراهی در سفر ماژول زمینی شما و به اشتراک گذاشتن بار به‌روزرسانی‌های وابستگی ماژول‌ها، درست همانطور که یک هابیت شجاع به فرودو کمک کرد تا او را حمل کند 🙂

یک برنامه CLI برای همراهی در سفر ماژول زمینی شما و به اشتراک گذاشتن بار به‌روزرسانی‌های وابستگی ماژول‌ها، درست همانطور که یک هابیت شجاع به فرودو کمک کرد تا او را حمل کند 🙂

برو تست کن

%,( “' /%% / Cccc' (چون نتوانستم هنر Samwise Gamgee ASCII به اندازه کافی خوب پیدا کنم) Frodo اثر Shanaka Dias”>

                       \ : /
                    '-: __ :-'
                    -:  )(_ :--
                    -' |r-_i'-
            ,sSSSSs,   (2-,7
            sS';:'`Ss   )-j
           ;K e (e s7  /  (
            S, ''  SJ (  ;/
            sL_~~_;(S_)  _7
|,          'J)_.-' />'-' `Z
j J         /-;-A'-'|'--'-j\
 L L        )  |/   :    /  \
  \ \       | | |    '._.'|  L
   \ \      | | |       | \  J
    \ \    _/ | |       |  ',|
     \ L.,' | | |       |   |/
    _;-r-<_. __.="" _="" l-="" l=""/>

چک برای به روز رسانی

توضیحات تصویر

برای اجرا در جایی که ماژول ها از مخازن خصوصی GitHub استفاده می کنند، فایل پیکربندی .samwise.yaml باید به عنوان آرگومان ارسال شود یا باید در فهرست اصلی کاربر وجود داشته باشد.

فرمت .samwise.yaml:

github_key:
github_username:
وارد حالت تمام صفحه شوید

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

در حال حاضر فقط احراز هویت HTTPS GitHub پشتیبانی می شود اما احراز هویت SSH به زودی پشتیبانی می شود.

نتیجه

فرمت CSV
تصویر فرمت گزارش CSV ایجاد شده

فرمت JSON
تصویر فرمت گزارش JSON ایجاد شده است

محدودیت ها (یا بهتر است به عنوان ویژگی هایی که باید اضافه شوند توصیف شود)

  • احراز هویت SSH برای بازیابی منابع ماژول
  • ردیابی ماژول رجیستری Hashicorp (آنها یک API برای لیست کردن نسخه ها در اینجا دارند

زمینه برای نام

من عاشق ارباب حلقه ها هستم 🙂

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

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

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

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