Skip to main content

Butterknife makes bare-metal Linux deployment dead-simple using the Linux Containers (LXC) and Btrfs filesystem.

Project description

Introduction

Butterknife command-line utility can be used to serve snapshots via HTTP; send and receive snapshots over SSH and multicast; list local and remote snapshots.

Installation

Install dependencies:

sudo apt-get install lxc python3-dev cython3 python3-pip pigz btrfs-progs
sudo apt-get install python3-lxc # Ubuntu 14.04 or older
sudo pip3 install jinja2 click falcon

Install Butterknife:

sudo pip3 install butterknife

Listing templates

List local templates at /var/lib/butterknife/pool:

butterknife list

List local templates in a particular directory:

butterknife list file:///path/to/directory

List templates at /var/lib/butterknife/pool on a remote machine via SSH:

butterknife list ssh://hostname

List templates at remote machine via HTTP:

butterknife list http[s]://hostname[:port]

Pushing/pulling templates

Currently pull over SSH is working. Following replicates /var/lib/butterknife/pool from machine hostname to local pool at /var/lib/butterknife/pool:

butterknife pull ssh://hostname

You can also pull via HTTP:

butterknife pull http://butterknife.koodur.com

Note that symmetric push/pull requires patched btrfs-progs which has additional -p and -C flags for btrfs receive.

Multicast

Sending local template via multicast:

butterknife multicast send @template\:com.koodur.butterknife.Ubuntu\:x86_64\:snap7

You can even multicast a remote subvolume:

butterknife multicast send @template\:com.koodur.butterknife.Ubuntu\:x86_64\:snap7 --pool ssh://hostname

Receiving to local pool at /var/lib/butterknife/pool:

butterknife multicast receive

systemd-nspawn workflow

Create a btrfs subvolume for your butterknife image under /var/lib/machines. Replace ArchLinux with your image name you want to use.

sudo btrfs subvolume create /var/lib/machines/ArchLinux

Install base system in there

sudo pacstrap -i -c -d /var/lib/machines/ArchLinux base

Nspawn into it and customize your container

sudo systemd-nspawn -M ArchLinux
# do your thing

You will also need some scripts that will be ran on snapshot creation and when doing deployments with provision image.

look into the puppet-butterknife repository for scripts and files you should add

Create butterknife config file in /var/lib/machines/ArchLinux/etc/butterknife/butterknife.conf

[template]
name=ArchLinux

Also make sure that you have something like this on your host etc/butterknife/butterknife.conf config file

[global]
namespace=org.example.butterknife
endpoint=https://butterknife.example.org

Take a snapshot of your image

butterknife nspawn release ArchLinux

And now you should be ready to serve that image to your clients

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

butterknife-0.2.0.tar.gz (19.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page