معرفی
تعریف کوتاه ترافورم
ترافورم (Terraform) ابزاری برای مدیریت زیرساخت بهعنوان کد (Infrastructure as Code یا IaC) است. با آن منابعی مانند شبکه، ماشین مجازی، پایگاه داده، فضای ذخیرهسازی، سرویسهای ابری و تنظیمات Kubernetes را در فایلهای پیکربندی تعریف میکنید. سپس ترافورم تغییر لازم را از طریق API ارائهدهنده زیرساخت اعمال میکند.
هسته کار با ترافورم
هسته کار با ترافورم بر چند مفهوم عملی استوار است:
فایل پیکربندی وضعیت مطلوب زیرساخت را توصیف میکند.
ارائهدهنده یا Provider ارتباط با سرویسهایی مانند AWS، Azure، Google Cloud یا Kubernetes را برقرار میسازد.
وضعیت یا State نگاشت میان کد و منابع واقعی را نگه میدارد.
دستور Plan پیش از تغییر، تفاوت وضعیت فعلی و مطلوب را نشان میدهد.
Apply تغییرات تأییدشده را اجرا میکند.
کاربرد ترافورم در مشاغل مرتبط
مهندسان دواپس (DevOps)، مهندسان پلتفرم و تیمهای زیرساخت معمولاً از ترافورم برای ساخت محیطهای تکرارپذیر و بازبینیپذیر استفاده میکنند. در بازار کار ایران نیز ممکن است این ابزار در شرح وظایف عنوانهایی مانند DevOps Engineer، Site Reliability Engineer یا Cloud Engineer دیده شود اما انتخاب Provider و سرویسهای هدف کاملاً به زیرساخت، ارائهدهنده ابر و سیاستهای کارفرما وابسته است. این ابزار برای پیکربندی جزئیات داخل سرورها، مانند نصب بستهها یا مدیریت فایلها، انتخاب اصلی نیست. در آن سناریوها ابزارهایی مانند Ansible اغلب مکمل ترافورم هستند.
مجوزهای ابزار ترافورم
نسخههای Terraform تا نسخه ۱.۵.۷ با مجوز Mozilla Public License 2.0 منتشر میشدند. HashiCorp از Terraform ۱.۶.۰ مجوز Business Source License 1.1 یا BSL 1.1 را به کار گرفت. BSL مجوز متنباز به معنای مورد تأیید Open Source Initiative نیست، هرچند کد منبع آن قابل مشاهده است. جزئیات این تغییر در اعلامیه رسمی HashiCorp آمده است. خود CLI رایگان است و HashiCorp برای قابلیتهای تیمی و سازمانی در HCP Terraform طرحهای رایگان و پولی ارائه میکند.
ویژگیهای کلیدی
موارد زیر تصویری کلی از این بخش برای این ابزار ارائه میکنند.
-
تعریف وضعیت مطلوب زیرساخت
منابع زیرساختی را در فایلهای پیکربندی اعلامی تعریف میکنید. ترافورم برای رسیدن به این وضعیت، وابستگیها و ترتیب ساخت منابع را محاسبه میکند.
-
پیشنمایش تغییرات با Plan
دستور Terraform Plan نشان میدهد چه منبعی ایجاد، تغییر یا حذف میشود. تیم میتواند خروجی را پیش از Apply در بازبینی کد یا فرایند یکپارچهسازی و تحویل پیوسته (CI/CD) بررسی کند.
-
مدیریت State
State ارتباط میان تعریف کد و شناسه منابع واقعی را نگه میدارد تا ترافورم تغییرات بعدی را تشخیص دهد. نگهداری امن و اشتراکی State برای کار تیمی ضروری است.
-
Providerهای متنوع
Providerها امکان مدیریت سرویسهای ابری، Kubernetes، سامانههای DNS، ابزارهای مانیتورینگ و سرویسهای دیگر را از یک الگوی پیکربندی فراهم میکنند.
-
Moduleهای قابل استفاده مجدد
میتوانید الگوهای تکراری، مانند شبکه استاندارد یا خوشه Kubernetes، را در ماژول یا Module بستهبندی کنید و با ورودیهای متفاوت در چند محیط به کار ببرید.
-
تشخیص انحراف از کد
با اجرای Plan میتوان تفاوت منابع واقعی با پیکربندی ثبتشده را دید. این قابلیت برای شناسایی تغییرات دستی و ناهمسانی محیطها مفید است.
کاربردها
در ادامه، مهمترین موارد این بخش به تفکیک معرفی شدهاند.
-
ساخت محیطهای توسعه، آزمایشی و عملیاتی
یک الگوی مشترک برای شبکه، دسترسیها و سرویسها تعریف کنید و با متغیرهای جداگانه، محیطهای مستقل اما همساخت بسازید.
-
ایجاد زیرساخت ابری تکرارپذیر
منابع ابری مانند شبکه، ماشین مجازی، توازندهنده بار و پایگاه داده را در مخزن Git نگه دارید تا ساخت و تغییر آنها قابل بازبینی باشد.
-
مدیریت منابع Kubernetes
برای ساخت خوشه یا مدیریت منابعی که Provider مربوط پشتیبانی میکند، تعریف زیرساخت را کنار کد و تنظیمات استقرار نگه دارید.
-
استانداردسازی الگوهای زیرساختی
با Moduleها، الگوهای تأییدشده امنیت، شبکه یا برچسبگذاری منابع را در اختیار چند تیم قرار دهید و از کپیکردن پیکربندی جلوگیری کنید.
-
بازبینی تغییرات زیرساخت در CI/CD
Plan را در درخواست ادغام و فرایند یکپارچهسازی و تحویل پیوسته (CI/CD) اجرا کنید تا اعضای تیم پیش از اعمال تغییر، اثر آن بر منابع و احتمال حذف ناخواسته را بررسی کنند.
پرسشهای رایج درباره ترافورم
اگر درباره این ابزار پرسشی دارید، ممکن است پاسخ آن را در میان موارد زیر پیدا کنید.
ترافورم برای چه کاری مناسب است؟
ترافورم برای ایجاد و تغییر منابع زیرساختی از طریق API مناسب است. مانند شبکه، ماشین مجازی، سرویس ابری، DNS و برخی منابع Kubernetes. برای پیکربندی دقیق داخل سیستمعامل سرورها، معمولاً از ابزار مکملی مانند Ansible استفاده میشود.
تفاوت Terraform Plan و Terraform Apply چیست؟
Plan فقط تغییرات پیشنهادی را محاسبه و نمایش میدهد و زیرساخت را تغییر نمیدهد. Apply بدون دریافت فایل Plan ذخیرهشده، طرح را دوباره محاسبه میکند و سپس پس از تأیید تغییرات را اجرا میکند. بنابراین ممکن است با خروجی Plan قبلی یکسان نباشد. اگر فایل Plan ذخیرهشده را به Apply بدهید، همان طرح ذخیرهشده اجرا میشود.
Terraform State چیست و چرا مهم است؟
State فایلی است که ارتباط میان تعریفهای Terraform و منابع واقعی را ثبت میکند. از دستدادن، اشتراکگذاری نادرست یا افشای State میتواند باعث تغییرات اشتباه یا افشای دادههای حساس شود. آن را در محل امن با کنترل دسترسی نگه دارید.
آیا یادگیری ترافورم بدون تجربه رایانش ابری ممکن است؟
ممکن است، اما درک آن دشوارتر میشود. ابتدا مفاهیم شبکه، دسترسی، ماشین مجازی، API و دستکم یک ارائهدهنده زیرساخت یا محیط Kubernetes را در سطح مقدماتی یاد بگیرید. سپس با یک پروژه کوچک Terraform تمرین کنید.
ترافورم بهتر است یا OpenTofu؟
هر دو برای مدیریت زیرساخت بهعنوان کد به کار میروند و زبان پیکربندی مشابهی دارند. انتخاب به سیاست مجوز، سازگاری Provider و Moduleهای موردنیاز، نسخههای مورد استفاده تیم و ابزارهای سازمانی وابسته است. پیش از مهاجرت، سازگاری پروژه خود را آزمایش کنید.