kcli-configuration

Configuration Files Location

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "kcli-configuration" with this command: npx skills add karmab/kcli/karmab-kcli-kcli-configuration

kcli Configuration

Configuration Files Location

~/.kcli/ ├── config.yml # Main configuration (clients/providers) ├── profiles.yml # VM profiles (optional, can be in config.yml) ├── id_rsa / id_rsa.pub # SSH keys for VM access ├── id_ed25519 # Alternative SSH key └── clusters/ # Cluster state (created by kcli)

Basic config.yml Structure

default: client: localhost # Default provider to use numcpus: 2 memory: 512 pool: default nets: - default disks: - size: 10

Provider definitions

localhost: type: kvm host: 127.0.0.1

Provider Types

Type Description Required Fields

kvm

Local/remote libvirt host

aws

Amazon Web Services access_key_id, access_key_secret, region

gcp

Google Cloud Platform credentials, project, zone

azure

Microsoft Azure subscription_id, credentials (file)

kubevirt

VMs on Kubernetes context, host

openstack

OpenStack cloud auth_url, user, password, project

ovirt

oVirt/RHV host, user, password, datacenter

vsphere

VMware vSphere host, user, password, datacenter

proxmox

Proxmox VE host, user, password

hcloud

Hetzner Cloud token

ibm

IBM Cloud iam_api_key, region, vpc

KVM/Libvirt Configuration

Local libvirt

localhost: type: kvm host: 127.0.0.1 pool: default

Remote libvirt via SSH

remote-kvm: type: kvm host: 192.168.1.100 protocol: ssh # ssh (default), tcp, or tls user: root # SSH user pool: default

url: qemu+ssh://root@host/system # Or custom URI

AWS Configuration

myaws: type: aws access_key_id: AKIAIOSFODNN7EXAMPLE access_key_secret: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY region: us-east-1 keypair: mykey # EC2 key pair name

GCP Configuration

mygcp: type: gcp credentials: ~/service-account.json # Service account JSON project: my-project-id zone: us-central1-a region: us-central1 # Optional, derived from zone

Azure Configuration

myazure: type: azure subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx credentials: ~/.azure/credentials.json

Or use environment: AZURE_AUTH_LOCATION

location: eastus resource_group: my-rg # Optional, created if needed

KubeVirt Configuration

mykubevirt: type: kubevirt context: my-k8s-context # kubectl context host: api.cluster.local # API server for SSH tunneling pool: my-storageclass # StorageClass name multus: true # Use Multus CNI cdi: true # Use CDI for images

OpenStack Configuration

myopenstack: type: openstack auth_url: https://openstack:5000/v3 user: admin password: secret project: myproject domain: Default

oVirt/RHV Configuration

myovirt: type: ovirt host: ovirt-engine.local user: admin@internal password: secret datacenter: Default cluster: Default pool: DataDomain ca_file: ~/ovirt.pem # Engine CA certificate

Default Section Options

default:

Client selection

client: localhost

Compute

numcpus: 2 memory: 512 # MB cpumodel: host-model nested: true # Nested virtualization

Storage

pool: default disks: - size: 10 diskinterface: virtio diskthin: true

Network

nets: - default reservedns: false reservehost: false reserveip: false

OS/Cloud-init

cloudinit: true keys: [] # SSH public keys cmds: [] # Post-boot commands files: [] # Files to inject

Access

tunnel: false # SSH tunneling for console insecure: false # Ignore SSH host keys enableroot: true # Allow root SSH

Metadata

storemetadata: false planview: false

Profiles (profiles.yml or in config.yml)

In ~/.kcli/profiles.yml or config.yml profiles section

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

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

large: numcpus: 4 memory: 4096 disks: - size: 40 - size: 100

webserver: image: centos9stream numcpus: 2 memory: 4096 nets: - default cmds: - dnf -y install nginx - systemctl enable --now nginx base: medium # Inherit from another profile

Multiple Clients

default: client: local-kvm # Default client

local-kvm: type: kvm host: 127.0.0.1

remote-kvm: type: kvm host: 192.168.1.100

myaws: type: aws access_key_id: ... access_key_secret: ... region: us-east-1

Switch clients:

kcli switch local-kvm # Change default kcli -C myaws list vm # Use specific client

Validation Commands

List configured clients

kcli list client

Check client connectivity

kcli list host

Info about current client

kcli info host

Switch default client

kcli switch <client>

Test with specific client

kcli -C <client> list vm

Environment Variables

Some values can come from environment:

  • GOOGLE_APPLICATION_CREDENTIALS

  • GCP credentials path

  • AWS_ACCESS_KEY_ID , AWS_SECRET_ACCESS_KEY

  • AWS credentials

  • AZURE_AUTH_LOCATION

  • Azure credentials path

  • OS_*

  • OpenStack credentials (standard OS_ vars)

Troubleshooting

Connection refused (KVM):

Check libvirt is running

sudo systemctl status libvirtd

Test virsh connection

virsh -c qemu:///system list

SSH key issues:

Generate kcli SSH key

ssh-keygen -t rsa -N '' -f ~/.kcli/id_rsa

Or use ed25519

ssh-keygen -t ed25519 -N '' -f ~/.kcli/id_ed25519

Debug mode:

kcli -d list vm # Shows provider connection details

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

kcli-vm-operations

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

kcli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

kcli-testing

No summary provided by upstream source.

Repository SourceNeeds Review