Skip to content

antony@notes:~/virtualization$ cat "Create-Ubuntu-Template-on-Proxmox.md"

Create Ubuntu Template on Proxmox

2024-07-10· virtualization

Create Ubuntu Template on Proxmox

Ubuntu Server 24.04

# 1. SSH login Proxmox node
$ ssh root@192.168.61.11

# 2. 下載 Ubuntu Server 24.04 image
$ wget https://cloud-images.ubuntu.com/noble/20240702/noble-server-cloudimg-amd64.img

# 3. Customize the image
$ apt install -y libguestfs-tools
$ virt-customize --install net-tools,sudo -a noble-server-cloudimg-amd64.img

# 4. 建立虛擬主機, 並設定網路
$ vmid="9003"
$ qm create "$vmid" --name us2404 --memory 8192 --net0 virtio,bridge=vmbr0

# 5. 匯入虛擬主機硬碟檔, 設定使用 SCSI 介面連接 虛擬硬碟檔
$ qm importdisk "$vmid" noble-server-cloudimg-amd64.img local-lvm
$ qm set "$vmid" --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-"$vmid"-disk-0

# 6. 加入 Cloud Init 功能
$ qm set "$vmid" --ide2 local-lvm:cloudinit

# 7. 撰寫 cloud-init User data 設定檔
$ mkdir -p /var/lib/vz/snippets/
$ nano /var/lib/vz/snippets/user"$vmid".yml
#cloud-config
hostname: alpine
package_update: true
packages:
  - nano
write_files:
  - path: /etc/resolv.conf
    permissions: "0644"
    owner: root
    content: |
      nameserver 8.8.8.8
users:
  - name: bigred
    no_user_group: true
    lock_passwd: false
    sudo: ALL=(ALL) NOPASSWD:ALL
    plain_text_passwd: 'bigred'
    homedir: /home/bigred
    shell: /bin/bash
ssh_pwauth: True

# 8. 撰寫 cloud-init Network data 設定檔
$ nano /var/lib/vz/snippets/network"$vmid".yml
version: 1
config:
    - type: physical
      name: ens18
      subnets:
      - type: static
        address: '192.168.61.31'
        netmask: '255.255.255.0'
        gateway: '192.168.61.2'

# 9. 設定 VM 套用設定檔
$ qm set "$vmid" --cicustom "user=local:snippets/user"$vmid".yml,network=local:snippets/network"$vmid".yml"

# 10. 改變硬碟大小
$ qm resize "$vmid" scsi0 100G

# 11. 設定開機硬碟
$ qm set "$vmid"--boot c --bootdisk scsi0

# 12. 設定成 Template
# qm template "$vmid"

Ubuntu Server 22.04

# 1. SSH login Proxmox node
$ ssh root@192.168.61.11

# 2. 下載 Ubuntu Server 22.04 image
$ wget https://cloud-images.ubuntu.com/jammy/20240705/jammy-server-cloudimg-amd64.img

# 3. Customize the image
$ apt install -y libguestfs-tools
$ virt-customize --install net-tools,sudo -a jammy-server-cloudimg-amd64.img

# 4. 建立虛擬主機, 並設定網路
$ vmid="9003"
$ qm create "$vmid" --name us2204 --memory 8192 --net0 virtio,bridge=vmbr0

# 5. 匯入虛擬主機硬碟檔, 設定使用 SCSI 介面連接 虛擬硬碟檔
$ qm importdisk "$vmid" jammy-server-cloudimg-amd64.img local-lvm
$ qm set "$vmid" --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-"$vmid"-disk-0

# 6. 加入 Cloud Init 功能
$ qm set "$vmid" --ide2 local-lvm:cloudinit

# 7. 撰寫 cloud-init User data 設定檔
$ mkdir -p /var/lib/vz/snippets/
$ nano /var/lib/vz/snippets/user"$vmid".yml
#cloud-config
hostname: alpine
package_update: true
packages:
  - nano
write_files:
  - path: /etc/resolv.conf
    permissions: "0644"
    owner: root
    content: |
      nameserver 8.8.8.8
users:
  - name: bigred
    no_user_group: true
    lock_passwd: false
    sudo: ALL=(ALL) NOPASSWD:ALL
    plain_text_passwd: 'bigred'
    homedir: /home/bigred
    shell: /bin/bash
ssh_pwauth: True

# 8. 撰寫 cloud-init Network data 設定檔
$ nano /var/lib/vz/snippets/network"$vmid".yml
version: 1
config:
    - type: physical
      name: ens18
      subnets:
      - type: static
        address: '192.168.61.31'
        netmask: '255.255.255.0'
        gateway: '192.168.61.2'

# 9. 設定 VM 套用設定檔
$ qm set "$vmid" --cicustom "user=local:snippets/user"$vmid".yml,network=local:snippets/network"$vmid".yml"

# 10. 改變硬碟大小
$ qm resize "$vmid" scsi0 100G

# 11. 設定開機硬碟
$ qm set "$vmid"--boot c --bootdisk scsi0

# 12. 設定成 Template
# qm template "$vmid"