برنامه نویسی

مادون قرمز خود را با پشته های تراموی ساده کنید

Terragrunt ، ابزار مدیریت پیکربندی Terraform ، اخیراً عملکرد عمده ای را معرفی کرده است: پشته ها. این تازگی با هدف ساده سازی و بهینه سازی مدیریت زیرساخت ها با کاهش تکرار و بهبود سازمان تنظیمات انجام می شود. در این مقاله ، ما این عملکرد را با جزئیات بررسی خواهیم کرد و ضمن ارائه اطلاعات عمیق برای متخصصان ، آن را برای مبتدیان در دسترس قرار می دهیم.

پشته در ترامپ چیست؟

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

چرا پشته؟

قبل از معرفی پشته ها ، کاربران Terragrunt مجبور بودند تعداد زیادی از پرونده ها را مدیریت کنند terragrunt.hclکه منجر به افزایش تکرار و پیچیدگی شد. پشته ها انتزاعی را در بالای این پرونده ها ارائه می دهند ، و این امکان را فراهم می آورد که چندین واحد را در یک پیکربندی واحد مدیریت و مدیریت کنید. این روش افزونگی را کاهش داده و حفظ تنظیمات را تسهیل می کند.

ویژگی های کلیدی پشته ها

پرونده terragrunt.stack.hcl

پرونده terragrunt.stack.hcl در قلب این ویژگی جدید است. این به عنوان میانبر برای تعریف یک پشته ، مشابه روشی که واحدها می توانند مستقیماً در یک پوشه تعریف شوند ، خدمت می کند. این پرونده به شما امکان می دهد پیکربندی چندین واحد را متمرکز کنید ، بنابراین مدیریت و خوانایی را ساده می کنید.

جبهه unit

در پرونده terragrunt.stack.hcl، بلوک unit برای تعریف واحد استقرار استفاده می شود. هر واحد نمایانگر یک مؤلفه زیرساخت مجزا است که به عنوان بخشی از پشته مستقر می شود. بلوک unit چندین آرگومان را پشتیبانی می کند و امکان پیکربندی دقیق و انعطاف پذیر هر مؤلفه را فراهم می کند.

ترتیب terragrunt stack output

Terragrunt دستور را معرفی می کند terragrunt stack output، که به کاربران امکان می دهد با چندین واحد در یک پشته ، بازیابی و تعامل برقرار کنند. این عملکرد با ادغام آنها در یک دیدگاه منحصر به فرد ، مدیریت خروج از زیرساخت ها را ساده می کند.

مزایای پشته ها

  • کاهش تمرین : با تثبیت تنظیمات ، پشته ها تکثیر کد را کاهش می دهند و تنظیمات را تمیز تر و آسان تر می کنند.

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

  • تجسم بهبود یافته : با پشته ها ، تجسم و درک ساختار و روابط موجود در زیرساخت ها آسان تر است ، که برنامه ریزی و عیب یابی را تسهیل می کند.

ملاحظات فعلی

اگرچه پشته ها مزایای بسیاری را ارائه می دهند ، توجه به این نکته حائز اهمیت است که این ویژگی هنوز در مرحله آزمایش است. برای تثبیت ، به ویژه باید جنبه های مختلفی مورد بحث قرار گیرد:

  • پشتیبانی فرمان پشته : کنترل دستورات را اضافه کنید stack run * برای گسترش عملیات در پشته ها.

  • پشتیبانی از SORTIES STACK : سفارشات را ادغام کنید stack output برای بهبود تعامل با حوادث پشته.

  • مقادیر پشته پشتیبانی : برای پیکربندی انعطاف پذیر ، مدیریت “مقادیر” را به پشته ها معرفی کنید.

  • پشتیبانی پشته بازگشتی : اجازه مدیریت پشته های تو در تو را برای معماری پیچیده تر زیرساخت ها.

  • تست های ادغام : برای اطمینان از مدیریت سیال پشته ها در سناریوهای مختلف عملیاتی ، در تست های عمق انجام دهید.

  • سازگاری با موازی سازی : سازگاری با شاخص های موازی ، به ویژه برای پشته هایی که دارای وابستگی هستند ، بررسی کنید.

نمونه کاربرد

در اینجا نمونه ای از پشته در Google Cloud Platform (GCP)بشر این پشته مدیریت خواهد کرد:

  • وت VPC با زیر شبکه
  • بوها موتور محاسبه نمونه (VM)
  • بوها پایگاه داده ابر SQL

ساختار پروژه

ما پروژه را در سه ماژول Terraform سازماندهی خواهیم کرد:

gcp-stack/
│── modules/
│   │── vpc/
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── outputs.tf
│   │── compute/
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── outputs.tf
│   │── database/
│       ├── main.tf
│       ├── variables.tf
│       ├── outputs.tf
│── terragrunt.stack.hcl
│── terragrunt.hcl
حالت تمام صفحه را وارد کنید

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

1. تعریف پشته (terragrunt.stack.hcl)

در خنجر، یک پشته در پرونده تعریف شده است terragrunt.stack.hclبشر در اینجا یک مثال آورده شده است:

# Activer la fonctionnalité expérimentale des stacks
experiments = ["stacks"]

stack "gcp-infra" {
  description = "Infrastructure GCP avec VPC, VM et base de données"

  unit "vpc" {
    path = "./modules/vpc"
  }

  unit "compute" {
    path = "./modules/compute"
    dependencies = ["vpc"]
  }

  unit "database" {
    path = "./modules/database"
    dependencies = ["vpc"]
  }
}
حالت تمام صفحه را وارد کنید

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

توضیح

  • پشته LA “GCP-infra” سه جمع می کند واحد : vpcبا computeبا database
  • هر واحد یک ماژول Terraform را نشان می دهد
  • compute ولایت database وابسته بودن vpc، بنابراین آنها فقط بعد از آن مستقر خواهند شد

2. ترامون پیکربندی (terragrunt.hcl)

این پرونده از تکرارها جلوگیری می کند و تنظیمات خاصی را متمرکز می کند:

terraform {
  source = "${path_relative_to_include()}"
}

remote_state {
  backend = "gcs"
  config = {
    bucket = "my-terraform-state-bucket"
    prefix = "${path_relative_to_include()}"
  }
}

inputs = {
  project_id  = "my-gcp-project"
  region      = "us-central1"
}
حالت تمام صفحه را وارد کنید

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

3. ماژول VPC (modules/vpc/main.tf)

این ماژول ایجاد می کند VPC با زیر شبکه:

resource "google_compute_network" "vpc" {
  name                    = "my-vpc"
  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "subnet" {
  name          = "my-subnet"
  region        = var.region
  network       = google_compute_network.vpc.id
  ip_cidr_range = "10.0.0.0/24"
}

output "vpc_id" {
  value = google_compute_network.vpc.id
}

output "subnet_id" {
  value = google_compute_subnetwork.subnet.id
}
حالت تمام صفحه را وارد کنید

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

4. موتور محاسبه ماژول (modules/compute/main.tf)

این ماژول را مستقر می کند VM که از VPC ایجاد شده استفاده می کند:

resource "google_compute_instance" "vm" {
  name         = "my-vm"
  machine_type = "e2-medium"
  zone         = "${var.region}-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network    = var.vpc_id
    subnetwork = var.subnet_id
  }
}

output "vm_ip" {
  value = google_compute_instance.vm.network_interface[0].network_ip
}
حالت تمام صفحه را وارد کنید

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

5. ماژول Cloud SQL (modules/database/main.tf)

این ماژول ایجاد می کند پایگاه داده ابر SQL :

resource "google_sql_database_instance" "db" {
  name             = "my-database"
  database_version = "MYSQL_8_0"
  region           = var.region

  settings {
    tier = "db-f1-micro"
    ip_configuration {
      private_network = var.vpc_id
    }
  }
}

output "db_instance" {
  value = google_sql_database_instance.db.connection_name
}
حالت تمام صفحه را وارد کنید

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

6. استقرار پشته

با خنجر، امکان اجرای تمام واحدهای پشته به یک ترتیب وجود دارد:

terragrunt run-all apply
حالت تمام صفحه را وارد کنید

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

این سفارش:

  • اول مستقر می کند VPC
  • سپس آنجا VM و مجموعه پایگاه داده
  • وابستگی ها را به طور خودکار مدیریت می کند

برای دیدن خروجی های کل پشته:

terragrunt stack output
حالت تمام صفحه را وارد کنید

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

در پشته ها در Terragrunt پیشنهاد a سازمان روشن ولایت مدیریت وابستگی خودکار بین ماژول ها در GCP ، آنها امکان استقرار یک زیرساخت کامل را فراهم می کنند به یک سفارش واحد، در حالی که پیکربندی را متمرکز می کنید.

پایان

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

برای کسانی که مایل به کشف بیشتر این عملکرد هستند ، توصیه می شود با مستندات رسمی Terragrunt مشورت کنید و در بحث های جامعه شرکت کنید تا از تحولات آینده مطلع شوید.

منابع

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

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

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

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