PVE Cloud-INIT 模板配置

小陳運維發表於2023-04-06

PVE Cloud-INIT 模板配置

Cloud-init是什麼

Cloud-init是開源的雲初始化程式,能夠對新建立彈性雲伺服器中指定的自定義資訊(主機名、金鑰和使用者資料等)進行初始化配置。透過Cloud-init進行彈性雲伺服器的初始化配置,將對您使用彈性雲伺服器、映象服務和彈性伸縮產生影響。簡單地講,cloud-init是一個Linux虛擬機器的初始化工具,被廣泛應用在AWS和OpenStack等雲平臺中,用於在新建的虛擬機器中進行時間設定、密碼設定、擴充套件分割槽、安裝軟體包等初始化設定。

對映象服務的影響

為了保證使用私有映象新建立的彈性雲伺服器可以自定義配置,您需要在建立私有映象前先安裝Cloud-init/Cloudbase-init。

如果是Windows作業系統,需下載並安裝Cloudbase-init。

如果是Linux作業系統,需下載並安裝Cloud-init。

在映象上安裝Cloud-init/Cloudbase-init後,即可在建立彈性雲伺服器時,按照使用者的需要自動設定彈性雲伺服器的初始屬性。

對彈性雲伺服器的影響

在建立彈性雲伺服器時,如果選擇的映象支援Cloud-init特性,此時,您可以透過系統提供的“使用者資料注入”功能,注入初始化自定義資訊(例如為彈性雲伺服器設定登入密碼),完成彈性雲伺服器的初始化配置。

支援Cloud-init特性後ZQ,彈性雲伺服器的登入方式會產生影響。

對於執行中的的彈性雲伺服器,支援Cloud-init特性後,使用者可以透過查詢、使用後設資料,對正在執行的彈性雲伺服器進行配置和管理。

對彈性伸縮的影響

建立伸縮配置時,您可以使用“使用者資料注入”功能,指定彈性雲伺服器的初始化自定義資訊。如果伸縮組使用了該伸縮配置,則伸縮組新建立的彈性雲伺服器會自動完成初始化配置。

對於已有的伸縮配置,如果其私有映象沒有安裝Cloud-init/Cloudbase-init,則使用該伸縮配置的伸縮組建立的彈性雲伺服器在登入時會受到影響。

官方映象下載

# cloud images下載地址
# centos:
http://cloud.centos.org/centos/
# ubuntu:
http://cloud-images.ubuntu.com/releases/
# debian:
https://cloud.debian.org/images/cloud/OpenStack/
# fedora:
https://alt.fedoraproject.org/cloud/
# rehat7:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/x86_64/product-downloads
# opensuse:
https://software.opensuse.org/distributions/leap#JeOS-ports

下載映象

# 下載Ubuntu官方CloudINIT映象
root@cby:~# wget https://mirrors.ustc.edu.cn/ubuntu-cloud-images/jammy/20230405/jammy-server-cloudimg-amd64.img
--2023-04-06 19:00:50--  https://mirrors.ustc.edu.cn/ubuntu-cloud-images/jammy/20230405/jammy-server-cloudimg-amd64.img
Resolving mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)... 2001:da8:d800:95::110, 202.141.176.110, 202.141.160.110
Connecting to mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)|2001:da8:d800:95::110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 684654592 (653M) [application/octet-stream]
Saving to: ‘jammy-server-cloudimg-amd64.img’

jammy-server-cloudimg-amd64.img                             100%[=========================================================================================================================================>] 652.94M  64.7MB/s    in 9.7s    

2023-04-06 19:01:00 (67.3 MB/s) - ‘jammy-server-cloudimg-amd64.img’ saved [684654592/684654592]


# 下載CentOS官方CloudINIT映象
root@cby:~# wget https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
--2023-04-06 19:01:48--  https://mirrors.ustc.edu.cn/centos-cloud/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
Resolving mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)... 2001:da8:d800:95::110, 202.141.176.110, 202.141.160.110
Connecting to mirrors.ustc.edu.cn (mirrors.ustc.edu.cn)|2001:da8:d800:95::110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 902889472 (861M) [application/octet-stream]
Saving to: ‘CentOS-7-x86_64-GenericCloud.qcow2’

CentOS-7-x86_64-GenericCloud.qcow2                          100%[=========================================================================================================================================>] 861.06M  60.5MB/s    in 15s     

2023-04-06 19:02:03 (59.1 MB/s) - ‘CentOS-7-x86_64-GenericCloud.qcow2’ saved [902889472/902889472]
root@cby:~# 

使用命令配置

VM_ID=101
# 建立虛擬機器
qm create $VM_ID --cores 4 --memory 4096 --name ubuntu --net0 virtio,bridge=vmbr0
# 給虛擬機器匯入映象
qm importdisk $VM_ID jammy-server-cloudimg-amd64.img local-lvm
# 建立磁碟到local-lvm
qm set $VM_ID --sata0 local-lvm:vm-$VM_ID-disk-0
# 建立cloudinit
qm set $VM_ID --sata1 local-lvm:cloudinit
# 設定預設啟動項
qm set $VM_ID --boot c --bootdisk sata0
# 設定vga
qm set $VM_ID --serial0 socket --vga serial0
# 設定root密碼
qm set $VM_ID --ciuser root --cipassword 123123
# 配置靜態網路
#qm set $VM_ID  --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1,ip6=dhcp
# 配置DHCP網路
qm set $VM_ID --ipconfig0 ip=dhcp,ip6=dhcp
# 配置DNS
qm set $VM_ID --nameserver 223.5.5.5
qm set $VM_ID --searchdomain 223.5.5.5
# 轉換為模板
qm template $VM_ID
# 克隆
qm clone 101 103 --name cby

簡化整理命令

# Ubuntu簡化
VM_ID=101
qm create $VM_ID --cores 4 --memory 4096 --name ubuntu --net0 virtio,bridge=vmbr0
qm importdisk $VM_ID jammy-server-cloudimg-amd64.img local-lvm
qm set $VM_ID --sata0 local-lvm:vm-$VM_ID-disk-0 --sata1 local-lvm:cloudinit --boot c --bootdisk sata0 --serial0 socket --vga serial0 --ciuser root --cipassword 123123 --ipconfig0 ip=dhcp,ip6=dhcp --nameserver 8.8.8.8 --searchdomain 8.8.8.8


# CentOS簡化
VM_ID=102
qm create $VM_ID --cores 4 --memory 4096 --name centos --net0 virtio,bridge=vmbr0
qm importdisk $VM_ID CentOS-7-x86_64-GenericCloud.qcow2 local-lvm
qm set $VM_ID --sata0 local-lvm:vm-$VM_ID-disk-0 --sata1 local-lvm:cloudinit --boot c --bootdisk sata0 --serial0 socket --vga serial0 --ciuser root --cipassword 123123 --ipconfig0 ip=dhcp,ip6=dhcp --nameserver 8.8.8.8 --searchdomain 8.8.8.8

配置模板系統

CentOS

# 配置yum源
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' -i.bak /etc/yum.repos.d/CentOS-Base.repo

# 設定時區
timedatectl set-timezone Asia/Shanghai

# 安裝vim
yum install vim bash-completion

# 修改ssh遠端
vim /etc/ssh/sshd_config
# 開啟root登入(如果需要的話;這裡開啟了之後Cloud-Init使用者就可以設定root)
PermitRootLogin yes
# 開啟金鑰登入
PubkeyAuthentication yes
# 金鑰路徑
AuthorizedKeysFile
# 開啟密碼登入(預設只允許金鑰登入)
PasswordAuthentication yes
# 不允許空密碼登入
PermitEmptyPasswords no
# 關閉連線的DNS解析
UseDNS no

Ubuntu

# 設定時區
timedatectl set-timezone Asia/Shanghai

# 設定APT倉庫源
sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

# 更新源和安裝常用軟體
apt update && sudo apt install vim bash-completion -y

# 更新系統
sudo apt upgrade

# 修改SSH配置
vim /etc/ssh/sshd_config
# 開啟root登入(如果需要的話;這裡開啟了之後Cloud-Init使用者就可以設定root)
PermitRootLogin yes
# 開啟金鑰登入
PubkeyAuthentication yes
# 金鑰路徑
AuthorizedKeysFile
# 開啟密碼登入(預設只允許金鑰登入)
PasswordAuthentication yes
# 不允許空密碼登入
PermitEmptyPasswords no
# 關閉連線的DNS解析
UseDNS no

附錄

qm monitor <vmid>         # 連線到虛擬機器控制監視器
qm clone <vmid> <newid> [OPTIONS]  # 克隆虛擬機器
qm start <vmid>               # 啟動例項
qm shutdown <vmid>      # 優雅停止例項 傳送關機命令
qm wait <vmid> [time]   wait until vm is stopped
qm stop <vmid>               # 停止例項 強制停止
qm reset <vmid>              # 重啟例項 相當於stop然後再start
qm suspend <vmid>        # 暫停例項
qm resume <vmid>         # 恢復例項
qm cad <vmid>               #傳送按鍵 ctrl-alt-delete
qm destroy <vmid>        # 銷燬例項(刪除所有已使用/擁有的卷)
qm unlock <vmid>         # 清除遷移/備份鎖
qm status <vmid>          # 顯示例項狀態
qm cdrom <vmid> [<device>] <path>  set cdrom path. <device is ide2 by default>
qm cdrom <vmid> [<device>] eject   eject cdrom
qm unlink <vmid> <volume>  delete unused disk images
qm vncproxy <vmid> <ticket>  open vnc proxy
qm vnc <vmid>           start (X11) vncviewer (experimental)
qm showcmd <vmid>     # 顯示命令列(除錯資訊)
qm list                             # 列出所有虛擬機器
qm startall                       # 啟動所有虛擬機器 當onboot=1時
qm stopall [timeout]       # 停止所有虛擬機器(預設超時為3分鐘)


qm [create|set] <vmid>  # 建立虛擬機器
    --memory  <MBYTES>    memory in MB (64 - 8192)
    --sockets <N>         set number of CPU sockets <N>
    --cores <N>           set cores per socket to <N>
    --ostype NAME         specify OS type
    --onboot [yes|no]     start at boot
    --keyboard XX         set vnc keyboard layout
    --cpuunits <num>      CPU weight for a VM
    --name <text>         set a name for the VM
    --description <text>  set VM description
    --boot [a|c|d|n]      specify boot order
    --bootdisk <disk>     enable booting from <disk>
    --acpi (yes|no)       enable/disable ACPI
    --kvm (yes|no)        enable/disable KVM
    --tdf (yes|no)        enable/disable time drift fix
    --localtime (yes|no)  set the RTC to local time
    --vga (gd5446|vesa)   specify VGA type
    --vlan[0-9u]          MODEL=XX:XX:XX:XX:XX:XX[,MODEL=YY:YY:YY:YY:YY:YY]
    --ide<N>              [volume=]volume,[,media=cdrom|disk]
                          [,cyls=c,heads=h,secs=s[,trans=t]]
                          [,cache=none|writethrough|writeback]
                          [,snapshot=on|off][,cache=on|off][,format=f]
                          [,werror=enospc|ignore|report|stop]
                          [,rerror=ignore|report|stop]
                          [,backup=no|yes]
    --ide<N> <GBYTES>     create new disk
    --ide<N> delete       remove drive - destroy image
    --ide<N> undef        remove drive - keep image
    --cdrom <file>        is an alias for --ide2 <file>,media=cdrom
    --scsi<N>             [volume=]volume,[,media=cdrom|disk]
                          [,cyls=c,heads=h,secs=s[,trans=t]]
                          [,snapshot=on|off][,format=f]
                          [,cache=none|writethrough|writeback]
                          [,werror=enospc|ignore|report|stop]
                          [,backup=no|yes]
    --scsi<N> <GBYTES>    create new disk
    --scsi<N> delete      remove drive - destroy image
    --scsi<N> undef       remove drive - keep image
    --virtio<N>           [volume=]volume,[,media=cdrom|disk]
                          [,cyls=c,heads=h,secs=s[,trans=t]]
                          [,snapshot=on|off][,format=f]
                          [,cache=none|writethrough|writeback]
                          [,werror=enospc|ignore|report|stop]
                          [,rerror=ignore|report|stop]
                          [,backup=no|yes]
    --virtio<N> <GBYTES>  create new disk
    --virtio<N> delete    remove drive - destroy image
    --virtio<N> undef     remove drive - keep image
    




pveperf    # 基準指令碼
pvesr list    # 列出儲存複製作業
ha-manager status   # 檢視HA狀態
pvecm nodes    # 檢視叢集節點
pvecm status    # 檢視叢集狀態
pve-firewall compile  # 檢視防火牆規則
pve-firewall localnet  # 輸出本地網路資訊
pve-firewall restart    # 重啟防火牆
pve-firewall stop       # 停止防火牆
pve-firewall start      # 啟動防火牆



pvesh get /version   # 檢視叢集
pvesh get /cluster/resources  #檢視叢集資源狀況
pvesh get /nodes   # 顯示所有node
pvesh get /nodes/<nodeid>/qemu   # 顯示某節點中的虛擬機器
pvesh get /nodes/<nodeid>/qemu/<vmid>/status/current    # 顯示某虛擬機器狀態
pvesh create /nodes/<nodeid>/qemu/<vmid>/status/start    # 開啟一個虛擬機器 [注意是create哦,不是get了]
pvesh get /nodes/<nodeid>/lxc/<ctid>/snapshot    # 顯示某節點下容器快照
pvesh get /nodes/<nodeid>/disks/zfs    # 顯示某節點的ZFS儲存區
pvesh get /nodes/<nodeid>/disks/list  # 顯示某節點的磁碟列表

關於

https://www.oiox.cn/

https://www.oiox.cn/index.php/start-page.html

CSDN、GitHub、51CTO、知乎、開源中國、思否、部落格園、掘金、簡書、華為雲、阿里雲、騰訊雲、嗶哩嗶哩、今日頭條、新浪微博、個人部落格

全網可搜《小陳運維》

文章主要釋出於微信公眾號

相關文章