Molecule QEMU
Project description
molecule-qemu
The development of the Molecule QEMU
driver was motivated by the author's choice of the Apple M1 as their primary development machine. He wanted to test Ansible roles on the Apple M1 but preferred not to rely on Docker
for testing due to challenges with Docker's systemd
support. Author never liked to install supplementary software such as Vagrant
and VirtualBox
on development machine. Author is aware of libvirt
and virt-manager
but their complexity and the lack of support was frustrating.
Supported platforms:
- MacOS 13.x (arm64)
- Ubuntu 22.04 LTS (amd64) (tested on GitHub Actions)
Support guest OS:
- Debian 11 (arm64, amd64)
- Ubuntu 20.04 LTS (arm64, amd64)
- Ubuntu 22.04 LTS (arm64, amd64)
Support of other platforms and guest OS is possible, but not tested. Please, open an issue if you want to add support for other platforms.
Supported network modes:
user
- QEMU's user networking modevmnet-shared
- QEMU'svmnet-shared
networking mode (MacOS only)
Quick start
Install molecule-qemu
python package:
pip install molecule-qemu
Create a new Molecule scenario using molecule init
command:
molecule init scenario default --driver-name molecule-qemu --verifier-name testinfra
Edit molecule.yml
and add platforms:
---
dependency:
name: galaxy
driver:
name: molecule-qemu
platforms:
- name: debian-bullseye-arm64
image: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-arm64.qcow2
image_checksum: sha512:https://cloud.debian.org/images/cloud/bullseye/latest/SHA512SUMS
image_arch: aarch64
vm_network: vmnet-shared
provisioner:
name: ansible
inventory:
host_vars:
debian-bullseye-arm64: {}
verifier:
name: testinfra
Dependencies
Install QEMU and CDRTools on macOS:
brew install qemu cdrtools
Install QEMU on Ubuntu:
apt-get install mkisofs qemu-system-x86 qemu-utils
Network modes
user
network mode
This is the default network mode. It uses QEMU's user networking mode.
Mode is selected by setting vm_network: user
in molecule.yml
. This is the default mode. SSH port is forwarded to the host and must be unique for each platform (use ssh_port
option to set it). Example:
- name: debian-bullseye-arm64
image: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-arm64.qcow2
image_checksum: sha512:https://cloud.debian.org/images/cloud/bullseye/latest/SHA512SUMS
image_arch: aarch64
vm_network: user # this is the default
ssh_port: 2022
vmnet-shared
network mode
This mode uses QEMU's vmnet-shared
networking mode. It requires vmnet.framework
to be installed on the host. This mode is only supported on MacOS. It requires passwordless sudo
access for current user.
Mode is selected by setting vm_network: vmnet-shared
in molecule.yml
. Example:
- name: debian-bullseye-arm64
image: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-arm64.qcow2
image_checksum: sha512:https://cloud.debian.org/images/cloud/bullseye/latest/SHA512SUMS
image_arch: aarch64
vm_network: vmnet-shared
Examples
See tests for more examples.
Sample platforms configuration
platforms:
- name: debian-bullseye-arm64
image: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-arm64.qcow2
image_checksum: sha512:https://cloud.debian.org/images/cloud/bullseye/latest/SHA512SUMS
image_arch: aarch64
ssh_port: 10000
- name: debian-bullseye-amd64
image: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2
image_checksum: sha512:https://cloud.debian.org/images/cloud/bullseye/latest/SHA512SUMS
image_arch: x86_64
ssh_port: 10001
- name: ubuntu-focal-arm64
image: https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-arm64.img
image_checksum: sha256:https://cloud-images.ubuntu.com/focal/current/SHA256SUMS
image_arch: aarch64
ssh_port: 10002
- name: ubuntu-focal-amd64
image: https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img
image_checksum: sha256:https://cloud-images.ubuntu.com/focal/current/SHA256SUMS
image_arch: x86_64
ssh_port: 10003
- name: ubuntu-jammy-arm64
image: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-arm64.img
image_checksum: sha256:https://cloud-images.ubuntu.com/jammy/current/SHA256SUMS
image_arch: aarch64
ssh_port: 10004
- name: ubuntu-jammy-amd64
image: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
image_checksum: sha256:https://cloud-images.ubuntu.com/jammy/current/SHA256SUMS
image_arch: x86_64
ssh_port: 10005
Cloud Images URLs
For convenience, here are the URLs for the cloud images used in the examples above.
Debian
Ubuntu
- https://cloud-images.ubuntu.com/focal/current/SHA256SUMS
- https://cloud-images.ubuntu.com/jammy/current/SHA256SUMS
Reference
QEMU vmnet-shared networking
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for molecule_qemu-0.4.12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 707a7e0983bb7c6a9bf9d813de753db6ab2afd98e491c0721eb92017e72b4190 |
|
MD5 | def0803be7c648c2faaa5f10d63a73de |
|
BLAKE2b-256 | 927faac2faf9c61794f4dcb2bb0ef23141addfbe6859d0030dcf0d411577fa91 |