原文地址:https://www.inlighting.org/archives/make-proxmox-centos-cloud-init-template
因?yàn)樽约菏褂?Proxmox 進(jìn)行開發(fā),需要頻繁的創(chuàng)建刪除虛擬機(jī),所以制作 cloud-init 模板來方便虛擬機(jī)的創(chuàng)建一喘。
這里我沒有自己在原系統(tǒng)上面安裝 cloud-init 進(jìn)行操作摊册,而是直接使用了官方提供的 cloud image漱竖。下面的教程我以 Centos 為例随静,Proxmox 為全新安裝的 v6.1-7
版本蹈垢。
更換源-可忽略
從官方下載的 Promox 的 iso 文件不是最新版的慷吊,還可以通過 apt 命令進(jìn)行升級(jí),但是因?yàn)槟J(rèn)的源在國外曹抬,比較慢溉瓶,這里換成了國內(nèi)源。
修改 proxmox 源
我這里直接把 /etc/apt/sources.list.d/pve-enterprise.list
修改為如下內(nèi)容:
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve stretch pve-no-subscription
修改 debian 源
修改 /etc/apt/sources.list
為如下內(nèi)容:
deb http://mirrors.aliyun.com/debian buster main contrib
deb http://mirrors.aliyun.com/debian buster-updates main contrib
# security updates
deb http://mirrors.aliyun.com/debian-security buster/updates main contrib
系統(tǒng)默認(rèn)只有 vi谤民,我用 vi 的時(shí)候存在鍵盤標(biāo)準(zhǔn)不符堰酿,打字有問題。我就先用
apt update
和apt install vim
安裝了一個(gè) vim 編輯器张足。
執(zhí)行更新
apt update
apt update&&apt dist-upgrade #如需升級(jí)pve触创,則執(zhí)行該命令
或者你在 web 界面更新也可以。
掛載第二塊硬盤-可忽略
使用 fdisk 工具分區(qū)兢榨,我的第二塊硬盤路徑為 /dev/sdb
嗅榕。
sudo fdisk /dev/sdb
p # 輸入p查看信息
g # 新建gpt分區(qū)
n # 新建分區(qū)表,然后一直回車(默認(rèn)值)即可
w # 保存并退出
格式化新的分區(qū)表
sudo mkfs -t ext4 /dev/sdb1
掛載分區(qū)表
mkdir /mnt/sdb # 創(chuàng)建一個(gè)目錄用于掛載
mount /dev/sdb1 /mnt/sdb # 將/dev/sdb1掛載至/mnt/sdb
添加自動(dòng)掛載配置吵聪,防止重啟失效
sudo vi /etc/fstab
# 添加一行
/dev/sdb1 /mnt/sdb ext4 defaults 0 0
之后在 Proxmox web界面添加存儲(chǔ)凌那,選擇 Datacenter -> Storage -> Add -> Dictionary ,輸入相關(guān)信息即可完成添加吟逝。
Cloud image 下載
這里我是以 Centos 為例帽蝶,但是實(shí)際上 Ubuntu 這類系統(tǒng)也提供了 Cloud image。
首先去 Centos 官方網(wǎng)站下載它的 cloud image块攒,網(wǎng)址為:https://cloud.centos.org/
我們下載名稱附帶 GenericCloud
的模板就行了励稳,后綴為 qcow2
,因?yàn)?Proxmox 的模板和 OpenStack 是通用的囱井。例如這里我下載 Centos 8 的 Cloud image驹尼,它的名稱為 CentOS-8-GenericCloud-8.1.1911-20200113.3.x86_64.qcow2 。
Cloud-init 模板制作
首先我們將下載好的 qcow2 文件上傳到 Proxmox 中庞呕,這里我就直接上傳到了 ~/images
目錄下新翎。
下面推薦使用命令行的方式操作程帕,使用 Proxmox 的 web 面板操作會(huì)有點(diǎn)問題。
這里的 VM_ID 設(shè)置為 9000 地啰,大點(diǎn)愁拭,不和創(chuàng)建機(jī)器時(shí)默認(rèn)的 VM_ID 沖突。
創(chuàng)建虛擬機(jī)
qm create 9000 --memory 2048 --name centos-8-template --net0 virtio,bridge=vmbr0
導(dǎo)入下載的鏡像到 local-lvm 存儲(chǔ)空間
qm importdisk 9000 images/CentOS-8-GenericCloud-8.1.1911-20200113.3.x86_64.qcow2 local-lvm
將導(dǎo)入的磁盤以 scsi 方式掛載到虛擬機(jī)上面
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0
添加 Cloud-Init CDROM 驅(qū)動(dòng)
英文注釋僅供參考亏吝,直接抄命令即可岭埠。
# The next step is to configure a CDROM drive which will be used to pass the Cloud-Init data to the VM.
qm set 9000 --ide2 local-lvm:cloudinit
# To be able to boot directly from the Cloud-Init image, set the bootdisk parameter to scsi0, and restrict BIOS to boot from disk only. This will speed up booting, because VM BIOS skips the testing for a bootable CDROM.
qm set 9000 --boot c --bootdisk scsi0
# Also configure a serial console and use it as a display. Many Cloud-Init images rely on this, as it is an requirement for OpenStack images.
qm set 9000 --serial0 socket --vga serial0
制作模板
制作成模板可以進(jìn)行 linked clone,這樣比 full clone 更快蔚鸥,當(dāng)然推薦在制作模板前 clone 測(cè)試下惜论,不然 template 后就不能修改了。
qm template 9000
正常使用
最后 clone 模板株茶,修改下虛擬機(jī)配置和 cloud-init 的參數(shù)就可以開機(jī)了来涨。