برنامه نویسی

نحوه تنظیم یک آینه رجیستری برای OpenTofu و Terraform

Summarize this content to 400 words in Persian Lang
در پایان ماه اوت، پروژه OpenTofu ابتدا دسترسی به رجیستری خود https://registry.opentofu.org را برای کاربران روسیه مسدود کرد و سپس چندین ارائه دهنده روسی را بدون توضیح واضح حذف کرد (PR#817, PR#839). این امر حتی انعکاس رجیستری رسمی را بی معنی کرد و اجرای فرمان را شکست tofu init برای همه کسانی که به تازگی از Terraform به OpenTofu مهاجرت کرده اند.

قابل توجه است که HashiCorp که در سال 2022 دسترسی کاربران روسی به رجیستری Terraform را مسدود کرده بود، چنین اقدامات شدیدی انجام نداده و ارائه دهندگان روسی را از رجیستری حذف نکرده است.

در این مقاله به گزینه هایی برای دور زدن مسدود کردن رجیستری ارائه دهنده برای کاربران Terraform و OpenTofu خواهیم پرداخت.

دور زدن مسدود کردن registry.terraform.io

در مورد Terraform، مسدود کردن از طریق پیکربندی آینه استاندارد برای رجیستری ارائه دهنده دور زده می شود. برای این کار باید یک فایل ایجاد کنید .terraformrc در فهرست اصلی سیستم عامل شما.

در خود فایل باید آینه را به صورت زیر پیکربندی کنید:

provider_installation {
network_mirror {
url = “https://terraform-mirror.yandexcloud.net/”
include = [“registry.terraform.io/*/*”] }
direct {
exclude = [“registry.terraform.io/*/*”] }
}

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

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

پس از آن terraform init دوباره بدون مشکل اجرا خواهد شد

دور زدن مسدود کردن registry.opentofu.org

وضعیت OpenTofu پیچیده تر از Terraform است. همانطور که قبلا ذکر شد، OpenTofu به صورت فیزیکی اطلاعات متا ارائه دهنده را از رجیستری خود حذف کرده است. این بدان معنی است که حتی یک آینه پیکربندی شده نمی تواند در هنگام استفاده از نسخه های اخیر افزونه هایی که در زمان مسدود کردن وجود نداشتند کمک کند.

به‌طور پیش‌فرض، OpenTofu از رجیستری registry.opentofu.org استفاده می‌کند مگر اینکه به صراحت مشخص شده باشد. خوشبختانه، پلاگین‌های OpenTofu و Terraform اکنون با هم قابل اجرا هستند و استفاده از رجیستری registry.terraform.io را با یک آینه از پیش پیکربندی شده ممکن می‌سازد. برای این کار کافیست یک فایل در پوشه اصلی فایل سیستم خود ایجاد کنید .tofurc با محتوای زیر:

provider_installation {
network_mirror {
url = “https://terraform-mirror.yandexcloud.net/”
include = [“registry.terraform.io/*/*”] }
direct {
exclude = [“registry.terraform.io/*/*”] }
}

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

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

بعد، یک بلوک را ویرایش کنید terraform داخل کد HCL شما برای هر ارائه دهنده توصیف شده، باید یک پیشوند به پارامتر منبع اضافه کنید registry.terraform.io/ . بلوک مثال برای پیکربندی OpenTofu:

terraform {
required_version = “1.8.0”
required_providers {
yandex = {
source = “registry.terraform.io/yandex-cloud/yandex”
version = “0.129.0”
}
tls = {
source = “registry.terraform.io/hashicorp/tls”
version = “4.0.4”
}
random = {
source = “registry.terraform.io/hashicorp/random”
version = “3.4.3”
}
null = {
source = “registry.terraform.io/hashicorp/null”
version = “3.2.2”
}
aws = {
source = “registry.terraform.io/hashicorp/aws”
version = “5.45.0”
}
}
}

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

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

این تغییر OpenTofu را مجبور می کند از رجیستری Terraform از طریق یک آینه از پیش پیکربندی شده استفاده کند.

لیست آینه های موجود

همانطور که متوجه شده اید، در مثال ها از آینه استفاده کردم terraform-mirror.yandexcloud.net از Yandex. این آینه پایداری و فرکانس آپدیت بالایی ندارد، بنابراین علاوه بر آن می توانید از گزینه های زیر استفاده کنید:

در پایان ماه اوت، پروژه OpenTofu ابتدا دسترسی به رجیستری خود https://registry.opentofu.org را برای کاربران روسیه مسدود کرد و سپس چندین ارائه دهنده روسی را بدون توضیح واضح حذف کرد (PR#817, PR#839). این امر حتی انعکاس رجیستری رسمی را بی معنی کرد و اجرای فرمان را شکست tofu init برای همه کسانی که به تازگی از Terraform به OpenTofu مهاجرت کرده اند.

قابل توجه است که HashiCorp که در سال 2022 دسترسی کاربران روسی به رجیستری Terraform را مسدود کرده بود، چنین اقدامات شدیدی انجام نداده و ارائه دهندگان روسی را از رجیستری حذف نکرده است.

در این مقاله به گزینه هایی برای دور زدن مسدود کردن رجیستری ارائه دهنده برای کاربران Terraform و OpenTofu خواهیم پرداخت.

دور زدن مسدود کردن registry.terraform.io

در مورد Terraform، مسدود کردن از طریق پیکربندی آینه استاندارد برای رجیستری ارائه دهنده دور زده می شود. برای این کار باید یک فایل ایجاد کنید .terraformrc در فهرست اصلی سیستم عامل شما.

در خود فایل باید آینه را به صورت زیر پیکربندی کنید:

provider_installation {
  network_mirror {
    url     = "https://terraform-mirror.yandexcloud.net/"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = ["registry.terraform.io/*/*"]
  }
}
وارد حالت تمام صفحه شوید

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

پس از آن terraform init دوباره بدون مشکل اجرا خواهد شد

دور زدن مسدود کردن registry.opentofu.org

وضعیت OpenTofu پیچیده تر از Terraform است. همانطور که قبلا ذکر شد، OpenTofu به صورت فیزیکی اطلاعات متا ارائه دهنده را از رجیستری خود حذف کرده است. این بدان معنی است که حتی یک آینه پیکربندی شده نمی تواند در هنگام استفاده از نسخه های اخیر افزونه هایی که در زمان مسدود کردن وجود نداشتند کمک کند.

به‌طور پیش‌فرض، OpenTofu از رجیستری registry.opentofu.org استفاده می‌کند مگر اینکه به صراحت مشخص شده باشد. خوشبختانه، پلاگین‌های OpenTofu و Terraform اکنون با هم قابل اجرا هستند و استفاده از رجیستری registry.terraform.io را با یک آینه از پیش پیکربندی شده ممکن می‌سازد. برای این کار کافیست یک فایل در پوشه اصلی فایل سیستم خود ایجاد کنید .tofurc با محتوای زیر:

provider_installation {
  network_mirror {
    url     = "https://terraform-mirror.yandexcloud.net/"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = ["registry.terraform.io/*/*"]
  }
}
وارد حالت تمام صفحه شوید

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

بعد، یک بلوک را ویرایش کنید terraform داخل کد HCL شما برای هر ارائه دهنده توصیف شده، باید یک پیشوند به پارامتر منبع اضافه کنید registry.terraform.io/ . بلوک مثال برای پیکربندی OpenTofu:

terraform {
  required_version = "1.8.0"
  required_providers {
    yandex = {
      source  = "registry.terraform.io/yandex-cloud/yandex"
      version = "0.129.0"
    }
    tls = {
      source  = "registry.terraform.io/hashicorp/tls"
      version = "4.0.4"
    }
    random = {
      source  = "registry.terraform.io/hashicorp/random"
      version = "3.4.3"
    }
    null = {
      source  = "registry.terraform.io/hashicorp/null"
      version = "3.2.2"
    }
    aws = {
      source  = "registry.terraform.io/hashicorp/aws"
      version = "5.45.0"
    }
  }
}
وارد حالت تمام صفحه شوید

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

این تغییر OpenTofu را مجبور می کند از رجیستری Terraform از طریق یک آینه از پیش پیکربندی شده استفاده کند.

لیست آینه های موجود

همانطور که متوجه شده اید، در مثال ها از آینه استفاده کردم terraform-mirror.yandexcloud.net از Yandex. این آینه پایداری و فرکانس آپدیت بالایی ندارد، بنابراین علاوه بر آن می توانید از گزینه های زیر استفاده کنید:

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

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

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

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