ترافورم Terraform یک ابزار متن باز برای مدیریت و ایجاد زیرساخت در محیط On-Premise و محیط ابری بصورت کد (IaC: Infrastructure as Code) است که به تیمهای توسعه و عمیات (DevOps) اجازه میدهد تا با استفاده از فایلهای پیکربندی از قبل تهیه شده، عملیات زیرساخت را خودکارسازی کنند.
زیرساختها را بروی هر مدل سرویس ابری، خودکار کنید
Terraform از شرکت HashiCorp یک ابزار (متن باز) برای ایجاد و مدیریت زیرساخت به صورت کد، در محیط ابری و On-Premise است. در ترافورم میتوان فایلهای پیکربندی را، بنحوی که توسط تیمهای توسعه و عملیات (DevOps) قابل ایجاد، خواندن یا توسعه باشد، تعریف و خودکارسازی کرد. این فایلهای پیکربندی (Configuration files) قابلیت استفاده مجدد یا به اشتراکگذاری را نیز دارند. برخلاف مدیریت قدیمی زیرساخت که در آن هر منبع مورد نیاز به صورت دستی توسط فرد متخصص پیکربندی میشد، IaC (زیرساخت به صورت کد) به تیمهای DevOps اجازه میدهد تا با برنامهنویسی و خودکارسازی، منابع مورد نیاز خود را مدیریت، نظارت و تهیه کنند. ترافورم میتواند یک برنامه مدون ثابت برای مدیریت منابع زیرساخت، چه از بخش تجهیزات مانند کامپیوترها، ذخیرهسازها و سایر منابع تحت شبکه و چه اجزای اصلی شبکه مانند منابع DNS وSaaS را پیادهسازی کند. از ترافورم میتوان جهت مدیریت زیرساخت سرویس ابری پراستفاده مانند Amazon Web Services، Azure، Google Cloud Platform، Oracle Cloud Infrastructure، و Docker استفاده کرد. این ابزار در سه نسخه Open Source، Cloud و Enterprise در دسترس است.
ترافورم چگونه کار میکند؟
ترافورم بعنوان زیرساخت بصورت کد، در حقیقت منابع شبکه، خدمات و پیکربندیهای مرکز داده را به کد ترجمه میکند. برای این کار، منابع را روی پلتفرمهای ابری و سایر سرویسها از طریق رابطهای برنامه نویسی کاربردی (API: application programming interfaces) ایجاد و مدیریت میکند. رابط برنامهنویسی کاربردی در حقیقت ارتباط بین دو سیستم یا برنامه است که به توسعه دهنگان این امکان را میدهد تا با استفاده از توابع و دستورات مشخص از قابلیتهای یک سیستم یا برنامه استفاده کنند. این قابلیت باعث میشود تا ترافورم قادر باشد تقریباً با هر پلتفرم یا سرویسی با یک API مشخص کار کند. HashiCorp و جامعه استفاده کنندگان Terraform تاکنون برای تعداد بیشماری از ارائه دهندگان پلتفرمها از جمله خدمات وب آمازون (AWS)، Azure، Google Cloud Platform (GCP)، Kubernetes، Helm، GitHub، Splunk، DataDog و بسیاری دیگر، رابط برنامه نویسی مختص آن را برای مدیریت انواع مختلف منابع و خدمات تهیه کرده اند.
چرخه اجرایی در هسته ترافورم شامل سه زیر مرحله است:
- ایجاد کد: منابع و نوع زیرساخت با HCL (HashiCorp Configuration Language) نوشته شده و بصورت فایل پیکربندی در سرویس ابری استفاده میشود. برای مثال میتوان یک فایل پیکربندی برای نصب یک برنامه خاص در ماشین مجازی (VM) که در یک شبکه ابری خصوصی مجازی (VPC: Virtual Private Cloud) دارای Load Balancer و Security group وجود دارد، را ایجاد کرد.
- ایجاد نقشه راه: ترافورم یک نقشه (طرح) قابل اجرا ایجاد میکند که در آن زیرساختی را که بر اساس پیکربندی فعلی باید ایجاد، به روز رسانی یا پاک کند، تعریف میکند. با کمک آن میتوان تغییراتی را ترافورم بروی زیر ساخت اعمال خواهد کرد، بازبینی کرد.
- اعمال: پس از تایید، ترافورم دستورات اجرایی را با رعایت هر گونه وابستگی به منابع و به ترتیب تعریف شده، انجام میدهد. به عنوان مثال، اگر ویژگیهای یک VPC را به روزرسانی کنید و تعداد ماشینهای مجازی را در آن VPC تغییر دهید، Terraform قبل از تغییر تعداد ماشینهای مجازی، آن VPC را دوباره ایجاد میکند.
چرا ترافورم؟
ترافورم (Terraform) امکان خودکارسازی زیرساختها را در هر مرکز داده یا سرویس ابری آسان میکند. هرگونه تغییرات مربوطه بهState File (فایل وضعیت) را ردیابی میکند و آن را به یک سیستم کنترل نسخه (VCS) میسپارد که باعث میگردد تا از تغییرات غیرمجاز جلوگیری شود. ترافورم با مدیریت منطقی زیرساخت، نیاز به ورود یا بررسی نیروی انسانی را از بین میبرد. همچنین وابستگی منابع را با ایجاد نمودار برآورد کرده و تضمین میکند که منابع به درستی، موثر و به ترتیب ثبت شده، تامین بشوند. تیمهای کاری میتوانند با استفاده از Terraform Cloud با یکدیگر همکاری کرده و گردشهای کاری را مدیریت کنند و به طور ایمن به دادههای مشترک دسترسی داشته باشند.
به طور خلاصه مزایای استفاده از ترافورم به شرح زیر است:
- مدیریت هر نوع زیرساختی: ارائه دهندگان بسیاری از پلتفرمها و خدمات از قبل در ترافورم طراحی شده و قابل مدیریت هستند. اگر حتی ارائه دهندهای در کتابخانه ترافورم یافت نشد میتوان کد آن را نوشت. ترافورم یک روش جدید برای مدیریت زیرساختها ایجاد میکند که پیچیدگیهای بروزرسانی، ارتقاء یا تغییرات خدمات زیرساخت را کاهش میدهد.
- اگاهی از وضعیت زیرساختها: ترافورم قبل از اصلاح زیرساختها، یک نقشه راه ایجاد میکند و از شما میخواهد که آن را تأیید کنید. همچنین وضعیت فعلی زیرساخت واقعی شما را در یک فایل (State File) نگه میدارد که به عنوان مقیاس واقعی سیستم شما عمل میکند. سپس از آن برای تعیین تغییراتی که باید در زیرساخت شما ایجاد کند استفاده میکند تا با پیکربندی شما مطابقت داشته باشد.
- خودکارسازی بروزرسانیها: فایلهای پیکربندی ترافور بصورت بیانی (Declarative) هستند، به این معنی که وضعیت نهایی زیرساخت را توصیف میکنند. برنامه نویسی بیانی (Declarative) نوعی از برنامه نویسی است که تمرکز آن بجای نحوه رسیدن به مقصد، تنها بر روی رسیدن به مقصد است. برای ایجاد منابع نیازی به نوشتن دستورالعمل بصورت گام به گام ندارید زیرا ترافورم از منطق زیربنایی پشتیبانی میکند. برای این کار یک نمودار برای تعیین وابستگی منابع میسازد و همزمان منابع غیر وابسته را به صورت موازی ایجاد یا اصلاح میکند. به این صورت منابع را به طور موثر بارگذاری میشوند.
- استاندارد کردن تنظیمات: ترافورم از اجزای پیکربندی به نام ماژولها پشتیبانی میکند که قبلا توسط سایر تیمها نوشته شده و قابل اشتراکگذاری و استفاده مجدد هستند. سپس با استفاده از ماژولها، مجموعههای قابل تنظیم زیرساخت را تعریف میکند و باعث صرفه جویی در وقت میشود. میتوان به راحتی از ماژولهای نوشته شده توسط دیگران استفاده کرد یا نسبت به کدنویسی یک ماژول دلخواه اقدام نمود.
- تعامل کاری: از آنجایی که پیکربندی در پایان بصورت یک فایل خواهد بود، میتوان آن فایل را به یک سیستم کنترل نسخه (VCS: Version Control System) سپرد و از Terraform Cloud برای مدیریت موثر گردشهای کاری در بین تیمها استفاده کرد. Terraform Cloud میتواند پلتفرم ترافورم را در یک محیط سازگار و قابل اعتماد اجرا کند و دسترسی ایمن به فایلهای State و Secret data، Role-base access Control و یا فایلهای رجیستری شخصیسازی شده برای اشتراکگذاری ماژولها و… را فراهم کند.
موارد استفاده متداول ترافورم
موارد بیشماری برای استفاده از ترافورم وجود دارد اما اصلی ترین مورد زیرساخت به صورت کد (IaC) است. برخی از مهمترین و پراستفادهترین آنها به شرح زیر هستند:
- خودکارسازی زیرساختها: برای خودکارسازی مدیریت زیرساخت و منابع از جمله سرورها، پایگاههای داده، (Policy) سیاستهای فایروالها و تقریباً هر منبع دیگری تنها کافیست از زیرساخت بصورت کدنویسی ترافورم استفاده کنید.
- مدیریت چند سرویس ابری: میتوان رایانش بدون سرور (توابع Serverless) را با AWS Lambda بارگذاری کرد و همزمان منابع Microsoft Azure Active Directory را مدیریت کرد و یک Load balancer در Google Cloud آماده کرد و… که همگی تحت مدیریت ترافورم باشند.
- مدیریتKubernetes: برای مدیریت برنامههای کانتینری مهم نیست که کلاسترهای Kubernetes در AWS، Microsoft Azure یا Google Cloud ارائه و مدیریت میشوند. با استفاده ازKubernetes Terraform میتوان به آسانی با کلاسترها تعامل داشت.
- اتوماسیون زیرساخت شبکه: وظایف کلیدی شبکه مانند به روزرسانی Load-Balancer member pools یا اعمال (Policy) سیاستهای فایروال را خودکار میکند.
- مدیریت کپی (image)های ماشینهای مجازی: روالهایی برای تهیه اتوماتیک “Golden Image چندگانه ابری” با HCP Packer و Terraform Cloud ایجاد میکند.
- ادغام با جریانهای کاری (Workflow) موجود: بارگذاری و استقرار زیرساختها را با جریانهای کاری CI/CD فعلی به صورت خودکار ادغام میکند.
- اعمال سیاستها (Policy) را به عنوان کد: قبل از اینکه کاربران زیرساخت را ایجاد کنند، با استفاده از Sentinel به صورت کد، سیاستها (Policy) را اعمال میشود.
- ورود مستقیم کلمات عبور در ترافورم: از HashiCorp Vault میتوان برای خودکارسازی و تولید پویای Secretها و Credentialها در پیکربندی ترافورم استفاده کرد.
در این مقاله به معرفی و بررسی ترافورم Terraform پرداختیم. این ابزار مفید چندین مشکل زیرساختی مهم را حل میکند و با بیشتر روالها، برنامهها و سرویس ابری سازگاری دارد. مزایای مهاجرت از سیستم دستی به این پلتفرم، شامل صرفه جویی در وقت، کاهش خطای انسانی، مدیریت خودکار و استفاده بهینه از منابع موجود در شبکه و موارد دیگر است. این ویژگیهای ترافورم آن را به یک ابزار لازم در راه اندازی زیرساخت های سرویس ابری میکند.