ماژول های پیشرفته Terraform: با نحوه ایجاد و استفاده از ماژول های پیشرفته Terraform آشنا شوید

Terraform ابزاری قدرتمند برای مدیریت زیرساخت به عنوان کد است و یکی از کاربردی ترین ویژگی های آن امکان ایجاد و استفاده از ماژول ها است. ماژول ها به شما این امکان را می دهند که زیرساخت های پیچیده را انتزاعی کنید و از کدها در پیکربندی های Terraform خود استفاده مجدد کنید. در این پست، چند تکنیک پیشرفته برای ایجاد و استفاده از ماژول های Terraform، از جمله ماژول های تو در تو و ماژول های قابل استفاده مجدد را بررسی خواهیم کرد.
ماژول های تو در تو
ماژول های تو در تو به شما این امکان را می دهند که زیرساخت های پیچیده را به قطعات کوچکتر و قابل مدیریت تر تقسیم کنید. به عنوان مثال، شما ممکن است یک ماژول برای VPC داشته باشید که شامل زیرماژول هایی برای زیرشبکه ها، گروه های امنیتی و جداول مسیر است. این به شما امکان می دهد تا از زیر ماژول های مشابه در VPC های مختلف استفاده مجدد کنید و مدیریت و آزمایش زیرساخت خود را آسان تر می کند.
برای ایجاد یک ماژول تودرتو، به سادگی یک دایرکتوری جدید برای زیر ماژول خود ایجاد کنید و منابع خود را همانطور که در یک فایل پیکربندی معمولی Terraform تعریف می کنید، تعریف کنید. سپس، در ماژول والد خود، با استفاده از بلوک ماژول به زیر ماژول ارجاع دهید:
module "vpc" {
source = "./modules/vpc"
cidr_block = "10.0.0.0/16"
}
module "subnet" {
source = "./modules/vpc/subnet"
vpc_id = module.vpc.id
cidr_block = "10.0.1.0/24"
}
در اینجا، ما به یک زیر ماژول به نام ارجاع می دهیم subnet
داخل یک ماژول به نام vpc
. ما در حال عبور از vpc_id
خروجی از vpc
ماژول، که به ما اجازه می دهد یک زیر شبکه ایجاد کنیم که با VPC مرتبط است.
ماژول های قابل استفاده مجدد
ماژول های قابل استفاده مجدد به شما این امکان را می دهند که اجزای زیرساخت عمومی ایجاد کنید که می توانند در پروژه ها یا سازمان های مختلف مورد استفاده مجدد قرار گیرند. به عنوان مثال، شما ممکن است یک ماژول برای ایجاد یک سطل AWS S3 ایجاد کنید، که می تواند در برنامه های مختلف مجددا استفاده شود.
برای ایجاد یک ماژول قابل استفاده مجدد، باید ورودی ها و خروجی هایی را تعریف کنید که می توانند سفارشی سازی شوند و در پروژه های مختلف مورد استفاده مجدد قرار گیرند. به عنوان مثال، در اینجا یک ماژول برای ایجاد یک سطل AWS S3 آمده است:
variable "bucket_name" {}
resource "aws_s3_bucket" "bucket" {
bucket = var.bucket_name
acl = "private"
}
output "bucket_id" {
value = aws_s3_bucket.bucket.id
}
در اینجا، متغیری به نام تعریف کرده ایم bucket_name
، که به کاربر اجازه می دهد نام سطل S3 را شخصی سازی کند. ما همچنین یک خروجی به نام تعریف کرده ایم bucket_id
، که به کاربر اجازه می دهد تا شناسه سطل S3 را در سایر قسمت های پیکربندی خود ارجاع دهد.
برای استفاده از این ماژول در پیکربندی Terraform خود، به سادگی با استفاده از یک بلوک ماژول به آن مراجعه کنید و ورودی های مورد نیاز را وارد کنید:
module "s3_bucket" {
source = "github.com/example/s3-bucket"
bucket_name = "example-bucket"
}
resource "aws_s3_bucket_object" "example" {
bucket = module.s3_bucket.bucket_id
key = "example.txt"
source = "example.txt"
}
در اینجا، ما به یک ماژول قابل استفاده مجدد برای ایجاد یک سطل S3 که به صورت سفارشی منتقل می شود، ارجاع می دهیم bucket_name
. ما همچنین به آن اشاره می کنیم bucket_id
خروجی از ماژول، که به ما اجازه می دهد یک شی S3 در داخل سطل ایجاد کنیم.
نتیجه
در نتیجه، تسلط بر ماژولهای پیشرفته Terraform میتواند توانایی شما را در مدیریت زیرساختهای پیچیده بهعنوان کد تا حد زیادی بهبود بخشد. با استفاده از ماژول های تو در تو، می توانید زیرساخت های بزرگ را به قطعات قابل استفاده مجدد و قابل مدیریت تقسیم کنید. با ایجاد ماژول های قابل استفاده مجدد، می توانید اجزای زیرساخت عمومی را ایجاد کنید که به راحتی در پروژه ها یا سازمان های مختلف قابل استفاده مجدد باشند. با استفاده از این تکنیکها، میتوانید زیرساختهای پیچیده را با کارایی بیشتر و سهولت بیشتری مستقر کنید.