All Projects → cybozu-go → placemat

cybozu-go / placemat

Licence: Apache-2.0 license
Virtual data center construction tool

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to placemat

FirmWire
FirmWire is a full-system baseband firmware emulation platform for fuzzing, debugging, and root-cause analysis of smartphone baseband firmwares
Stars: ✭ 555 (+681.69%)
Mutual labels:  qemu
Onekey OpenVZ Install Windows
OpenVZ虚拟化(架构)VPS 一键安装 Windows 系统
Stars: ✭ 79 (+11.27%)
Mutual labels:  qemu
Initium
A modern bootloader with no legacy components
Stars: ✭ 15 (-78.87%)
Mutual labels:  qemu
python-negotiator
Scriptable KVM/QEMU guest agent implemented in Python
Stars: ✭ 40 (-43.66%)
Mutual labels:  qemu
quickgui
A Flutter frontend for quickget and quickemu.
Stars: ✭ 490 (+590.14%)
Mutual labels:  qemu
qemu-windows-10
running a windows 10 guest on a linux host with pci passthrough
Stars: ✭ 66 (-7.04%)
Mutual labels:  qemu
cv4pve-api-php
Proxmox VE Client API for PHP
Stars: ✭ 45 (-36.62%)
Mutual labels:  qemu
mdepx
MDEPX — A BSD-style RTOS
Stars: ✭ 17 (-76.06%)
Mutual labels:  qemu
simonpi
A quick & dirty script to emulate Raspberry PI family devices on your laptop.
Stars: ✭ 61 (-14.08%)
Mutual labels:  qemu
go-spice
SPICE proxy library, written in go
Stars: ✭ 23 (-67.61%)
Mutual labels:  qemu
armv8-bare-metal
No description or website provided.
Stars: ✭ 72 (+1.41%)
Mutual labels:  qemu
chaos-2
A hand-made SMP-aware kernel
Stars: ✭ 20 (-71.83%)
Mutual labels:  qemu
qemujs
Qemu.js source code with proof-of-concept machine-code-to-WASM JIT.
Stars: ✭ 101 (+42.25%)
Mutual labels:  qemu
node-qemu-server
Free GUI / Frontend / Management tool for simple setup, configure and control virtual machines (qemu / kvm) within your HTML5 Webbrowser. Virtualization with Node.js / Currently under complete rewrite.
Stars: ✭ 41 (-42.25%)
Mutual labels:  qemu
ProxmoxVE PHP API
ProxmoxVE PHP API
Stars: ✭ 78 (+9.86%)
Mutual labels:  qemu
docker-routeros
Mikrotik RouterOS inside Docker container
Stars: ✭ 225 (+216.9%)
Mutual labels:  qemu
cloudpods
A cloud-native open-source unified multi-cloud and hybrid-cloud platform. 开源、云原生的多云管理及混合云融合平台
Stars: ✭ 1,469 (+1969.01%)
Mutual labels:  qemu
qemu-android-x86-runner
Quick Start on How to Run Android x86 in QEMU
Stars: ✭ 102 (+43.66%)
Mutual labels:  qemu
FEMU
FEMU: Accurate, Scalable and Extensible NVMe SSD Emulator (FAST'18)
Stars: ✭ 213 (+200%)
Mutual labels:  qemu
lima
Linux virtual machines, typically on macOS, for running containerd
Stars: ✭ 8,723 (+12185.92%)
Mutual labels:  qemu

GitHub release CI Go Reference Go Report Card

Placemat

Placemat is a tool to simulate data center networks and servers using 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.

Features

  • No daemons

    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.

  • Declarative YAML

    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

    Power on/off/reset of VMs can be done by IPMI commands and Redfish API. See virtual BMC for details.

  • Automation

    Placemat supports cloud-init and ignition to automate virtual machine initialization. Files on the host machine can be exported to guests as a 9pfs. QEMU disk images can be downloaded from remote HTTP servers.

    All of these help implementation of fully-automated tests.

  • UEFI

    Not only traditional BIOS, but placemat VMs can be booted in UEFI mode if OVMF is available.

Usage

This project provides these commands:

  • placemat2 is the main tool to build networks and virtual machines.
  • pmctl2 is a utility tool to control VMs and Pods.

placemat2 command

placemat2 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).

$ placemat2 [OPTIONS] YAML [YAML ...]

Options:
  --cache-dir string
        directory for cache data
  --data-dir string
        directory to store data (default "/var/scratch/placemat")
  --debug
        show QEMU's stdout and stderr
  --force
        force run with removal of garbage
  --graphic
        run QEMU with graphical console
  --listen-addr string
        listen address (default "127.0.0.1:10808")
  --run-dir string
        run directory (default "/tmp")

If --cache-dir is not specified, the default will be /home/${SUDO_USER}/placemat_data if sudo is used for placemat. If sudo is not used, cache directory will be the same as --data-dir. --force is used for forced run. Remaining garbage, for example virtual networks, mounts, socket files will be removed.

pmctl2 command

pmctl2 is a command line tool to control VMs and Networks.

See pmctl

Getting started

Prerequisites

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 socat cloud-utils

Install placemat

You can choose go get or debian package for installation.

Install placemat2 and pmctl2:

$ go get -u github.com/cybozu-go/placemat/v2/cmd/placemat2
$ go get -u github.com/cybozu-go/placemat/v2/cmd/pmctl2

or

$ wget https://github.com/cybozu-go/placemat/releases/download/v${VERSION}/placemat_${VERSION}_amd64.deb
$ sudo dpkg -i placemat_${VERSION}_amd64.deb

Run examples

See examples how to write YAML files.

To launch placemat from YAML files, run it with sudo as follows:

$ sudo $GOPATH/bin/placemat2 cluster.yml

To connect to a serial console of a VM, use pmctl2 node enter:

$ sudo $GOPATH/bin/pmctl2 node enter VM

This will launch picocom. To exit, type Ctrl-Q, then Ctrl-X.

Specification

See specifications under docs directory.

License

placemat is licensed under the Apache License, Version 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].