kcli-vm-operations | Skill Performance & Reviews | TopRankSkills

TopRank Skills

Home / Skills / tools / kcli-vm-operations

kcli-vm-operations

maintained by karmab

star 616 account_tree 165 verified_user MIT License
bolt View GitHub

name: kcli-vm-operations description: Guides VM lifecycle operations with kcli. Use when creating, managing, or troubleshooting virtual machines across providers.

kcli VM Operations

VM Lifecycle Commands

Create VM

# From image
kcli create vm -i fedora40 myvm

# With parameters
kcli create vm -i centos9stream -P memory=4096 -P numcpus=4 -P disks=[20,50] myvm

# From profile
kcli create vm -p myprofile myvm

List VMs

kcli list vm                    # All VMs
kcli list vm -o yaml            # YAML output
kcli list vm -o json            # JSON output

VM Info

kcli info vm myvm               # Full info
kcli info vm myvm -f ip         # Specific field
kcli info vm myvm -o yaml       # YAML format

Start/Stop/Restart

kcli start vm myvm
kcli stop vm myvm
kcli restart vm myvm

Delete VM

kcli delete vm myvm             # With confirmation
kcli delete vm myvm --yes       # Skip confirmation
kcli delete vm myvm --snapshots # Delete snapshots too

SSH Access

kcli ssh myvm                   # SSH as default user
kcli ssh -u root myvm           # SSH as specific user
kcli ssh -l myvm                # List SSH command only

Console Access

kcli console myvm               # Graphical console (VNC/SPICE)
kcli console myvm --serial      # Serial console

Disk Operations

# Add disk
kcli create disk -s 20 -p default myvm  # 20GB disk
kcli create disk -s 50 --thin myvm      # Thin provisioned

# Delete disk
kcli delete disk myvm-disk1 myvm

# List disks
kcli list disk

NIC Operations

# Add NIC
kcli create nic -n mynetwork myvm

# Delete NIC
kcli delete nic eth1 myvm

# Update NIC
kcli update nic -n newnetwork myvm --index 0

Snapshots

# Create snapshot
kcli create snapshot myvm mysnapshot

# List snapshots
kcli list snapshot myvm

# Revert to snapshot
kcli revert snapshot myvm mysnapshot

# Delete snapshot
kcli delete snapshot myvm mysnapshot

VM Configuration

Configuration Hierarchy

Parameters are resolved in order (later overrides earlier):

  1. kvirt/defaults.py - Built-in defaults
  2. ~/.kcli/config.yml default section
  3. Provider-specific section in config.yml
  4. Profile definition (~/.kcli/profiles.yml)
  5. Plan file parameters
  6. Command-line -P overrides

Common Parameters

# Compute
numcpus: 2                      # CPU count
memory: 512                     # Memory in MB
cpumodel: host-model            # CPU model

# Storage
pool: default                   # Storage pool
disks:                          # Disk configuration
  - size: 20                    # Size in GB
  - size: 50
    pool: otherpool
    thin: true

# Network
nets:                           # Network configuration
  - default                     # Simple: network name only
  - name: mynet                 # Advanced: with options
    ip: 192.168.1.10
    netmask: 255.255.255.0
    gateway: 192.168.1.1
    mac: aa:bb:cc:dd:ee:ff

# OS Customization
image: fedora40                 # Base image
cloudinit: true                 # Enable cloud-init
keys:                           # SSH public keys
  - ssh-rsa AAAA... user@host
cmds:                           # Post-boot commands
  - dnf -y update
  - systemctl enable nginx
files:                          # Files to inject
  - path: /etc/myconfig
    content: |
      key=value

Images

# List available images
kcli list image

# Download image
kcli download image fedora40
kcli download image centos9stream -p mypool

# Delete image
kcli delete image fedora40

# List all available images (from kcli catalog)
kcli list available-images

Profiles

Profiles in ~/.kcli/profiles.yml:

small:
  numcpus: 1
  memory: 1024
  disks:
    - size: 10

medium:
  numcpus: 2
  memory: 2048
  disks:
    - size: 20

webserver:
  image: centos9stream
  numcpus: 2
  memory: 4096
  nets:
    - default
  cmds:
    - dnf -y install nginx
    - systemctl enable --now nginx

Usage:

kcli create vm -p webserver myweb

Update Operations

# Update memory
kcli update vm myvm -P memory=8192

# Update CPUs
kcli update vm myvm -P numcpus=4

# Update metadata
kcli update vm myvm -P information="Production server"

Clone VM

kcli clone vm myvm myclone
kcli clone vm myvm myclone --full  # Full clone (not linked)

Export VM

kcli export vm myvm                 # Export to image
kcli export vm myvm --image myimage # Custom image name

Troubleshooting

VM Won't Start

kcli -d start vm myvm              # Debug output
sudo virsh list --all               # Check libvirt state
sudo virsh start myvm               # Try direct start

No IP Address

# Check DHCP is enabled on network
kcli info network default

# Check cloud-init completed
kcli ssh myvm
cat /var/log/cloud-init.log

SSH Connection Issues

# Get SSH command details
kcli ssh -l myvm

# Check VM has IP
kcli info vm myvm -f ip

# Try direct SSH
ssh -i ~/.kcli/id_rsa user@<ip>

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!

Skill Details

GitHub Stars 616
GitHub Forks 165
Created Jan 2026
Last Updated 5个月前
tools tools cloud

Build your own?

Join 12,000+ developers contributing to the Claude ecosystem.