User Tools

Site Tools


it-artikel:linux:proxmox-8-how-to-use-cli-only-to-create-and-spin-up-new-linux-vms-qemu

Proxmox 8 How to use CLI only to create and spin up new Linux VMs (qemu)

:!: UNDER CONSTRUCTION: Util now this page is just some sort of a collection of notes. — Axel Werner 2024-07-20 08:16

Important paths and files:

  • Boot ISOs can be found in Proxmox storage named: zfsjbod ( physical: /zpool-jbod/proxmox/template/iso/ )
    • Valid ISO files:
      • zfsjbod:iso/debian-12.0.0-amd64-DVD-1.iso
      • zfsjbod:iso/debian-12.0.0-amd64-netinst.iso
      • zfsjbod:iso/rescuezilla-2.4.2-64bit.jammy.iso
      • zfsjbod:iso/SLE-15-SP5-Full-x86_64-GM-Media1.iso
  • fixme fixme
  • fixme fixme
  • fixme fixme

CLI navigation:

  1. List available VMs (NOT lxc containers!) and status:
    qm list
  2. Destroy/Remove/Delete existing VM:
    qm destroy vmId
  3. List all available Proxmox storages:
    pvesm status
  4. List all content of a specific PM storage:
    pvesm list storageId
  5. Show detailed configuration settings for a specific VM ID 666:
    qm config 666
  6. Set/Change the RAM amount for VM ID 666:
    qm set 666 --memory 1024
  7. Sets/Overwrites all TAGS of a VM. WARNING: Will replace any existing tags! :
    qm set 666 --tags dmz,testing,db
    qm set 666 --tags '' # removes all tags
  8. Set nameservers using Cloud-Init feature. (Cloud Init must be enabled for this VM to work!) :
    qm set 666 --nameserver 8.8.8.8,1.1.1.1
  9. Stopping/Starting/Restarting a VM:
    qm shutdown 666 # gracefull shutdown (via guest tools)
    qm shutdown 666 --timeout 60 # with timeout for a hard stop
    qm stop 666 # hard stop/pull plug/crash
    qm start 666
    
    qm reboot 666 # gracefully reboot using guest tools
    qm reboot 666 --timeout 60 # same but with HARD STOP after timeout
    
  10. List all available snapshots of a VM:
    qm listsnapshot 666
  11. Delete a named snapshot of a VM:
    qm delsnapshot 666 snapshotName
  12. Delete ALL SNAPSHOTS of this VM:
    vmid=666
    qm listsnapshot "$vmid"             |\
       grep -v "You are here"           |\
       awk '{print $2}'                 |\
       xargs -n1 qm delsnapshot "$vmid"
    
  13. Create a new 'named' UNSAFE ONLINE snapshot (no RAM/unsafe crashed state):
    qm snapshot 666 snapshotName 
  14. Create a new 'named' OFFLINE snapshot (no RAM/safe state):
    qm shutdown 666 
    qm snapshot 666 snapshotName 
    qm start 666 
  15. Create a new 'named' ONLINE snapshot (with RAM+state):
    qm snapshot 666 snapshotName --vmstate 
  16. Switch/Revert/Rollback to a specific named snapshot of this VM:
    qm rollback 666 snapshotName
    qm rollback 666 snapshotName --start # with autostart
  17. Set/Reset the ROOT (user) password via installed guest addons:
    qm guest passwd 666 root --password moreThan5Chars
  18. FIXME:
    FIXME
  19. FIXME:
    FIXME
  20. FIXME:
    FIXME
  21. FIXME:
    FIXME
  22. FIXME:
    FIXME
  23. Clone (quick) existing VM:
    qm clone existingVmId newVmId \
       --name 'newVms.fqdn.lan'       \
       --storage targetStorageId  \  # optional

Create basic 1 Disk Linux UEFI VM with Cloud-Init capabilities:

  1. Create UEFI/Cloud-Init VM using Debian netboot ISO:
    # define new VM id and your 
    # PVE storage volume
    # of choice.
    #
    vmId=666
    pveStorage=local
    
    qm stop "$vmId"
    qm destroy "$vmId"
    
    qm create "$vmId"                                              \
       --name newHostname.lan                                      \
       --description "once uppon a time..."                        \
       --cores 4                                                   \
       --memory 2048                                               \
       --cdrom zfsjbod:iso/debian-12.0.0-amd64-netinst.iso         \
       --virtio0 "$pveStorage":50,backup=1,discard=on,format=qcow2 \
       --ciuser root                                               \
       --cipassword 12345                                          \
       --ipconfig0 ip=dhcp,ip6=auto                                \
       --net0 virtio,bridge=vmbr0                                  \
       --sshkeys ssh-public-key-file.pub                           \
       --ostype l26                                                \
       --agent 1                                                   \
       --citype nocloud                                            \
       --ciupgrade 1                                               \
       --serial0 socket                                            \
       --storage local                                             \
       --tags someTag                                              \
       --scsihw virtio-scsi-single                                 \
       --bios ovmf                                                 \
       --efidisk0 "$pveStorage":1                                  \
       --ide0 "$pveStorage":cloudinit,media=cdrom                  \
       #
    
    qm status 666
    
  2. SSH into new VM and install some vital packages needed for cloud-init. Also we make sure that we can SSH login as root in the future:
    ssh user@newHostname.lan
    su - # no sudo just yet
    # enter 'user' password 
    apt update                 \
      && apt install -y        \
             cloud-init        \
             qemu-guest-agent 
    echo "PermitRootLogin yes" >>/etc/ssh/sshd_config
    reboot
    
  3. FIXME:
    FIXME
  4. FIXME:
    FIXME
  5. FIXME:
    FIXME
  6. FIXME:
    FIXME
  7. FIXME:
    FIXME
it-artikel/linux/proxmox-8-how-to-use-cli-only-to-create-and-spin-up-new-linux-vms-qemu.txt · Last modified: 2024-07-20 19:24 by axel.werner.1973@gmail.com