قالب Proxmox با Cloud Image و Cloud Init
استفاده از تصاویر Cloud و Cloud init با Proxmox سریعترین و کارآمدترین راه برای استقرار سرورها در حال حاضر است. تصاویر Cloud دارای گواهینامه ابر کوچکی هستند که Cloud init از قبل نصب شده و آماده پذیرش پیکربندی هستند.
Cloud images و Cloud init نیز با Proxmox کار می کنند و اگر این را با Terraform ترکیب کنید، یک مدل استقرار کاملاً خودکار خواهید داشت.
راهنما
دانلود تصویر
ابتدا باید یک تصویر ابری اوبونتو را انتخاب کنید
به جای دانلود، URL را کپی کنید.
سپس SSH را به سرور Proxmox خود وارد کنید و wget را با آدرس اینترنتی که به تازگی کپی کرده اید، مشابه زیر اجرا کنید:
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
با این کار تصویر روی سرور proxmox دانلود می شود و آماده استفاده است.
بسته ها را نصب کنید
را qemu-guest-agent
روی تصاویر ابری نصب نشده است، بنابراین ما به راهی برای تزریق آن به فایل تصویری نیاز داریم. این را می توان با یک ابزار عالی به نام انجام داد virt-customize
این با بسته نصب شده است libguestfs-tools
. libguestfs مجموعه ای از ابزارها برای دسترسی و اصلاح تصاویر دیسک ماشین مجازی (VM) است.
نصب:
sudo apt update -y && sudo apt install libguestfs-tools -y
نصب qemu-guest-agent
در تصویر دانلود شده:
sudo virt-customize -a jammy-server-cloudimg-amd64.img --install qemu-guest-agent --run-command 'systemctl enable qemu-guest-agent.service'
در این مرحله می توانید بسته های دیگر را نیز نصب کنید.
افزودن کاربران به تصویر (اختیاری)
همچنین می توان کاربر و کلیدهای SSH را با آن اضافه کرد virt-customize
. این برای اتوماسیونی مانند terraform مفید است.
sudo virt-customize -a jammy-server-cloudimg-amd64.img --run-command 'useradd simone'
sudo virt-customize -a jammy-server-cloudimg-amd64.img --run-command 'mkdir -p /home/simone/.ssh'
sudo virt-customize -a jammy-server-cloudimg-amd64.img --ssh-inject simone:file:id_ed25519.pub
sudo virt-customize -a jammy-server-cloudimg-amd64.img --run-command 'chown -R simone:simone /home/simone'
- کاربر را به تصویر اضافه می کند
- دایرکتوری کلید SSH را می سازد
- کلید SSH را تزریق می کند.
simone
کاربری است که کلید روی آن اعمال می شود،file:id_ed25519.pub
فایل روی میزبان محلی است که کلید SSH در آن قرار دارد - اطمینان حاصل می کند که کاربر simone صاحب پوشه خانه است
یک ماشین مجازی از تصویر بسازید
اکنون باید یک ماشین مجازی جدید ایجاد کنیم:
qm create 9000 --memory 2048 --core 2 --name jammy-template --net0 virtio,bridge=vmbr0
دیسک دانلود شده اوبونتو را به فضای ذخیره سازی صحیح وارد کنید:
qm importdisk 9000 jammy-server-cloudimg-amd64.img local-lvm
دیسک جدید را به عنوان درایو SCSI روی کنترلر SCSI وصل کنید:
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0
درایو init ابری را اضافه کنید:
qm set 9000 --ide2 local-lvm:cloudinit
درایو ممکن init را قابل بوت کنید و بایوس را محدود کنید تا فقط از دیسک بوت شود:
qm set 9000 --boot c --bootdisk scsi0
اضافه کردن کنسول سریال:
qm set 9000 --serial0 socket --vga serial0
فعال کردن نماینده مهمان:
qm set 9000 --agent enabled=1
VM را روشن نکنید
{: .prompt-warning }
VM را به قالب تبدیل کنید
اکنون، یک الگو از تصویری که ایجاد کرده اید ایجاد کنید:
qm template 9000
الگو را در VM کلون کنید
اکنون یک الگوی کاملاً کارآمد دارید که میتوانید هر چقدر که بخواهید کلون کنید. اما تنظیم برخی از تنظیمات منطقی است.
ابتدا ماشین مجازی را شبیه سازی کنید (در اینجا ما در حال شبیه سازی الگو با شناسه 9000 به ماشین مجازی جدید با شناسه 999 هستیم):
sudo qm clone 9000 999 --name test-cloud-init
سپس، کلیدهای SSH (اگر قبلاً کلید خود را اضافه نکردهاید) و آدرس IP را تنظیم کنید:
sudo qm set 999 --sshkey ~/.ssh/id_rsa.pub
sudo qm set 999 --ipconfig0 ip=10.10.1.20/24,gw=10.10.1.1
اکنون آماده راه اندازی است!
sudo qm start 999
باید بتوانید بدون هیچ مشکلی وارد شوید (پس از اعتماد به اثر انگشت SSH). توجه داشته باشید که نام کاربری است ubuntu
، برای کلید اینجا تنظیم شده است. اگر قبلاً کاربر خود را اضافه کرده اید، می توانید از آن استفاده کنید
ssh ubuntu@10.10.1.1
پس از رضایت از الگو، می توانید VM را متوقف کرده و منابع را پاکسازی کنید:
sudo qm stop 999 && sudo qm destroy 999
rm jammy-server-cloudimg-amd64.img
منابع
https://registry.terraform.io/modules/sdhibit/cloud-init-vm/proxmox/latest/examples/ubuntu_single_vm
بسته شدن
امیدواریم این اطلاعات برای شما مفید بوده باشد، اگر سوالی در مورد این مقاله دارید و نظرات خود را با Discord من در میان بگذارید.