Skip to main content

docker-compose style composer for qemu

Project description

qemu-compose

qemu-compose aims to provide a docker-compose style composer for qemu command, with advanced scripting feature as well as http support for cloud init or general purpose provisioning.

Bring up a qemu VM by providing a qemu-compose.yml and run qemu-compose up

Advantages

  • Very simple and robust, written of several pure python scripts, depends on qemu commands only.
  • No libvirt stuff, no daemon process, no xml config, no complex abstraction, just a simple wrapper around qemu args.
  • support before_script and after_script for setup and cleanup
  • support boot_commands for vm provisioning (implemented using tty communication, gui not supported yet, and use jsonlisp for expressive power which apparently is turing-complete)
  • support http_serve for cloudinit
  • env interpolation for advanced configuration

Installation

$ pip install qemu-compose

Examples and Screenshot

bring up ubuntu cloudimg qemu vm and run a interactive shell

$ cd ./script/ubuntu-cloudimg__amd64/
$ qemu-compose up

Demo:

asciicast

SSH Helper

qemu-compose provides a helper to invoke ssh with the instance key and safe defaults.

  • Usage: qemu-compose ssh [OPTIONS] VMID COMMAND [ARG...]
  • Defaults added by qemu-compose:
    • -o StrictHostKeyChecking=no
    • -o UserKnownHostsFile=/dev/null
    • -i ~/.local/share/qemu-compose/instance/VMID/ssh-key
    • appends root@vsock%<cid> as the default destination (falls back to root@vsock%${cid} if CID is unknown)

Examples:

# Print the default ssh command that would be used for a given VMID
$ qemu-compose ssh <vmid>
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.local/share/qemu-compose/instance/<vmid>/ssh-key root@vsock%<cid>

# Connect using vsock destination (cid recorded when the VM booted)
$ qemu-compose ssh <vmid> root@vsock%<cid>

# Connect over TCP instead (override destination and add your own options)
$ qemu-compose ssh <vmid> -p 2222 root@127.0.0.1

# Run a remote command
$ qemu-compose ssh <vmid> root@vsock%<cid> uname -a

Notes:

  • The instance key is generated at first boot and stored under ~/.local/share/qemu-compose/instance/<vmid>/ssh-key.
  • Any ssh options you pass will be forwarded; the last-specified option wins.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qemu_compose-0.7.1.tar.gz (94.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qemu_compose-0.7.1-py3-none-any.whl (112.0 kB view details)

Uploaded Python 3

File details

Details for the file qemu_compose-0.7.1.tar.gz.

File metadata

  • Download URL: qemu_compose-0.7.1.tar.gz
  • Upload date:
  • Size: 94.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qemu_compose-0.7.1.tar.gz
Algorithm Hash digest
SHA256 2e6af3e1959f685707df3d4f2b66ae4bd69cb27b8d36de69af6b65b3cafd0bb2
MD5 c2b1c4e54b2b043df91e500ea3b67ef0
BLAKE2b-256 5b0b17431cdd4d7ae0d873b44bc98b81eb0883be1cb11af6ee72dfc70d6be8e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for qemu_compose-0.7.1.tar.gz:

Publisher: pypi.yml on zTrix/qemu-compose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qemu_compose-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: qemu_compose-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 112.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qemu_compose-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a648a7b8d1f0f809a69d980c09ed92cb0bb0720edbf41e1ef9d12c8f9db7fbe6
MD5 4ada3aa7d73b5ea2e381389693792dab
BLAKE2b-256 d8de79231fe14615cc95b5389a4f3c5d2006d630734df9d303802c514e5cb447

See more details on using hashes here.

Provenance

The following attestation bundles were made for qemu_compose-0.7.1-py3-none-any.whl:

Publisher: pypi.yml on zTrix/qemu-compose

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page