رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
Terraform و Infrastructure as Code: مدیریت زیرساخت سرور به‌صورت کد

Terraform و Infrastructure as Code: مدیریت زیرساخت سرور به‌صورت کد

آشنایی با مفهوم Infrastructure as Code و آموزش Terraform برای تعریف، ساخت و مدیریت زیرساخت سرور به‌صورت کد به‌جای پیکربندی دستی.

Terraform و Infrastructure as Code: مدیریت زیرساخت سرور به‌صورت کد

در تیم‌هایی که چند سرور، پایگاه‌داده و شبکه را به‌صورت دستی از طریق پنل مدیریتی یا کلیک‌های متوالی می‌سازند، پس از مدتی یک سؤال ساده جواب سختی پیدا می‌کند: «الان دقیقاً چه زیرساختی داریم و با چه تنظیماتی ساخته شده؟» Infrastructure as Code دقیقاً همین مشکل را حل می‌کند.

Infrastructure as Code چیست؟

Infrastructure as Code (به‌اختصار IaC) یعنی تعریف زیرساخت (سرور، شبکه، دیتابیس و...) در قالب فایل‌های متنی به‌جای کلیک دستی در پنل. این فایل‌ها مثل کد برنامه در Git نگه‌داری می‌شوند، قابل مرور (Code Review)، قابل بازگشت به نسخهٔ قبلی و قابل اجرای مجدد و یکسان روی محیط‌های مختلف هستند.

Terraform چطور کار می‌کند؟

مفهومتوضیح
Providerافزونه‌ای که Terraform را به یک سرویس (مثل یک ارائه‌دهندهٔ ابری) متصل می‌کند
Resourceیک واحد زیرساخت مشخص مثل سرور، دیسک یا رکورد DNS
Stateفایلی که وضعیت فعلی زیرساخت ساخته‌شده را ثبت می‌کند

نصب Terraform

7 خط
sudo apt update
sudo apt install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform -y

terraform -version
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

نوشتن اولین فایل .tf

یک فایل ساده به نام main.tf برای تعریف یک سرور:

14 خط
terraform {
  required_providers {
    example = {
      source  = "example/example"
      version = "~> 1.0"
    }
  }
}

resource "example_server" "web" {
  name  = "web-01"
  size  = "2vcpu-4gb"
  image = "ubuntu-22-04"
}
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

سه فرمان اصلی Terraform

3 خط
terraform init    # دانلود Providerها و آماده‌سازی پروژه
terraform plan    # نمایش تغییراتی که قرار است اعمال شود، بدون اجرا
terraform apply   # اجرای واقعی تغییرات و ساخت زیرساخت
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

خروجی terraform plan پیش از هر اجرا نشان می‌دهد دقیقاً چه چیزی ساخته، تغییر یا حذف خواهد شد؛ همین ویژگی باعث می‌شود IaC بسیار امن‌تر از تغییرات دستی باشد.

مدیریت State و نکات امنیتی

فایل State ممکن است اطلاعات حساس (مثل IP یا شناسه‌های داخلی) را در خود نگه دارد؛ به همین دلیل هرگز نباید آن را مستقیم در Git عمومی commit کرد. برای کار تیمی، بهتر است State در یک Backend امن (مثل فضای ذخیره‌سازی ابری با دسترسی محدود) نگه‌داری شود تا چند نفر بدون تداخل روی یک زیرساخت کار کنند.

جمع‌بندی

Terraform با تعریف زیرساخت در قالب کد، امکان بازتولید دقیق محیط‌های تست و تولید، مرور تغییرات پیش از اعمال و همکاری تیمی امن‌تر را فراهم می‌کند. این رویکرد مکمل خوبی برای ابزارهایی مثل Kubernetes است؛ در حالی که Kubernetes اجرای کانتینرها را مدیریت می‌کند، Terraform می‌تواند خودِ زیرساخت زیرین (سرورها، شبکه) را بسازد. اگر با Docker Compose هم آشنا باشید، تفاوت این دو لایه (زیرساخت در برابر اپلیکیشن) روشن‌تر خواهد بود.

Terraform در کنار ابزارهای مدیریت پیکربندی

Terraform برای Provisioning زیرساخت (ایجاد سرور، شبکه و منابع ابری) استفاده می‌شود، اما برای پیکربندی داخلی سرورها پس از ایجاد، معمولاً از ابزارهای مدیریت پیکربندی مانند Ansible استفاده می‌شود. این دو ابزار مکمل یکدیگرند و جزئیات Ansible در مقاله Ansible: اتوماسیون نصب و پیکربندی سرورها آمده است.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS