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


زیرساخت به شکل کُد (IaC) چیست؟

مفهوم Infrastructure as Code (IaC) یعنی به جای مدیریت دستی سرورها، شبکه‌ها، پایگاه‌های داده و دسترسی‌ها، همه‌چیز را در قالب کد نسخه‌نگاری‌شده تعریف کنیم. از مزایای استفاده از این روش می‌توان به موارد زیر اشاره کرد:

  • کاهش خطاهای انسانی
  • استقرار سریع‌تر سرویس‌ها
  • تکرارپذیری در محیط‌های مختلف
  • یکپارچگی با فرآیندهای CI/CD

چرا ترافُرم (Terraform)؟

ترافرم محصول شرکت HashiCorp است و با استفاده از زبان HCL وضعیت مطلوب زیرساخت را تعریف می‌کنید و سپس تغییرات را به‌شکل ایمن و قابل‌کنترل اعمال می‌کنید.

چرخه کار با ترافرم بسیار ساده است؛

  1. ابتدا کد زیرساخت را می‌نویسید (Write)،
  2. سپس تغییرات پیشنهادی را مشاهده و بررسی می‌کنید (Plan)
  3. و در نهایت همان تغییرات روی محیط شما اعمال می‌شود (Apply)

ویژگی‌های مهم Terraform:

  • مدیریت وضعیت زیرساخت با استفاده از state
  • پشتیبانی از ماژول‌ها برای استفاده مجدد از کد
  • تشخیص خودکار وابستگی بین منابع و ترتیب اجرای آنها

معماری ترافرم

ترافرم مثل یک مدیر پروژه‌ی ساختمانی برای زیرساخت شماست. این مدیر از ابزارهای خاصی استفاده می‌کند تا مطمئن شود همه چیز مطابق نقشه‌ها پیش می‌رود:

  • تامین‌کنندگان (Providers) تامین‌کنندگان یا Providers ابزارهای ترافرم هستند. آن‌ها افزونه‌هایی هستند که به ترافرم اجازه می‌دهند با یک سرویس خاص (در اینجا ستون) صحبت کند. هر Provider زبان خاص آن سرویس را می‌فهمد و می‌داند چطور منابع را بسازد، یا به‌روزرسانی و حذف کند.

  • منابع و منابع داده (Resources و Data Sources)

    • منابع (Resources) مثل نقشه‌ی دقیق چیزهایی هستند که می‌خواهید بسازید؛ مثلاً یک کاربر، یک گروه یا یک سرور. شما در کد ترافرم، وضعیت نهایی آن منبع را تعریف می‌کنید (مثلاً: “من یک کاربر با نام ‘ali’ می‌خواهم”). سپس ترافرم آن را می‌سازد یا به‌روز می‌کند.

    • منابع داده (Data Sources) مثل لیست مواردی است که از قبل دارید. آن‌ها به شما اجازه می‌دهند اطلاعات مربوط به منابع موجود را که شاید توسط Terraform ساخته نشده‌اند (مثلاً کاربری که قبلاً به صورت دستی ساخته شده)، واکشی کنید و در کدتان از آن‌ها استفاده کنید.

  • **حالت (State) فایل State یکی از حیاتی‌ترین اجزای ترافرم است. این فایل مثل یک دفترچه یادداشت دقیق است که تمام چیزهایی را که ترافرم ساخته، در آن ثبت می‌کند. این فایل، کد شما را به منابع واقعی در محیط شما متصل می‌کند.

    • وقتی terraform plan را اجرا می‌کنید، ترافرم کد شما را با فایل State و وضعیت واقعی زیرساخت مقایسه می‌کند تا ببیند چه تغییراتی لازم است.

نکته بسیار مهم

هرگز فایل State را به صورت دستی ویرایش نکنید! پیشنهاد می‌شود که فایل State را به صورت ریموت و امن نگهداری کنید.

ترافرم ستون

ستون به تازگی اقدام به معرفی نسخه متن باز پروایدر ترافرم خود کرده است و به زودی امکان کار با تمام محصولات ستون از طریق ترافرم و به صورت IaC فراهم خواهد شد. برای دسترسی به نسخه اولیه و مشارکت در توسعه ترافرم ستون می‌توانید به ریپازیتوری گیت‌هاب این سرویس مراجعه کنید و برای شروع به کار با این سرویس می‌توانید به مستندات راهنمای کاربری مراجعه کنید.