حرکت شتابان به سوی رایانش ابری در چند سال گذشته نشان دهنده یک تغییر بزرگ در دنیای فناوری اطلاعات است. به دلیل کاهش هزینه های کلی مالکیت و انعطاف پذیری، تعداد فزایندهای از سازمانها و شرکتهای کوچک و بزرگ در سطح جهان حالا از پلتفرمهای مبتنی بر Cloud برای میزبانی زیرساخت خود و از ابزارهایی مانند Terraform برای استقرار و مدیریت آن استفاده میکنند. این مطلب مزایایی را که ابزارهایی مانند Terraform بر ابزارهای مدیریت زیرساخت بومی ابری به ارمغان میآورد بررسی میکند.
مزایای انتقال به رایانش ابری بسیار زیاد و ملموس است. به عنوان مثال، به جای ماهها انتظار، اکنون میتوان در چند روز یک سرور تهیه کرد و کد تولید را مستقر کرد. این امر نه تنها شرکتها را از پرداخت هزینههای هنگفت اولیه نجات میدهد، بلکه مقداری از انعطافپذیری را فراهم میکند که قبلا در مورد مقیاسبندی زیرساختهای فناوری اطلاعات بر اساس تقاضا دیده نشده بود.
شرکتها به جای داشتن زیرساخت، دسترسی به هر چیزی از برنامهها گرفته تا ذخیرهسازی و منابع محاسباتی را از یک ارائهدهنده خدمات ابری اجاره میکنند. با وجود این مزایا، رایانش ابری چالشهایی را نیز به همراه دارد. اگر به این چالشها رسیدگی نشود، مزایای اصلی در درازمدت از بین میرود.
یکی از چالشهای اصلی، استقرار و مدیریت فعالانه و مؤثر زیرساختهای ابری است. برای رسیدن به این هدف، یک استراتژی قوی، برنامهریزی و ابزار مناسب مورد نیاز است. با افزایش استفاده از محاسبات ابری، زیرساخت به عنوان کد (IaC) نیز توجه و کشش زیادی را به خود جلب کرده است. این تعریف خوبی از IaC است که در اینترنت موجود است:
«IaC فرآیندی برای مدیریت و تهیه مکانیسمهایی برای احراز هویت، برنامهریزی و پیادهسازی سرورها و مراکز داده در شبکه ابری و خصوصی از طریق فایلهای پیکربندی قابل خواندن و قابل فهم توسط ماشین به جای پیکربندی فیزیکی سختافزار است.»
اکثر ارائه دهندگان خدمات ابری مجموعهای از ابزارها و خدمات خود را برای IaC دارند. در این بازار شلوغ، یک رویکرد مشترک مورد نیاز بود که بتوان از آن در همه جا استفاده کرد. اینجا بود که Terraform معرفی شد. ابزاری که اولین بار در سال ۲۰۱۴ توسط شرکتی به نام HashiCorp در دسترس قرار گرفت. Terraform با طیف گستردهای از مزایا و انعطاف پذیری، در حال حاضر پرطرفدارترین ابزار برای مدیریت زیرساخت در فضای ابری در سطح جهانی است.
مقاله پیشنهادی” تفاوت بین سوئیچ LAN و سوئیچ SAN”
Terraform چه مزایایی را نسبت به ابزارهای مدیریت زیرساخت بومی ابری به ارمغان میآورد؟
۱- cloud-agnostic است
یکی از مزایای اصلی Terraform این است که cloud-agnostic است، به این معنی که تقریبا با تمام ارائه دهندگان خدمات ابری از جمله AWS، Azure، GCP، Alibaba و غیره کار میکند. زمانی که مهندسان با Terraform احساس راحتی داشته باشند، میتوانند زیرساختها را بر روی هر پلتفرم ابری مدیریت کنند. این ویژگی، انعطافپذیری را برای پذیرش معماری چند ابری فراهم میکند، که اکنون برای اکثر شرکتها برای به دست آوردن بزرگترین مزیتها از محاسبات ابری مطلوب و قابل قبول است. تصویر زیر از HashiCorp نشان میدهد که چگونه terraform میتواند با چند ابر و سایر ارائه دهندگان منعطف باشد.
۲- مجموعه ویژگیهای غنی، انعطاف پذیری را میسر میکند
Terraform دارای ویژگیهای زیادی است، از جمله استفاده آسان از بلوکها، نظرات، آرگومانها و توابع داخلی. استفاده از متغیرها، محلیها و منابع داده، انعطاف پذیری را برای نوشتن کدهای تمیز، کوچک و قابل استفاده مجدد فراهم میکند. مزیت اصلی Terraform استفاده از ماژولها و قالبها است. یک ماژول Terraform امکان گروه بندی منابع و استفاده مجدد از آنها را برای کاهش پیچیدگی و تکرار کدها فراهم میکند. ماژولهای Terraform از بسیاری جهات شبیه مفاهیم کتابخانهها، بستهها یا ماژولهای موجود در اکثر زبانهای برنامهنویسی هستند و بسیاری از مزایای مشابه را ارائه میکنند. این ماژولها را میتوان در سیستم فایل محلی ذخیره کرد یا با استفاده از منابع عمومی یا راه دور مانند Terraform Registry، سیستمهای کنترل نسخه، URLهای HTTP و غیره بین تیمها به اشتراک گذاشت، که در نهایت باعث صرفه جویی در زمان و هزینه میشود.
۳- قالب بندی و اعتبارسنجی آسان کد
همانطور که قبلا گفته شد، Terraform دارای ویژگیهای زیادی است. همه این ویژگیها نوشتن و مدیریت کد را برای توسعه دهندگان آسانتر میکند. دستور داخلی آنterraform fmt به قالب بندی کد اجازه میدهد تا به طور خودکار تنظیمات موجود در فهرست فعلی را برای خوانایی و سازگاری آسان به روز کند. به طور مشابه، برای اطمینان از اینکه یک پیکربندی از نظر نحوی معتبر و از لحاظ داخلی سازگار است، از دستور terraform validate استفاده میشود. اگر مشکل نحوی با پیکربندی وجود دارد، این دستور میتواند به شناسایی خطاها در مراحل اولیه کمک کند.
۴- اعتبارسنجی خطمشیها با OPA (Open Policy Agent)
تصور کنید چقدر سودمند خواهد بود اگر همراه با اعتبار سنجی نحوی، اعتبارسنجی سیاستهای تجاری قبل از تهیه منابع ابری امکان پذیر باشد. به عنوان مثال یک شرکت میخواهد که تمام منابع محاسباتی آن هنگام ایجاد در محیطهای مختلف دارای القاب یا برچسبهای خاصی باشند و بر اساس آن محیطها، به طور خاص انواع منابع محاسباتی بتوانند در دسترس باشند. اگر درخواست زیرساخت این شرایط را برآورده نمی کند، Terraform نباید منابع درخواستی را ایجاد کند.
دستیابی به موارد فوق در Terraform با استفاده از OPA (Open Policy Agent) امکان پذیر است. OPA یک موتور خط مشی منبع باز است که به کاربر اجازه میدهد تا خط مشی را به عنوان کد با استفاده از یک زبان برنامه نویسی اعلانی (Rego) تنظیم و آن را در کل پشته اعمال کند. این خطمشیها را میتوان در pipelineهای CI/CD در برابر فایلهای JSON که طرح terraform ایجاد میکند، تنفیذ کرد.
اساسا، اجرای سیاستهای تجاری (که تیمهای امنیتی و انطباق از آن استقبال میکنند) با نوشتن آنها به زبان انگلیسی ساده (تقریبا) و به طور خودکار با کمک ابزارهای pipeline مثل CI/CD یا ابزارهای IaC/CM امکانپذیر است، بدون اینکه در دسترس بودن یا عملکرد به خطر بیفتد. تصویر زیر نشان میدهد که چگونه OPA با دادههای JSON برای تأیید خطمشیهای تجاری کار میکند.
۵-تست کردن واحد
تست کردن یک جنبه اصلی هنگام نوشتن هر قطعه کد است. این کار برای بررسی اینکه آیا کد در همه سناریوها همانطور که انتظار میرود کار میکند یا خیر انجام میگیرد. این به ویژه در مورد زیرساختها صادق است، جایی که یک خطای کوچک میتواند کل محیط را در عرض چند ثانیه از بین ببرد. بسیار توصیه میشود که IaC را آزمایش کنید و موارد آزمایشی برای IaC اجباری کنید.
تعدادی ابزار در این فضا موجود است که با Terraform سازگار است، از جمله Terratest که به نظر میرسد در حال حاضر در این گروه پیشرو است. این ابزار نیز با استقبال خوبی از سوی توسعه دهندگان روبرو شده است:
«شما میتوانید Terratest را راهی برای انجام تست سرتاسر، پذیرش یا ادغام در نظر بگیرید، در حالی که اکثر ابزارهای دیگر بر روی واحد یا تست عملکردی متمرکز هستند.»
نوشتن موارد تست با استفاده از Terratest سخت و پیچیده نیست. روال نوشتن تستهای واحد از همان تنظیمات و قراردادهای نوشتن هر آزمون واحد Go پیروی میکند که یادگیری و نوشتن موارد تست را برای توسعه دهندگان آسان میکند.
۶-مدیریت آسان وضعیت منابع
هر ابزار IaC باید وضعیت زیرساخت و پیکربندی مدیریت شده را ذخیره کند تا منابع ایجاد شده توسط پیکربندی را ردیابی کند و آنها را به منابع دنیای واقعی map کند. به طور پیش فرض Terraform اطلاعات مربوط به وضعیت زیرساخت را در یک فایل محلی به نام terraform.tfstate ذخیره میکند. این وضعیت توسط Terraform برای map کردن منابع دنیای واقعی به پیکربندی و پیگیری metadata منابع استفاده میشود تا Terraform بتواند هرگونه تغییر در منابع در یک مقطع زمانی معین را شناسایی کند.
با Terraform مدیریت وضعیت منابع به صورت محلی یا از راه دور آسان است. برای مدیریت کارآمدتر زیرساخت، رویکرد ذخیرهسازی حالت Terraform از راه دور ارجح است. به طوری که چندین تیم میتوانند بدون ایجاد اختلال در محیط با هم کار کنند، زیرا همه به یک پرونده وضعیت ارجاع داده میشوند. بنابراین تغییرات فعلی منابع همیشه برای همه قابل مشاهده خواهد بود.
۷-به راحتی تغییرات زیرساخت را قبل از اعمال، در پیش نمایش ببینید و اعتبارسنجی کنید
توپولوژی زیرساخت بدون اندازهگیری و درک تأثیر تغییرات بالقوه بسیار پیچیده است. برای دستیابی به یک راه حل، برای تیم DevOps ضروری است که دقیقا قبل از اعمال تغییرات پیکربندی بداند که در چه وضعیتی قرار دارد.
۸-رابط خط فرمان Terraform (CLI) با این طرح مطابقت دارد
این قابلیت به توسعه دهندگان کمک میکند تا قبل از اعمال آن تغییرات، تمام تغییرات زیرساخت را تأیید و پیش نمایش کنند. داشتن این قابلیت نه تنها ریسک قابل توجهی را از بین میبرد، بلکه به توسعهدهندگان اجازه میدهد تا به طور مؤثرتری تغییرات را اعتبار سنجی کنند، زیرا شفافیت کامل دارند و درک آسانتری از تأثیر تغییرات پیشنهادی بر محیط دارند. توسعه دهندگان همچنین میتوانند تغییرات ناخواسته را زودتر کشف کنند.
علاوه بر این، برخی از دستورات و ابزارهای موجود برای ایجاد یک نمایش بصری از پیکربندی یا مجموعهای از تغییرات برنامه ریزی شده وجود دارد. دستور terraform graph برای تولید نمودارهای پیکربندی استفاده میشود و ابزاری مانند GraphViz میتواند برای تبدیل این نمودارها به قالبی قابل خواندن برای انسان استفاده شود.
۹-CI/CD آسان
کد Terraform را میتوان به راحتی در هر VCS مانند GitHub ذخیره کرد و به راحتی میتوان با استفاده از هر ابزار CI/CD مانند Jenkins یا هر ابزار Cloud-native CI/CD مانند AWS CodeBuild & CodeDeploy، Azure DevOps و غیره ساخت و مستقر کرد. از ابزارهای CI/CD موجود برای استقرار اسکریپتهای terraform و خودکارسازی کل فرآیند IaC استفاده کنید.
جمعبندی؛ آینده مجازی سازی سرورها
همانطور که در بالا ذکر شد، Terraform یک ابزار قدرتمند و انعطافپذیر است و در مقایسه با ابزارهای Cloud-Native IaC به خوبی با چندین سرویس ابری کار میکند. قابلیتهای گسترده و انعطاف پذیری آن همچنان باعث شگفتی و گسترش پایگاه کاربران آن میشود. Terraform متن باز است و پشتیبانی از آن قوی و بسیار فعال است. Terraform به معنای واقعی یک ابزار مفید در فرایند استفاده از خدمات ابری با چندین ارائه دهنده ابر است.
ترافورم خیلی تو ساختار مجازی سازی کاربردش بیشتره اما هیچ اشاره ای بهش نشده بود تو متن!
با سلام، اتفاقا با این پیش گفتار میخوایم آماده شیم تا توی اون حوزه یه مقاله خوب در اختیارتون بذاریم به زودی.
شما موسسه یا جایی رو که بشه ترافورم رو بصورت کاربردی یاد گرفت سراغ دارید؟
سلام، کاربردهای این تکنولوژی هنوز داخل ایران به اون صورت رواج پیدا نکرده ولی ما داریم سعی میکنیم در آکادمی آلیاسیس دوره جذابی برای این تکنولوژی تدارک ببینیم.