راهنمای جامع ایجاد فایل تمپلیت (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_template_version

این بخش نسخه سینتکس Heat را مشخص می‌کند.


قطعه کد بخش description

توضیح کلی درباره هدف و عملکرد این تمپلیت.

قطعه کد بخش parameters

ورودی‌های تمپلیت شامل سیستم‌عامل (Image)، منابع (Flavor)، شبکه خصوصی و کلید SSH در این بخش تنظیم می‌شوند.

هسته اصلی تمپلیت شامل تعریف Security Group، ماشین مجازی، Floating IP و اتصال آن‌ها.

بررسی دقیق‌تر منابع تعریف شده:


Security Group

کنترل دسترسی شبکه‌ای؛ در اینجا اجازه دسترسی به پورت‌های 22 (SSH) و 80 (HTTP) صادر شده است.

تعریف ماشین مجازی - VM

ایجاد سرور با استفاده از پارامترهای تعریف شده و متصل کردن آن به شبکه و سکوریتی گروپ.

تعریف Floating IP

درخواست یک IP عمومی از استخر (Pool) آدرس‌های موجود.

اتصال Floating IP به سرور

متصل کردن آدرس IP عمومی به ماشین مجازی جهت فعال‌سازی دسترسی اینترنتی.

بخش outputs

نمایش خروجی‌های نهایی شامل IP داخلی (Private) و IP عمومی (Floating) پس از اتمام موفقیت‌آمیز عملیات.

فهرست مطالب