ظرائف استفاده از cloud-init
معمولا برای راهاندازی سریع یک ماشین مجازی از دیسکهای آماده شده برای
زیرساخت ابری یا به اصطلاح cloud-ready images استفاده میکنم. مثلا اگر
قرار باشه یه ماشینمجازی ubuntu نسخه ۲۲.۰۴ را برای کاری استفاده کنم، از
اینجا نسخه سیستم عامل را انتخاب میکنم و بعد فایل با پسوند
disk-kvm.img
را دانلود میکنم.
برای راهاندازی ماشین مجازی از طریق cloud-init
باید از طریق یک منبعی
برخی از پارامترها برای تنظیمات اولیه ماشین مجازی مشخص شود، مثل پسورد
یا شناسه. نکته مهم اینجاست که مستندات آخرین نسخه cloud-init
معمولا
روش ساده و سریع برای تست این موضوع مشخص کرده، مثلا در این
قسمت
از روش IMDS
استفاده کردند.
اما نکته اینجاست که نسخه cloud-init
نصب شده به صورت پیشفرض روی فایل
دانلود شده لزوما آخرین نسخه نیست و احتمالا از روش ذکر شده در آخرین
نسخه مستندات هم پشتیبانی نمیکنه. برای همین باید اول نسخه cloud-init
نصب شده را پیدا کنیم و بعد از روش متناسب با همون نسخه استفاده کنیم،
مثلا از روش seed.iso
استفاده کنیم که در
اینجا
بهش اشاره شده.
خلاصه روش به این صورت هست که شما یک فایل با اسم user-data
ایجاد میکنید با محتوای زیر:
#cloud-config
password: passw0rd
ssh_authorized_keys:
- ssh-ed25519 .... ali@dev
chpasswd: { expire: False }
سپس با دستور زیر فایل seed.iso
را ایجاد میکنید:
sudo apt update
sudo apt install -y cloud-image-utils
cloud-localds seed.img user-data
و در نهایت ماشین مجازی را به این صورت راه میاندازیم:
qemu-system-amd64 -enable-kvm -m 1G -smp 2 \
-vga std -nic user \
-drive file=ubuntu.img,if=virtio,format=qcow2 \
-drive file=seed.img,if=virtio,format=raw
نکته دیگر اینکه در صورتی که از نسخه debian-genericcloud
استفاده میکنید به دلیل عدم وجود درایورهای دستگاههای فیزیکی بر روی این نسخه حتما باید از نسخههایی مانند virtio
برای دستگاهه ا استفاده کنید.
qemu-system-amd64 -enable-kvm -m 1G -smp 2 \
-vga std -nic user,model=virtio \
-drive file=debian-genericcloud.img,if=virtio,format=qcow2 \
-drive file=seed.img,if=virtio,format=raw