Skip to main content

cloudvirt

cloudvirt creates and destroys cloud-init powered x86_64 VMs using the libVirt API.

installation

1. stable

pip install cloudvirt

2. dev

git clone --depth=1 https://github.com/gottaeat/cloudvirt
cd cloudvirt/
pip install .

configuration

specification

domains

key necessity description
dom_name required str name of the domain
dom_mem required int amount of memory in megabytes
dom_vcpu required int core count
net required str name of the libVirt network to associate with the VM
isolated_port optional bool whether port is isolated. If unset, relevant config not emitted.
vol_pool required str name of the libVirt pool to associate with the VM
vol_size required int disk size in gigabytes
base_image optional str full name of the cloud-init capable cloud image[1]
ip check[2] ipv4 ipv4 address or network to be associated with the primary interface of the VM
sshpwauth optional bool whether to allow ssh authentication via passwords (VM-wide, applies to all users)
gateway check[3] ipv4 the next hop to the default route

[1] the cloud image specified must be present in the specified volume pool and be reachable by libVirt before cloudvirt is executed. if none provided, noble-server-cloudimg-amd64.img is expected to be present.

[2] if specified without a /, an attempt at DHCP and DNS reservation will be made. specifying a gateway makes providing a value for this key in CIDR notation necessary.

if there is no /, this address must be within the DHCP range of the libVirt network specified.

[3] installed as on-link. specifying this makes an ip to be supplied in CIDR notation necessary.

[2+3] these keys must be supplied with a value that abides by the requirements stated above if the network type for the specified libVirt network is not one of: router, nat

users

key necessity description
name required str name of the user
password_hash optional str password hash in shadow compliant crypt() format (like mkuser output)
ssh_keys optional list of str list of ssh keys to append to the authorized_keys of the user
sudo_god_mode required bool toggle for adding the user to the sudo group and allowing it to run sudo without a password

WARNING: if you do not specify any authentication method in the file supplied via --users and if you:

  1. do not specify an arbitrary user-data file via --userdata,
  2. or, specify a user-data but the resulting final cloud-init user-data yaml to be written to the iso ends up having no valid authentication method

program will halt.

examples

--users <userspec.yml>

you can also do cloudvirt mkuser to interactively generate a userspec.yml through prompts.

---
userspec:
    - name: john
      password_hash: '$y$j9T$/gPg8H0fdtuZh8Ja8decf.$f7IzP89gNaToHUsY2bdgaxv2HJsKSRYLyG6mxNZ6AW3'
      sudo_god_mode: true

    - name: doe
      ssh_keys:
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI0000000000000000000000000000000000000000000

<vmspec.yml>

---
vmspec:
    dom_name: cloudvirttest
    dom_mem: 2048
    dom_vcpu: 2
    net: cloudvirt
#   isolated_port: no
#   ip:
#   gateway:
    vol_pool: cloudvirt
    vol_size: 10
#   base_image:
#   sshpwauth:

<pool.xml>

<pool type="dir">
  <name>cloudvirt</name>
  <target>
    <path>/pools/cloudvirt</path>
  </target>
</pool>

<net.xml>

<network>
  <name>cloudvirt</name>
  <forward mode="nat"/>
  <ip address="192.168.253.1" netmask="255.255.255.0">
    <dhcp>
      <range start="192.168.253.1" end="192.168.253.254"/>
    </dhcp>
  </ip>
</network>

usage

cloudvirt --help

Metadata

Release files for cloudvirt 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cloudvirt 0.1.4
File Size Uploaded
cloudvirt-0.1.4.tar.gz 27.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cloudvirt 0.1.4
File Interpreter ABI Platform
cloudvirt-0.1.4-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 55.9 kB

Release files / cloudvirt-0.1.4.tar.gz

Download URL cloudvirt-0.1.4.tar.gz
Size 27.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c8b7fed68a00a649e6c341a7b616ce0e5f73b797334ccbbe6ee1a7f229899e83
BLAKE2b-256 checksum
How to use checksums
3b21badc1135439d868c6dd7bf0eb0127cf71e113840da0665e7c8d084e2301a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2025.

Transparency log

Release files / cloudvirt-0.1.4-py2.py3-none-any.whl

Download URL cloudvirt-0.1.4-py2.py3-none-any.whl
Size 28.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
3732d76d2a0ec947b830f6c3414f3e4f45b4fdc01a8f1157e66b92e837d8fb54
BLAKE2b-256 checksum
How to use checksums
4b3934cc7fc2f8e6bc790417358ccfde0018e483f60f264dfb56ea2a890da202
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 7, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page