karmab/kcli

Management tool for virtualization and kubernetes platforms

Python

655

7,264 commits

updated Oct 15, 2026

See the code

README

kcli repository

CI Copr

Screenshot

Demo!

Description

This tool is meant to interact with existing virtualization providers (libvirt, KubeVirt, oVirt, OpenStack, VMware vSphere, AWS, Azure, GCP, IBM cloud and Hcloud) and to easily deploy and customize VMs from cloud images.

You can also interact with those VMs (list, info, ssh, start, stop, delete, console, serialconsole, add/delete disk, add/delete nic, ...).

Furthermore, you can deploy VMs using predefined profiles, several at once using plan files or entire products for which plans were already created for you.

Refer to the documentation for more information

Quick Start

curl -s https://raw.githubusercontent.com/karmab/kcli/main/install.sh | bash

Deploy your first vm with:

kcli create vm -i centos8stream myvm
kcli list vm
# wait 5-10 seconds for vm to grab an ip
kcli ssh myvm
kcli delete vm

What you can do

  • Interact with all the virtualization providers using a single tool
  • Declare all your objects (VM, containers, networks, ansible playbooks, ...) in a single yaml plan file with a simple syntax
  • Customize a plan deployment using parameters and Jinja templating
  • Adjust VMs from a plan (memory, CPU, flavor, disks and NICs) to match what's defined in the plans
  • Inject all configuration with cloud-init/Ignition or the equivalent in cloud providers
  • Use profiles to launch VMs with same hardware characteristics
  • Launch a plan from an URL
  • Share your plan or use existing ones from Github repo as products
  • Use the existing plans to deploy Kubernetes, OpenShift, OpenStack, oVirt, kubevirt, ...
  • Use the existing cloud images for each distribution
  • Easily share private keys between your VMs
  • Handle dns entries for the VMs
  • Automatically subscribe your RHEL VMs
  • Get a push button notification when a vm has finished its deployment
  • Alternatively use web UI to do the same

Contributors

See contributors on GitHub

Copyright 2017-2025 Karim Boumedhel

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Problems?

Open an issue or join us on slack

Mc Fly!!!

karmab

aws
azure
gcp
hetzner-cloud
hypershift
ibm-cloud
k3s
kubeadm
kubernetes
kubevirt
libvirt
microshift
openshift
openstack
ovirt
proxmox
rke2
vsphere

karmab/kcli

Management tool for virtualization and kubernetes platforms

Python

655

7,264 commits

updated Oct 15, 2026

See the code

README

kcli repository

CI Copr

Screenshot

Demo!

Description

This tool is meant to interact with existing virtualization providers (libvirt, KubeVirt, oVirt, OpenStack, VMware vSphere, AWS, Azure, GCP, IBM cloud and Hcloud) and to easily deploy and customize VMs from cloud images.

You can also interact with those VMs (list, info, ssh, start, stop, delete, console, serialconsole, add/delete disk, add/delete nic, ...).

Furthermore, you can deploy VMs using predefined profiles, several at once using plan files or entire products for which plans were already created for you.

Refer to the documentation for more information

Quick Start

curl -s https://raw.githubusercontent.com/karmab/kcli/main/install.sh | bash

Deploy your first vm with:

kcli create vm -i centos8stream myvm
kcli list vm
# wait 5-10 seconds for vm to grab an ip
kcli ssh myvm
kcli delete vm

What you can do

  • Interact with all the virtualization providers using a single tool
  • Declare all your objects (VM, containers, networks, ansible playbooks, ...) in a single yaml plan file with a simple syntax
  • Customize a plan deployment using parameters and Jinja templating
  • Adjust VMs from a plan (memory, CPU, flavor, disks and NICs) to match what's defined in the plans
  • Inject all configuration with cloud-init/Ignition or the equivalent in cloud providers
  • Use profiles to launch VMs with same hardware characteristics
  • Launch a plan from an URL
  • Share your plan or use existing ones from Github repo as products
  • Use the existing plans to deploy Kubernetes, OpenShift, OpenStack, oVirt, kubevirt, ...
  • Use the existing cloud images for each distribution
  • Easily share private keys between your VMs
  • Handle dns entries for the VMs
  • Automatically subscribe your RHEL VMs
  • Get a push button notification when a vm has finished its deployment
  • Alternatively use web UI to do the same

Contributors

See contributors on GitHub

Copyright 2017-2025 Karim Boumedhel

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Problems?

Open an issue or join us on slack

Mc Fly!!!

karmab

aws
azure
gcp
hetzner-cloud
hypershift
ibm-cloud
k3s
kubeadm
kubernetes
kubevirt
libvirt
microshift
openshift
openstack
ovirt
proxmox
rke2
vsphere

Project health

PyPI

Latest release

99.0.202610150827 · Oct 15, 2026

Releases this year

216

Significant stargazers

Antonio Ojea

603 followers · starred Feb 2021

Stephen Kitt

154 followers · starred Oct 2016

Ivan Shapovalov

51 followers · starred Jan 2026

Nir Soffer

176 followers · starred Dec 2021