Placemat is a tool to simulate data center networks and servers using rkt Pods, QEMU/KVM virtual machines, and Linux networking stacks. Placemat can simulate virtually any kind of network topologies to help tests and experiments for software usually used in data centers.
Placemat is a single binary executable. It just builds networks and virtual machines when it starts, and destroys them when it terminates. This simplicity makes placemat great for a continuous testing tool.
Networks, virtual machines, and other kind of resources are defined in YAML files in a declarative fashion. Users need not mind the order of creation and/or destruction of resources.
Virtual BMC for IPMI power management
Placemat supports cloud-init and ignition to automate virtual machine initialization. Files on the host machine can be exported to guests as a VVFAT drive. QEMU disk images can be downloaded from remote HTTP servers.
All of these help implementation of fully-automated tests.
Not only traditional BIOS, but placemat VMs can be booted in UEFI mode if OVMF is available.
This project provides these commands:
placematis the main tool to build networks and virtual machines.
placemat-connectis a utility to connect to VM serial console.
placemat reads all YAML files specified in command-line arguments,
then creates resources defined in YAML. To destroy, just kill the
process (by sending a signal or Control-C).
$ placemat [OPTIONS] YAML [YAML ...] Options: -graphic run QEMU with graphical console -enable-virtfs enable VirtFS to share files between the guest and the host OS. -shared-dir shared directory between the guest and the host OS (default "/mnt/placemat") -run-dir string run directory (default "/tmp") -cache-dir string directory for cache data. -data-dir string directory to store data (default "/var/scratch/placemat") -debug show QEMU's and Pod's stdout and stderr -force force run with removal of garbage
-cache-dir is not specified, the default will be
sudo is used for
sudo is not used, cache directory will be
the same as
-force is used for forced run. Remaining garbage, for example virtual networks, mounts, socket files will be removed.
If placemat starts without
-graphic option, VMs will have no graphic console.
Instead, they have serial consoles exposed via UNIX domain sockets.
placemat-connect is a tool to connect to the serial console.
$ placemat-connect [-run-dir=/tmp] your-vm-name Options: -run-dir the directory specified for placemat by -run-dir.
To exit from the console, press Ctrl-Q, Ctrl-X in this order.
For Ubuntu or Debian, you can install them as follows:
$ sudo apt-get update $ sudo apt-get install qemu-system-x86 qemu-utils ovmf picocom
As to rkt, obtain a deb (or rpm) package then install it as follows:
$ wget https://github.com/rkt/rkt/releases/download/v1.30.0/rkt_1.30.0-1_amd64.deb $ sudo dpkg -i rkt_1.30.0-1_amd64.deb
$ go get -u github.com/cybozu-go/placemat/cmd/placemat $ go get -u github.com/cybozu-go/placemat/cmd/placemat-connect
See examples how to write YAML files.
To launch placemat from YAML files, run it with
sudo as follows:
$ sudo $GOPATH/bin/placemat cluster.yml
To connect to a serial console of a VM, use
$ sudo $GOPATH/bin/placemat-connect VM
This will launch
picocom. To exit, type
See specifications under docs directory.