Releases: unikraft/packer-plugin-unikraft
v0.2.1
v0.2.0
Release v0.2.0
v0.1.3
Bumps dependencies and updates Kraftkit
to the latest version.
v0.1.2
Release v0.1.2
v0.1.1
Release v0.1.1
v0.1.0
Introducing Unikraft's HCP Packer Plugin
We are excited to release the Unikraft HashiCorp Packer plugin! The plugin can be used with the Packer CLI tool to create highly customized and ultra-lightweight VMs (aka Unikernels) based on Unikraft. This integration with Unikraft enables developer experience towards seamlessly building your application as a unikernel.
There are many benefits in running your (unmodified) application as a unikernel, including millisecond boot times, memory consumption of only a few MBs per instance, double the throughput of Linux, and lower latency, to name a few metrics. For more information about the performance of unikernels 🚀, the added security 🔒 and a positive impact on the environment 🌱 please check out Unikraft's documentation and the introductory chapters on these impacts.
To get started immediately, check out the repository README or see the installation instructions below.
This is the project repository for the Unikraft plugin for HashiCorp Packer. Create highly customized and ultra-lightweight VMs (aka Unikernels) based on Unikraft with Packer.
Overview
The plugin interfaces with the native Go API offered by KraftKit, Unikraft's command-line companion tool, to handle everything related to linking your application with Unikraft. Thanks to this interface, the plugin itself is kept light and modular.
The following minimalistic configuration allows you to build unikernel applications. For example building app-helloworld
unikernel application:
source "unikraft-builder" "example" {
// Target architecture of the resulting VM binary
architecture = "x86_64"
// Target platform of the resulting VM binary
platform = "kvm"
// Path of the resulting binaries
build_path = "/tmp/my-packer-unikernel/.unikraft/apps/helloworld"
// Path where to pull the sources and build the binaries
workdir = "/tmp/my-packer-unikernel"
// Application to pull and build
pull_source = "helloworld"
// Extra sources to use for the application
sources = [
"https://github.com/unikraft/app-helloworld.git",
]
}
Installation
Quickstart
packer plugins install github.com/unikraft/unikraft
Using the packer init
command
Starting from Packer v1.7, plugins can be automatically installed via the packer init
command. To install this plugin, copy and paste the following code snippet preamble into your Packer configuration file:
packer {
required_plugins {
unikraft = {
version = ">= 0.1.0"
source = "github.com/unikraft/unikraft"
}
}
}
Manual installation
You can find pre-built binary releases of the plugin here. Full installation instructions for installing plugins from source can be found on Packer's documentation.
Configuration
For more information on how to configure the plugin, please read the documentation located in the docs/
directory.
Support, Community & Meetings
If you think you've found a bug in the code or you have a question regarding the usage of this software, please reach out to us by opening an issue in the GitHub repository.
Contributions to this project are welcome: if you want to add a feature or a fix a bug, please do so by opening a Pull Request in the GitHub repository. In case of feature contribution, we kindly ask you to open an issue to discuss it beforehand.
A KraftKit Working Group (WG) meets every Wednesday at 12:30 PM (CET) on Discord where additional support, questions or issues can be raised. Invites and additional details are available on the Unikraft OSS Public calendar.
License
The Unikraft Packer Plugin is part of the Unikraft OSS Project and licensed under MPL-2.0
.