Skip to content

Deploy VM on KVM host using cloud init images

Creating Metadata files

touch user-data meta-data network-config
vim user-data
#cloud-config
hostname: vm01
fqdn: vm01.test.com
manage_etc_hosts: true

users:
  - name: user
    groups: sudo, admin
    shell: /bin/bash
    sudo: 'ALL=(ALL) NOPASSWD:ALL'
    lock_passwd: false
    passwd: "Hashed Password 'mkpasswd -m sha-512' "
    ssh_authorized_keys:
      - "ssh-rsa"

package_update: true
#package_upgrade: true


packages: 
  - vim
  - curl

Metadata file

vim meta-data
instance-id: 20251103184948

network-config

vim network-config
network:
  version: 2
  ethernets:

    enp1s0:
      dhcp4: true
      nameservers:
        addresses: ["10.22.14.1"]

Downloading Cloud Images

For Ubuntu “Ubuntu Cloud Images - the official Ubuntu images for public clouds, Openstack, KVM and LXD

For Debian “Index of /images/cloud

For CentOS “CentOS Cloud Images

For RockyLinux “Download - Rocky Linux

For Alma Linux “Cloud Images | AlmaLinux Wiki

Creating VM

virt-install \
 --name vm01 \
 --memory 2048 \
 --vcpu 2 \
 --noreboot \
 --os-variant detect=on,name=ubuntu22.04 \
 --network network=default \
 --disk size=20,backing_store=$(pwd)/image-name, \
 --cloud-init user-data=$(pwd)/user-data,meta-data=$(pwd)/meta-data,network-config=$(pwd)/network-config

Find OS variant

osinfo-query os