جدول محتوایی
Terraform ابزار قدرتمند مدیریت زیرساخت
Terraform ابزار قدرتمند مدیریت زیرساخت است که توسط HashiCorp توسعه داده شده و به شما امکان میدهد زیرساختهای خود را با استفاده از کد تعریف، مدیریت و بهروزرسانی کنید. این ابزار از پروایدرهای مختلف ابری (مانند AWS، Azure، GCP) و حتی پلتفرمهای محلی (مانند VMware, Docker) پشتیبانی میکند.
خرید سرور های اختصاصی از ایرانیکا سرور
چرا Terraform
مدیریت آسان زیرساخت: به جای تنظیم دستی سرورها و سرویسها، همه چیز را با کد تعریف میکنید.
تکرارپذیری (Reproducibility): زیرساخت شما همیشه یکسان و قابل پیادهسازی مجدد است.
همکاری بهتر تیمها : کد Terraform را میتوان در Git ذخیره کرد و تغییرات را ردیابی نمود.
پشتیبانی از چندین پلتفرم: یک ابزار برای مدیریت تمام محیطهای ابری و داخلی.
انواع کارهای Terraform با مثال
ساخت و ایجاد منابع ساده ابری (مثل AWS)
مثال: ایجاد یک سرور مجازی (EC2) در AWS
provider "aws" { region = "us-east-1" } resource "aws_instance" "web_server" { ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 instance_type = "t2.micro" tags = { Name = "My-Web-Server" } }
پس از اجرای terraform apply
، یک سرور EC2 در AWS ایجاد میشود.
مدیریت شبکه و امنیت
مثال: ایجاد VPC، Subnet و Security Group در AWS
resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" } resource "aws_subnet" "public" { vpc_id = aws_vpc.main.id cidr_block = "10.0.1.0/24" } resource "aws_security_group" "allow_http" { name = "allow_http" description = "Allow HTTP traffic" vpc_id = aws_vpc.main.id ingress { from_port = 80 to_port = 80 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } }
با این کد، یک شبکه خصوصی و قوانین فایروال تعریف میشود.
مدیریت ذخیرهسازی و دیتابیس
مثال: ایجاد یک دیتابیس RDS در AWS
resource "aws_db_instance" "mysql_db" { allocated_storage = 20 engine = "mysql" engine_version = "5.7" instance_class = "db.t2.micro" name = "mydatabase" username = "admin" password = "securepassword123" parameter_group_name = "default.mysql5.7" skip_final_snapshot = true }
این کد یک دیتابیس MySQL در AWS RDS ایجاد میکند.
استقرار برنامههای کانتینری (Docker, Kubernetes)
مثال: راهاندازی یک کانتینر Docker با Terraform
provider "docker" {} resource "docker_container" "nginx" { name = "nginx-server" image = "nginx:latest" ports { internal = 80 external = 8080 } }
این کد یک کانتینر Nginx را روی پورت 8080 اجرا میکند.
مدیریت چندین محیط (Dev, Staging, Production)
با استفاده از Workspace یا ماژولها میتوان محیطهای مختلف را مدیریت کرد.
مثال:
locals { env = terraform.workspace == "prod" ? "production" : "development" } resource "aws_instance" "server" { ami = "ami-0c55b159cbfafe1f0" instance_type = local.env == "production" ? "t2.large" : "t2.micro" }
اگر Workspace روی prod
باشد، یک سرور بزرگتر ساخته میشود.
خودکارسازی با CI/CD (مثل GitLab CI, GitHub Actions)
مثال: اجرای خودکار Terraform در GitHub Actions
name: 'Terraform Plan' on: [push] jobs: terraform: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: hashicorp/setup-terraform@v1 - run: terraform init - run: terraform plan
با هر Push به گیتهاب، تغییرات Terraform بررسی میشوند.
مزایای Terraform نسبت به ابزارهای مشابه (مثل Ansible, CloudFormation)
چند-پلتفرمی : پشتیبانی از AWS، Azure، GCP، Kubernetes و غیره.
حالت Declarative : شما فقط نتیجه نهایی را تعریف میکنید، نه مراحل اجرا.
State Management : وضعیت زیرساخت را در فایل terraform.tfstate
ذخیره میکند.
ماژولار بودن : میتوانید کدها را ماژولار بنویسید و دوباره استفاده کنید.
Terraform یک ابزار قوی و انعطافپذیر برای مدیریت زیرساخت به صورت کد است. چه بخواهید یک سرور ساده ایجاد کنید یا یک زیرساخت پیچیده چند ابری، Terraform میتواند به شما کمک کند