به زبانی ساده cloud-init مجموع های از اسکریپت های پایتون برای اجرای سفارشی سازی هایی روی ماشین های مجازی است.
برخی از قابلیت های cloud-init عبارتند از:
- setting hostname
- ساخت SSH private keys
- افزودن کلیدهای SSH
- افزودن ephemeral mount points
- پیکربندی قسمتهای شبکه ای
رفتار cloud-init و تغییرات و تنظیماتی که اجرا خواهد کرد از طریق user-data قابل پیکربندی است. user-data یکی از انواع metadata در OpenStack است. به طور کلی چهار نوع metadata در OpenStack وجود دارد که عبارتند از:
Meta-Data, User-Data, Vendor-Data, and Network-Data
Meta-data به صورت مقادیر key=value هستند که از طریق CLI یا داشبورد میتوان روی ماشین مجازی تعریف کرد
. Meta-data را میتوان در زمان بوت ماشین مجازی یا حتی پس از بوت، روی ماشین مجازی تعریف کرد.
user-data اسکریپت هایی هستند که میتوانند به صورت مستقیم تایپ شوند یا به صورت فایلی باشند که هنگام راه اندازی ماشین مجازی توسط cloud-ini استفاده خواهد شد. این اسکریپت ها میتوانند به زبان هایی مانند پایتون یا shell باشند یا از فرمتی که شبیه به فایلهای yaml و مختص cloud-config است، استفاده کنند.
user-data از داخل ماشین مجازی با دستور #curl 169.254.169.254/openstack/latest/user_data قابل دسترسی است. میتوان اسکریپت ها را طوری نوشت که خروجی آن در مسیری در داخل ماشین مجازی نیز ذخیره شود. به صورت پیشفرض این اسکریپت ها فقط در اولین بوت ماشین مجازی اجرا میشوند، البته راهکارهایی برای اجرای مجدد اسکریپت ها در زمانهای مختلف از چرخه حیات (lifecycle) ماشین مجازی نیز وجود دارند.
برخی از کاربردهای cloud-init:
- تعریف کاربران و گروهها
- افزودن یک ریپازیتوری yum
- پیکربندی فایل resolv.conf یک ماشین مجازی
- نصب و اجرای chef
- افزودن ریپازیتوریهای apt
- اجرای دستوراتی در بوت ماشین مجازی
- نصب پکیجهای موردنظر
- اجرای upgrade با apt یا yum
اسکریپت های user-data به زبان پایتون در پایگاه داده کد میشوند. میتوان این اسکریپت های کدشده را decode کرد. برای اطلاعات کامل درباره cloud-init میتوان به سایت رسمی آن مراجعه کرد:
http://cloudinit.readthedocs.io/en/latest/index.html
metadata با استفاده از neutron metadata agent یا config drive قابل دسترسی هستند. دسترسی از طریق config drive پیچیدگی های دسترسی از طریق neutron metadata agent را ندارد. با استفاده از آپشن config-drive، metadata به صورت یک درایو مجازی نزدیک ماشین مجازی قرار میگیرد و قابل mount یا unmount است.