به زبانی ساده 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
- Network-Data
Meta-data به صورت مقادیر key=value هستند که از طریق CLI یا داشبورد می توان روی ماشین مجازی تعریف کرد. Meta-data را می توان در زمان بوت ماشین مجازی یا حتی پس از بوت، روی ماشین مجازی تعریف کرد. User-data اسکریپت هایی هستند که می توانند به صورت مستقیم تایپ شوند یا به صورت فایلی باشند که هنگام راه اندازی ماشین مجازی یا
سرور ابری توسط cloud-ini استفاده خواهد شد. این اسکریپت ها می توانند به زبان هایی مانند پایتون یا shell باشند یا از فرمتی که شبیه به فایل های yaml و مختص cloud-config است، استفاده کنند.
user-data از داخل ماشین مجازی با دستور #curl ۱۶۹,۲۵۴.۱۶۹.۲۵۴/openstack/latest/user_data قابل دسترسی است. می توان اسکریپت ها را طوری نوشت که خروجی آن در مسیری در داخل ماشین مجازی نیز ذخیره شود. به صورت پیش فرض این اسکریپت ها فقط در اولین بوت ماشین مجازی اجرا می شوند، البته راه کارهایی برای اجرای مجدد اسکریپت ها در زمان های مختلف از چرخه حیات (lifecycle) ماشین مجازی نیز وجود دارند.
برخی از کاربردهای cloud-init
- تعریف کاربران و گروه ها
- افزودن یک ریپازیتوری yum
- پیکربندی فایل resolv.conf یک ماشین مجازی
- نصب و اجرای chef
- افزودن ریپازیتوری های apt
- اجرای دستوراتی در بوت ماشین مجازی
- نصب پکیج های مورد نظر
- اجرای upgrade با apt یا yum
اسکریپت های user-data به زبان پایتون در پایگاه داده کد می شوند. می توان این اسکریپت های کد شده را decode کرد. برای اطلاعات کامل درباره cloud-init می توان به
سایت رسمی آن مراجعه کرد. metadata با استفاده از neutron metadata agent یا config drive قابل دسترسی هستند. دسترسی از طریق config drive پیچیدگی های دسترسی از طریق neutron metadata agent را ندارد. با استفاده از آپشن config-drive، metadata به صورت یک درایو مجازی نزدیک ماشین مجازی قرار میگیرد و قابل mount یا unmount است