Terraform چیست؟ + بررسی نحوه عملکرد
Terraform ابزاری قدرتمند برای زیرساخت به عنوان کد (Infrastructure as Code یا IaC) است که توسط شرکت HashiCorp توسعه یافته است. این ابزار به شما اجازه میدهد زیرساختهای خود را در محیطهای ابری یا داخلی تعریف، پیاده سازی و مدیریت کنید. این ابزار به دلیل معماری plugin-based خود، توانایی توسعه پذیری بالایی داشته و قادر است تا با نیازهای مختلف زیرساختی سازگار شود.
Terraform چیست؟
Terraform ابزاری قدرتمند در زمینه مدیریت زیرساخت است که امکان برقراری ارتباط با میزبانهای زیرساخت مختلف را فراهم میآورد و به شما اجازه میدهد تا سناریوهای پیچیده مدیریتی را در محیطهای چند ابری (Multi Cloud) با رعایت اصول انطباق (Compliance) پیاده سازی کنید.
در این مقاله، به بررسی عناصر پایه و برخی قابلیتهای کلیدی Terraform که میتواند به شروع کار شما کمک کند میپردازیم.
مزایای استفاده از Terraform
- Declarative Configuration: شما وضعیت دلخواه خود را برای منابع زیرساخت تعریف میکنید، نه اینکه گامهای دقیق برای دستیابی به آن را بنویسید. این باعث میشود که فهمیدن و مدیریت سیستمهای پیچیده زیرساخت راحتتر باشد.
- پشتیبانی از چندین ارائه دهنده ابری: این ویژگی به کاربران این امکان را میدهد تا منابع زیرساخت خود را با استفاده از یک پیکربندی واحد تعریف و مدیریت کنند.
- کد زیرساخت قابل استفاده مجدد: با استفاده از Terraform میتوانید کدهایی بنویسید که به راحتی میتوان آنها را دوباره استفاده کرد. این کار با استفاده از ماژولها و متغیرها انجام میشود و باعث میشود که نگهداری و مدیریت پروژههای پیچیده راحتتر باشد.
- مدیریت کارآمد منابع: Terraform دارای ویژگیهایی مثل وابستگی منابع (Resource Dependencies) و Provisioners است که به کاربر اجازه میدهد منابع زیرساخت خو را به شکل کارامد مدیریت و از تکرار و اشتباهات جلوگیری کند.
معایب استفاده از Terraform
- پیچیدگی: به علت ویژگیهای زیادی که دارد درک آن برای کاربرا تازه کار گیج کننده است.
- عملکرد: Terraform در مقایسه با برخی ابزارهای دیگر میتواند کندتر باشد، به ویژه وقتی که شما با پروژههای بزرگتری کار میکنید.
- محدودیت در مدیریت خطا: هنگام بروز خطا در Terraform، شناسایی و رفع مشکل دشوار است.
- محدودیت در قابلیتهای بازگشت: اگر شما اشتباهی در پیکربندی خود ایجاد کنید، امکان بازگشت به وضعیت قبلی وجود ندارد و مجبور خواهید بود که تمامی منابع را دوباره از ابتدا حذف کنید.
نحوه کار Terraform
با استفاده از Terraform کاربران میتوانند منابع زیرساخت را با استفاده از یک زبان پیکربندی ساده تعریف کنند. این منابع میتواند شامل موارد مختلفی مثل ماشین مجازی، اجزای شبکه، منابع ذخیره سازی و موارد دیگر باشد. پس از پیکربندی، میتوان از Terraform برای ایجاد، اصطلاح و یا از بین بردن منابع استفاده کرد.
یکی از مزایای اصلی Terraform قدرت آن در پشتیبانی از ارائه دهندههای ابری مختلف و ابزارهای داخلی و متن باز است. به این معنا که کاربران میتوانند منابع را با استفاده از یک پیکربندی واحد تعریف و از این ابزار برای مدیریت منابع در محیطهای مختلف استفاده نمایند.
به زبانی ساده، Terraform ابزاری قدرتمند و انعطاف پذیر است که به کاربران اجازه میدهد منابع را به روشی که قابل استفاده دوباره باشند مدیریت کنند. این ابزار در زمینههای مختلفی مثل زیرساختهای کلود، دیتاسنترها و این دست از موارد استفاده میشوند.

اجزای معماری Terraform
معماری Terraform از چند بخش کلیدی تشکیل شده است که در کنار یکدیگر امکان تعریف، پیاده سازی و مدیریت زیرساختها را به شیوهای خودکار و کدنویسی شده فراهم میکنند. در ادامه، اجزای اصلی این معماری را معرفی میکنیم:
فایلهای پیکربندی (Terraform Configuration Files)
این فایلها شامل تعریف منابع زیرساختی هستند که توسط Terraform مدیریت میشوند. همچنین متغیرهای ورودی و خروجی و ماژولها نیز در این فایلها تعریف میگردند.
فایل وضعیت (Terraform State File)
فایل وضعیت اطلاعات دقیقی از وضعیت فعلی زیرساخت ذخیره میکند. این فایل نقش کلیدی در همگام سازی بین وضعیت واقعی زیرساخت و وضعیت مورد نظر تعریف شده در فایلهای پیکربندی ایفا میکند.
زیرساخت به عنوان کد (Infrastructure as Code)
با استفاده از Terraform، به جای تنظیم دستی منابع از طریق رابط کاربری، میتوان زیرساخت را با استفاده از کد تعریف و مدیریت کرد.
رابطهای API یا سایر ارائه دهندگان زیرساخت (Cloud APIs or Infrastructure Providers)
Terraform برای ساخت یا حذف منابع، از APIهایی که هر پلتفرم ابری مثل AWS ،Azure یا GCP ارائه میدهد استفاده میکند.
Providerها
Terraform با مجموعه گستردهای از ارائهدهندگان خدمات زیرساخت ادغام میشود. این Providerها امکان ارتباط مستقیم Terraform با پلتفرمهای مختلف را برای مدیریت منابع فراهم میکنند.
عناصر اصلی Terraform
برای بهره برداری موثر از Terraform، آشنایی با اجزای کلیدی آن ضروری است. در ادامه، مهمترین عناصر این ابزار معرفی میشوند.
Terraform CLI
Terraform یک ابزار متن باز (Open Source) است که به صورت یک فایل اجرایی واحد ارائه میشود و شما میتوانید آن را دانلود کرده و از طریق خط فرمان (Command Line) اجرا کنید. این ابزار به شما کمک میکند تا فرآیند ایجاد، مدیریت و حذف زیرساختها را به صورت خودکار انجام دهید.
Terraform Language
این ابزار از زبان پیکربندی HashiCorp (HCL) برای تعریف زیرساخت استفاده میکند. زبان HCL به گونهای طراحی شده است که برای انسان و ماشینها قابل فهم باشد. همین امر آن را برای ابزارهای DevOps مناسب میکند.
Terraform Provider
این امکان را فراهم میکند که Terraform با یک پلتفرم خاص زیرساخت ارتباط برقرار کند. نوع منابع و منابع دادهای که Terraform میتواند برای آن پلتفرم مدیریت کند، باید توسط Providers پیاده سازی شود. پلتفرمهای ابری، دیتاسنترها، دستگاههای شبکه، پایگاههای داده و دیگر منابع موجود در زیرساخت یا سرویس هدف، همگی میتوانند توسط Terraform providers تعریف، پیکربندی و مدیریت شوند.
Terraform Modules
در Terraform، یک Module به عنوان یک کانتینر برای مجموعهای از منابع مرتبط عمل میکند که به طور مشترک برای انجام یک وظیفه خاص استفاده میشوند. Moduleها به کاربران این امکان را میدهند که کد زیرساخت خود را سازمان دهی کرده و مجددا استفاده کنند. این امر مدیریت استقرارهای پیچیده زیرساخت را آسانتر میسازد.
Modules با استفاده از بلوک module در پیکربندی Terraform تعریف میشوند. بلوک یک Module شامل پارامترهای زیر است:
- source: مکان منبع ماژول که میتواند یک مسیر محلی یا یک URL باشد.
- name: نام ماژول که این نام برای ارجاع به ماژول در بخشهای دیگر پیکربندی استفاده میشود.
- version: نسخهای از ماژول که باید استفاده شود. این پارامتر اختیاری است و میتوان برای مشخص کردن نسخه خاصی از ماژول از آن استفاده کرد.
داخل این ماژولها، میتوان منابع مورد نیاز را تعریف، همچنین از متغیرهای ورودی برای دادن اطلاعات به ماژول (مثل تعداد ماشینها یا نام شبکه) استفاده کرد. در مقابل، متغیرهای خروجی کمک میکنند تا اطلاعات ساخته شده توسط ماژول (مثل آی پی سرورها) را بیرون بفرستید و در قسمتهای دیگر استفاده کنید.
ماژولها میتوانند داخل Nested باشند؛ یعنی یک ماژول میتواند شامل چند ماژول دیگر باشد. این روش کمک میکند معماریهای پیچیدهتر را به شکل مرتب و مرحلهای بسازید. در نهایت، میتوانید ماژولهایی که ساختید را در Terraform Registry منتشر کرده یا از ماژولهای آماده دیگران استفاده کنید تا سریعتر و راحتتر پروژهتان را پیش ببرید.
Terraform Provisioners
تامین کنندگان به ابزارهایی در Terraform گفته میشود که به شما این امکان را میدهند تا پس از ایجاد زیرساخت، دستوراتی را بر روی آن اجرا کنید.
با این حال، باید از تامین کننگان به دقت استفاده کنید. چرا که آنها میتوانند تنظیمات شما را پیچیده و نیاز به دسترسیهای سطح بالاتر داشته باشند. بهترین کار این است که از آنها فقط در شرایطی استفاده کنید که هیچکدام از دیگر ساختارهای Terraform (مثل منابع یا ماژولها) نتوانند همان نتیجه را فراهم کنند.
Terraform State
Terraform وضعیت زیرساخت شما و وضعیت فعلی آن را در فایلی به نام terraform.tfstate ذخیره میکند. این فایل شامل اطلاعاتی درباره منابع زیرساخت شما است که به Terraform کمک میکند تا تغییرات لازم را در عملیاتهای آینده تشخیص دهد.

خلاصه کلام
Terraform ابزاری متن باز برای تعریف، ایجاد و مدیریت زیرساختها به صورت کد است که با استفاده از آن میتوان زیرساخت را خودکار و قابل تکرار ساخت.
سوالات متداول
آیا Terraform یک ابزار DevOps به حساب میآید؟
بله. Terraform یکی از ابزارهای بسیار کاربردی برای تیمهای DevOps است که به آنها کمک میکند تا زیرساختها را در محیطهای Single Cloud یا Multi Cloud، ایجاد، مدیریت و هماهنگ سازی کنند.
Terraform از چه زبانی استفاده میکند؟
در ابتدا با زبان برنامه نویسی Go توسعه یافت و با تمامی سیستم عاملها سازگاری دارد. همچنین در فرآیند پیکربندی، میتوان از زبان HashiCorp Configuration Language (HCL) استفاده کرد که یک زبان خوانا و ساده برای تعریف زیرساختها است.
آیا Terraform با Kubernetes کار میکند؟
بله. Terraform میتواند فرایند اتوماسیون و تامین منابع مربوط به Kubernetes را در بسترهای ابری انجام دهد. لازم به ذکر است که Terraform جایگزینی برای Kubernetes نیست؛ بلکه این دو ابزار تکمیل کننده یکدیگر هستند و در کنار هم عملکرد بسیار موثری دارند.
منابع
- https://www.geeksforgeeks.org/what-is-terraform/
به این مقاله امتیاز دهید!
میانگین امتیاز 0 / 5. تعداد رأی ها : 0
هنوز هیچ رأیی داده نشده. اولین نفر باشید!
اولین دیدگاه را اضافه کنید.