در دنیای پیچیده امروز، زیرساخت IT قلب تپنده هر سازمان مدرن است. با این حال، مدیریت و نگهداری کارآمد این زیرساخت، به خصوص در محیط های ابری، مراکز داده و ترکیبی، چالش هایی را به همراه دارد.
Terraform یک ابزار زیرساخت مبتنی بر کد (یا IaC مخفف عبارت Infrastructure as Code) است که راه حلی نوآورانه برای غلبه بر این چالش ها ارائه می دهد. این ابزار قدرتمند به کاربران امکان می دهد تا با استفاده از زبان توصیفی ساده و قدرتمند HCL (HashiCorp Configuration Language)، زیرساخت موردنظر خود را به صورت کد تعریف و مدیریت نمایند.
تصویر(1)
Infrastructure as Code یا IaC چیست؟
IaC یک روش مدیریت زیرساخت های نرم افزاری است که به جای استفاده از روش های سنتی و دستی، امکان راه اندازی و پیکربندی سرور، شبکه و سایر اجزای زیرساخت از طریق کد را فراهم می کند.
در IaC، از فایل های پیکربندی برای تعریف و مدیریت تمام اجزای زیرساخت استفاده می شود. این فایل ها شبیه به کدهای برنامه نویسی هستند اما به جای نوشتن دستورات برای انجام وظایف خاص، نیاز است منابع و تنظیمات موردنیاز جهت راه اندازی زیرساخت خود را تعریف نمایید.
مزایای استفاده از IaC عبارتند از:
- اتوماسیون: با IaC می توانید فرآیند راه اندازی و مدیریت زیرساخت خود را به طور خودکار انجام دهید که این امر باعث صرفه جویی در زمان و کاهش خطا می شود.
- قابلیت تکرار: IaC به شما امکان می دهد زیرساخت خود را به طور مداوم و یکسان در محیط های مختلف، مانند محیط های توسعه، تست و عملیات راه اندازی کنید.
- قابلیت ردیابی: با استفاده از IaC می توانید تمام تغییرات ایجاد شده در زیرساخت خود را به طور کامل ردیابی نمایید که این امر عیب یابی و اشتراک گذاری اطلاعات با دیگران را آسان تر می کند.
Terraform چگونه کار می کند؟
Terraform ابزاری محبوب برای IaC است که امکان می دهد منابع زیرساختی را به روشی خودکار تعریف و مدیریت کنید.
در ادامه خلاصه ای از نحوه عملکرد Terraform به زبان ساده ارائه شده است:
1. تعریف زیرساخت:
از فایل های پیکربندی نوشته شده به زبان HashiCorp Configuration Language (HCL) برای تعریف "وضعیت مطلوب" زیرساخت استفاده می شود. این فایل ها شامل منابعی مانند ماشین های مجازی، شبکه و موارد دیگر هستند. HCL یک زبان اعلانی (Declarative programming) می باشد و توسط آن هر آنچه می خواهید را برای Terraform تعیین می کنید.
2. اعمال پیکربندی:
پس از تعریف پیکربندی، می توانید دستور terraform apply را برای اعمال آن استفاده نمایید. ترافرم "وضعیت فعلی" زیرساخت را با "وضعیت مطلوب" که در فایل های پیکربندی خود تعریف کرده اید، مقایسه می کند. سپس Terraform برای رساندن زیرساخت شما به "وضعیت مطلوب"، تغییرات لازم را ایجاد می نماید.
3. مدیریت چرخه حیات:
می توانید از Terraform برای ایجاد، خواندن، بروزرسانی و حذف منابع زیرساختی خود استفاده کنید. این امر به شما امکان می دهد چرخه حیات کامل منابع خود را به روشی خودکار مدیریت نمایید.
4. پشتیبانی از چندین ارائه دهنده:
Terraform از ارائه دهندگان مختلفی پشتیبانی می نماید و می توانید منابع خود را به راحتی مدیریت کنید. این امر به شما انعطاف پذیری می دهد تا از ترافرم برای مدیریت زیرساخت در محیط های مختلف استفاده نمایید.
گردش کار Terraform
تصویر(2)
یک گردش کار معمولی Terraform شامل مراحل زیر است:
مرحله 1: نوشتن (Write)
در این مرحله، شما منابع خود را تعریف می کنید که می توانند در چندین ارائه دهنده و سرویس ابری مختلف قرار داشته باشند. به عنوان مثال، می توانید کانفیگی جهت استقرار برنامه روی ماشین های مجازی در شبکه ابر خصوصی (VPC) ایجاد کنید.
مرحله 2: بررسی طرح (Plan)
Terraform با مقایسه زیرساخت اعلام شده شما و وضعیت فعلی، برنامه ای جهت اضافه یا حذف منابع نمایش می دهد.
مرحله 3: اعمال (Apply)
پس از تایید شما، Terraform عملیات پیشنهادی را با ترتیب صحیح و در نظر گرفتن وابستگی ها انجام می دهد. به عنوان مثال، اگر ویژگی های یک VPC را بروزرسانی کنید و تعداد ماشین های مجازی آن VPC تغییر یابد، Terraform قبل از تغییر تعداد ماشین های مجازی، VPC را بازسازی می کند.
چرا باید از Terraform استفاده شود؟
ترافرم به دلیل مزایای متعددی که ارائه می دهد، یک انتخاب محبوب برای ایجاد و مدیریت زیرساخت ابری است. مزایای آن عبارتند از:
- متن باز: Terraform یک پروژه متن باز است و به طور فعال توسط جامعه توسعه دهندگان پشتیبانی می شود. در نتیجه به طیف گسترده ای از افزونه ها، ابزارها و منابع آموزشی دسترسی خواهید داشت.
- مستقل از پلتفرم: Terraform از تمام ارائه دهندگان خدمات ابری پشتیبانی می کند و می توانید آن را برای ایجاد زیرساخت در AWS، Azure، Google Cloud Platform و ... استفاده کنید.
- زیرساخت غیرقابل تغییر: این بدان معنا است که با هر تغییر در زیرساخت، Terraform یک نسخه جدید از پیکربندی شما ایجاد می کند. به عبارت ساده تر، در این روش هر بار که نیاز به تغییر باشد، کل زیرساخت با تنظیمات جدید جایگزین شده و نسخه های قبلی نیز برای برگشت به عقب (rollback) نگهداری می شوند. این روش موجب تسهیل فرایند عیب یابی خواهد شد.
مقایسه Terraform و Ansible
تصویر(3)
Terraform و Ansible هر دو از ابزارهای زیرساخت مبتنی بر کد (Infrastructure as Code) هستند اما چند تفاوت کلیدی بین این دو وجود دارد:
- روش پیکربندی (Configuration): همانطور که بالاتر ذکر شد، ترافرم یک ابزار کاملاً اعلانی (declarative) است. در روش اعلانی، شما فقط حالت نهایی زیرساخت خود را تعریف می کنید (به عنوان مثال: "به 2 ماشین مجازی در یک شبکه خصوصی نیاز است") و Terraform به طور خودکار تمام مراحل لازم برای رسیدن به آن حالت را انجام می دهد. Ansible از هر دو روش اعلانی و دستوری استفاده می کند. در روش دستوری، شما مراحل یا روش دقیق رسیدن به حالت نهایی را مشخص می کنید (به عنوان مثال: "ابتدا یک شبکه خصوصی ایجاد کنید، سپس دو ماشین مجازی در آن شبکه راه اندازی نمایید"). روش دستوری نسبت به اعلانی زمانبر و پیچیده تر است اما کنترل بیشتری روی زیرساخت نیز در اختیارتان می دهد.
- متن باز بودن (Open Source): ابزار Terraform یک پروژه متن باز است و به صورت رایگان در دسترس عموم قرار دارد اما Ansible توسط شرکت Red Hat توسعه یافته و فروخته می شود.
نتیجه گیری
Terraform به عنوان یک ابزار زیرساخت مبتنی بر کد (IaC)، نقشی حیاتی در خودکارسازی و مدیریت زیرساخت ها ایفا می کند. این ابزار قدرتمند با زبانی ساده و انعطاف پذیر، به شما امکان می دهد تا منابع زیرساختی را در محیط های ابری، مراکز داده و محیط های ترکیبی به طور خودکار تعریف و مدیریت نمایید.