Packer - Build Automated Machine Images

  •        204

Packer is a tool for building identical machine images for multiple platforms from a single source configuration. It is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel.

It contains out of box support for:

  • Amazon EC2 (AMI). Both EBS-backed and instance-store AMIs
  • Azure
  • CloudStack
  • DigitalOcean
  • Docker
  • Google Compute Engine
  • Hyper-V
  • 1&1
  • OpenStack
  • Parallels
  • ProfitBricks
  • QEMU. Both KVM and Xen images.
  • Triton (Joyent Public Cloud)
  • VMware
  • VirtualBox

http://www.packer.io
https://github.com/hashicorp/packer

Tags
Implementation
License
Platform

   




Related Projects

boot2docker-cli - boot2docker management utility

  •    Go

This project is officially deprecated in favor of Docker Machine. The code and documentation here only exist as a reference for users who have not yet switched over (but please do soon). The recommended way to install Machine is with the Docker Toolbox.This tool downloads the boot2docker ISO image, creates a VirtualBox virtual machine, sets up two networks for that virtual machine (one NAT to allow the VM and containers to access the internet, the other host-only to allow container port mapping to work securely), and then provides the user a simple way to login via SSH.

Libretto - Golang library to create Virtual Machines (VMs) on any cloud

  •    

Libretto is a Golang library to create Virtual Machines (VM) on any cloud and Virtual Machine hosting platforms such as AWS, Azure, OpenStack, vSphere, VMware Workstation/Fusion, Exoscale or VirtualBox. Different providers have different utilities and API interfaces to achieve that, but the abstractions of their interfaces are quite similar.

Packer - Creates identical machine images for multiple platforms

  •    Go

Packer is a tool for building identical machine images for multiple platforms from a single source configuration. Packer comes out of the box with support for the following platforms Amazon EC2, DigitalOcean, Docker, Google Compute Engine, OpenStack, Parallels, QEMU, VirtualBox, VMware.

ignite - Ignite a Firecracker microVM

  •    Go

Weave Ignite is an open source Virtual Machine (VM) manager with a container UX and built-in GitOps management. Ignite makes Firecracker easy to use by adopting its developer experience from containers. With Ignite, you pick an OCI-compliant image (Docker image) that you want to run as a VM, and then just execute ignite run instead of docker run. There’s no need to use VM-specific tools to build .vdi, .vmdk, or .qcow2 images, just do a docker build from any base image you want (e.g. ubuntu:18.04 from Docker Hub), and add your preferred contents.

vm - Package and Run Virtual Machines as Docker Containers

  •    Python

RancherVM allows you to create a special kind of containers called VM Containers. A VM container looks and feels like a regular container. It can be created from Dockerfile, distributed using DockerHub, managed using docker command line, and networked together using links and port bindings. Inside each VM container, however, is a virtual machine instance. You can package any QEMU/KVM image as RancherVM containers.RancherVM additionally comes with a management container that provides a web UI for managing virtual machines and accessing the VNC console.


Kaffe - Not Java

  •    Java

Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment.

infrakit - A toolkit for creating and managing declarative, self-healing infrastructure.

  •    Go

InfraKit is a toolkit for infrastructure orchestration. With an emphasis on immutable infrastructure, it breaks down infrastructure automation and management processes into small, pluggable components. These components work together to actively ensure the infrastructure state matches the user's specifications. InfraKit therefore provides infrastructure support for higher-level container orchestration systems and can make your infrastructure self-managing and self-healing. In this video, InfraKit was used to build a custom linux operating system (based on linuxkit). We then deployed a cluster of virtual machine instances on a local Mac laptop using the Mac Xhyve hypervisor (HyperKit). A cluster of 3 servers booted up in seconds. Later, after the custom OS image has been updated with a new public key, InfraKit detects the change and orchestrates a rolling update of the nodes. We then deploy the same OS image to a bare-metal ARM server running on Packet.net, where the server uses custom ipxe boot directly from the localhost. It demonstrates some of the key concepts and components in InfraKit and shows how InfraKit can be used to implement an integrated workflow from custom OS image creation to cluster deployment and Day N management. The entire demo is published as a playbook, and you can create your own playbooks too.

deploykit - A toolkit for creating and managing declarative, self-healing infrastructure.

  •    Go

InfraKit is a toolkit for infrastructure orchestration. With an emphasis on immutable infrastructure, it breaks down infrastructure automation and management processes into small, pluggable components. These components work together to actively ensure the infrastructure state matches the user's specifications. InfraKit therefore provides infrastructure support for higher-level container orchestration systems and can make your infrastructure self-managing and self-healing. In this video, InfraKit was used to build a custom linux operating system (based on linuxkit). We then deployed a cluster of virtual machine instances on a local Mac laptop using the Mac Xhyve hypervisor (HyperKit). A cluster of 3 servers booted up in seconds. Later, after the custom OS image has been updated with a new public key, InfraKit detects the change and orchestrates a rolling update of the nodes. We then deploy the same OS image to a bare-metal ARM server running on Packet.net, where the server uses custom ipxe boot directly from the localhost. It demonstrates some of the key concepts and components in InfraKit and shows how InfraKit can be used to implement an integrated workflow from custom OS image creation to cluster deployment and Day N management. The entire demo is published as a playbook, and you can create your own playbooks too.

dvm - An on demand Docker virtual machine, thanks to Vagrant and boot2docker

  •    Shell

An on demand Docker virtual machine, thanks to Vagrant and boot2docker. Works great on Macs and other platforms that don't natively support the Docker daemon. Under the covers this is downloading and booting Mitchell Hashimoto's boot2docker Vagrant Box image. The driving need for something like dvm was for running infrastructure testing, like Test Kitchen using the kitchen-docker driver. For the driver to work it needs access to all the dynamically assigned ports, not just the Docker daemon port. That's why dvm uses a private network segment and address (192.168.42.43 by default). Once Docker started supporting the DOCKER_HOST environment variable, the actual IP address was less important and consequently made the docker command on non-Linux distros feel almost native.

kernel virtual machine

  •    C

KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. Using KVM, one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.

GNU Classpath - Mother of most of the VM

  •    C

GNU Classpath provides core class libraries for use with virtual machines and compilers for the java programming language. GNU Classpath 1.0 will be fully compatible with the 1.1 and 1.2 API specifications, in addition to having significant compatibility with the 1.3, 1.4, 1.5 and 1.6 APIs.

HHVM - HipHop Virtual Machine for PHP

  •    PHP

HHVM (aka the HipHop Virtual Machine) is a new open-source virtual machine designed for executing programs written in PHP. HHVM uses a just-in-time compilation approach to achieve superior performance while maintaining the flexibility that PHP developers are accustomed to.

Cacaovm - Just-In-Time (JIT) Compiler

  •    Java

cacaovm is a Java Virtual Machine (JVM) which uses Just-In-Time (JIT) compilation to execute Java methods natively. cacaovm uses GNU Classpath or OpenJDK or phoneME as Java runtime library. The cacaovm project started as a research JVM to explore new implementation techniques. The first version for the Alpha was released in February 1997 as a binary.

JC Virtual Machine - Converts Java to C

  •    Java

JC Virtual machine converts Java class files to C source code. It could also compiles with GCC and loads them with built-in ELF loader. Additional to that, JC provides a complete Java runtime with optimization to increase performance.

Harmony - Open Source Java SE

  •    Java

Apache Harmony is a modular Java runtime with class libraries and associated tools. One of the goals of the Harmony project is to create a design modular enough so that parts of the VM can be implemented in different languages. This project started in 2005 and it is under active development.

juicebox - A virtual machine designed for programming workshops.

  •    Shell

A virtual machine designed for programming workshops.Based on boxcutter/ubuntu.

rvmi - rVMI - A New Paradigm For Full System Analysis

  •    C

rVMI is a debugger on steroids. It leverages Virtual Machine Introspection (VMI) and memory forensics to provide full system analysis. This means that an analyst can inspect userspace processes, kernel drivers, and pre-boot environments in a single tool. It was specifically designed for interactive dynamic malware analysis. rVMI isolates itself from the malware by placing its interactive debugging environment out of the virtual machine (VM) onto the hypervisor-level. Through the use of VMI the analyst still has full control of the VM, which allows her to pause the VM at any point in time and to use typical debugging features such as breakpoints and watchpoints. In addition, rVMI provides access to the entire Rekall feature set, which enables an analyst to inspect the kernel and its data structures with ease.

image-builder-rpi - SD card image for Raspberry Pi with Docker: HypriotOS

  •    Ruby

You can build the SD card image locally with Vagrant. Make sure you have vagrant installed. Then run the following command to create the Vagrant box and use the Vagrant Docker daemon. The Vagrant box is needed to run guestfish inside. Use export VAGRANT_DEFAULT_PROVIDER=virtualbox to strictly create a VirtualBox VM.

Jikes RVM

  •    Java

Jikes RVM is a flexible infrastructure for virtual machine research

Eclipse OpenJ9 - A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput

  •    Java

Eclipse OpenJ9 is an independent implementation of a Java Virtual Machine. "Independent implementation" means it was built using the Java Virtual Machine specification without using any code from any other Java Virtual Machine. The OpenJ9 JVM combines with the Java Class libraries from OpenJDK to create a complete JDK tuned for footprint, performance, and reliability that is well suited for cloud deployments.