iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
1
DevOps

DevOps with Proxmox系列 第 6

Day 06 - cloud-init images

  • 分享至 

  • xImage
  •  

在使用 Proxmox VE 時,我們一定能體會到,開 CT 比開 VM 還快多了這件事。
開 CT 的話只要用 Proxmox VE 包好的 Template,滑鼠點個幾下,機器就開好了,連進去馬上就能開始裝軟體跟設定東西。開 VM 的話就沒這樣的好處,雖然滑鼠點個幾下能做完很多事,但 VM 開機後還是得打開 console 自己裝系統,系統裝好後才能用其他方法連進系統開始安裝或設定套件

如果有更簡單的方式能裝 VM 就好了。

有, cloud-init images

cloud-init 是個業界標準、支援多個 Linux 發行版的環境初始化套件,這可以幫助你快速建立你的環境,減少人為操作的時間,在各大公有雲上都能看到 cloud-init 的影子,而 Proxmox VE 也支援了 cloud-init,讓我們可以不用每次都要手動安裝 VM,可以利用 clone 的方式快速建立 VM

要使用 cloud-init 以前,我們要先取得 cloud image

Cloud image 是個專門給雲端環境用的系統映像檔,裡面會包含一個完整的 Linux 發行版,但這個 image 會在開機時自動尋找 cloud-init 的相關資訊,並利用這些資訊來對這個系統進行初始化,而初始化完成後,使用者就可以進去操作這個系統了

而我們需要手動在 Proxmox VE 裡建立 VM,並讓這個 VM 使用 cloud image,接下來再在這個 VM 上加入 cloud-init 的資訊,讓 VM 啟動時能有初始化的資訊,這樣我們就不用每次都要手動安裝系統了,省下維護時間

我們接下來都需要在 Host 的 shell 裡操作 Proxmox VE,別擔心,不會很可怕的,我保證。

首先,我們要先取得 cloud image,這裡以 Ubuntu 20.04 為例,在 Host 輸入這行指令

wget http://free.nchc.org.tw/ubuntu-cloud-images/releases/20.04/release/ubuntu-20.04-server-cloudimg-amd64.img

下載完成後是建立 VM

qm create 9000 --memory 1024 --net0 virtio,bridge=vmbr0

這行指令會建立一個 VM, VM ID 是 9000,這個 VM 的記憶體是 1024MB,然後有一個網卡,使用的 bridge 是 vmbr0

接下來要把剛下載的 cloud image 匯入進剛建立的 VM

qm importdisk 9000 ubuntu-20.04-server-cloudimg-amd64.img local-lvm

這行指令會把剛我們下載的 cloud image 匯入進 VM 9000,然後這個 image 會存在 local-lvm

匯入完成後,要把剛匯入的 image 實際接上 VM

qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0

再來就是讓這個 VM 能使用與在這個 VM 上能設定 cloud-init

qm set 9000 --ide0 local-lvm:cloudinit

接下來是設定 VM 的開機設定

qm set 9000 --boot c --bootdisk scsi0

最後,由於 cloud image 比較特殊,我們在操作 console 時必須使用 serial,所以我們要在這裡設定

qm set 9000 --serial0 socket --vga serial0

這樣設定完成後,你就有個能用 cloud-init 的 VM 了,但這樣只是建立好一個 VM 而已
為了讓未來不用都這樣設定 VM,所以我們把我們剛建立的 VM 轉換成 template,這樣未來要開新的 VM 的時候,我們只要利用這個 template 即可快速建立 VM

qm template 9000

如果一切都順利的話,你應該會在 Proxmox VE 的界面裡看到你剛建立的 VM 9000,不過點開後,會發現這個 VM 長的不太一樣

proxmox_ve_template_9000_summary

那是因為這個 VM 已經被轉換成 Template 了,我們無法直接使用這個 VM,我們必須 clone 這個 VM 才能使用它

右上角有個 More,點開裡面有 Clone 的選項,點開會看到這樣的畫面

proxmox_ve_template_9000_clone

我們可以透過 Clone 的方式快速建立 VM,在這裡填上 VM 的名稱,好了以後壓下 Clone

建立完成後可以看到我們新的 VM,不過這 VM 看起來和我們先前建立過的 VM 好像沒什麼不一樣,對吧?

真正不一樣的地方在 Cloud-Init 的選單內,點開會看到這樣的畫面

proxmox_ve_vm_100_cloud-init

我們可以在裡面設定

  • User
  • Password
  • DNS domain
  • DNS server
  • SSH public key
  • VM 裡的網卡的設定

我們在這裡至少需要設定

  • User
  • Password
  • IP Config (net0)

三個設定, User 和 Password 就填進你的使用者名稱與密碼, IP Config 裡則把 IPv4 設定成 DHCP 即可

設定完以後,上面有個 Regenerate Image 的按鈕,要壓下去,才能把你剛設定的資料寫進 cloud-init 內,這樣開機讀取時才會讀到你的資料

好了就打開 VM 吧! 你應該能看到開機畫面,開機完成後,就能用剛設定的使用者帳密登入系統了

如何? 這個速度是不是比自己手裝 VM 還快很多?

Proxmox VE 的部分大概就先介紹到這裡,接下來要介紹 Terraform


上一篇
Day 05 - 備份 & 高可用性簡介
下一篇
Day 07 - Terraform 簡介
系列文
DevOps with Proxmox30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言