راهنمای جامع ایجاد فایل تمپلیت (Heat Orchestration Template)
فایلهای تمپلیت در فرمت YAML نوشته میشوند و به شما امکان میدهند زیرساخت ابری خود را به صورت کد (Infrastructure as Code) تعریف و مدیریت کنید. برای جلوگیری از خطا و افزایش خوانایی، رعایت استانداردهای زیر در نگارش تمپلیت ضروری است.
۱.قواعد نگارشی و سینتکس YAML در Heat
برای آنکه تمپلیت شما توسط سرویس Heat به درستی تفسیر شود، نکات زیر را رعایت کنید:
- تورفتگی (Indentation): اهمیت بالایی دارد و معمولاً با فاصله (Space) انجام میشود؛ استفاده از Tab توصیه نمیشود. هر سطح از ساختار باید تورفتگی یکنواخت داشته باشد.
- ساختار کلید–مقدار: به صورت key: value نوشته میشود و درج یک فاصله (Space) بعد از : الزامی است.
- لیستها: با علامت - تعریف میشوند و هر آیتم لیست در یک خط جداگانه قرار میگیرد.
- متنهای چندخطی: برای مقادیری مانند description یا user_data میتوان از کاراکترهای | یا > استفاده کرد.
- مقادیر پویا: با توابعی مانند get_param و get_resource مشخص میشوند که داخل { } قرار میگیرند.
- نامگذاری: نام منابع باید منحصربهفرد، انگلیسی و خوانا باشد (ترجیحاً حروف کوچک و استفاده از _).
- حساسیت به حروف: نام کلیدها و نوع Resourceها باید دقیقاً مطابق مستندات Heat نوشته شوند.
- نسخه فایل: هر تمپلیت باید با heat_template_version شروع شود.
۲. بخشهای اصلی فایل تمپلیت Heat
یک فایل تمپلیت استاندارد از ۵ بخش کلیدی تشکیل شده است که ترتیب و نام آنها اهمیت حیاتی دارد:
| heat_template_version | این بخش نسخه سینتکس Heat را مشخص میکند و همیشه در ابتدای فایل قرار میگیرد. تعیین نسخه باعث میشود سیستم بداند تمپلیت با چه قواعدی تفسیر شود. |
| description | در این بخش توضیح کوتاهی درباره هدف و کاربرد تمپلیت ارائه میشود. تکمیل این بخش اختیاری است، اما باعث میشود هدف تمپلیت بهروشنی مشخص شود. |
| parameters | این بخش برای تعریف مقادیر ورودی تمپلیت استفاده میشود. پارامترها امکان سفارشیسازی تمپلیت را فراهم میکنند، بهطوری که بدون نیاز به تغییر در بدنه فایل، بتوان مقادیری مانند سیستمعامل، منابع سرور، شبکه یا کلید دسترسی را تغییر داد. استفاده از پارامترها قابلیت استفاده مجدد تمپلیت را افزایش میدهد و مقادیر default، پیشفرضهایی را برای استفاده سریع ارائه میکنند. |
| resources | این بخش مهمترین قسمت تمپلیت است و تمامی منابع در این بخش تعریف میشوند. هر منبع شامل یک نام یکتا، نوع منبع (Resource Type) و تنظیمات مربوط به آن است. ترتیب تعریف منابع اهمیت منطقی دارد، اما Heat وابستگیها را بر اساس ارجاعات (get_resource) مدیریت میکند. |
| outputs | این بخش مقادیری مانند IP خصوصی یا Floating IP سرور را نمایش میدهد و امکان دسترسی و مدیریت سادهتر منابع را فراهم میکند. |
۳. توابع پرکاربرد در تمپلیتنویسی
در فایل تمپلیت از توابع زیر برای ایجاد ارتباط بین بخشها استفاده میشود:
- get_param: دریافت مقدار از پارامترهای ورودی.
- get_resource: ارجاع به منبع دیگری که در همین تمپلیت تعریف شده است.
- get_attr: دسترسی به ویژگیهای خاص یک منبع (مثل آدرس IP یک کارت شبکه).
۴. تحلیل نمونه عملی یک تمپلیت Heat
در این بخش، یک نمونه تمپلیت کامل را لایه به لایه بررسی میکنیم:
این بخش نسخه سینتکس Heat را مشخص میکند.
توضیح کلی درباره هدف و عملکرد این تمپلیت.
ورودیهای تمپلیت شامل سیستمعامل (Image)، منابع (Flavor)، شبکه خصوصی و کلید SSH در این بخش تنظیم میشوند.
هسته اصلی تمپلیت شامل تعریف Security Group، ماشین مجازی، Floating IP و اتصال آنها.
بررسی دقیقتر منابع تعریف شده:
کنترل دسترسی شبکهای؛ در اینجا اجازه دسترسی به پورتهای 22 (SSH) و 80 (HTTP) صادر شده است.
ایجاد سرور با استفاده از پارامترهای تعریف شده و متصل کردن آن به شبکه و سکوریتی گروپ.
درخواست یک IP عمومی از استخر (Pool) آدرسهای موجود.
متصل کردن آدرس IP عمومی به ماشین مجازی جهت فعالسازی دسترسی اینترنتی.
نمایش خروجیهای نهایی شامل IP داخلی (Private) و IP عمومی (Floating) پس از اتمام موفقیتآمیز عملیات.