firecrackerode

Firecracker API module.

Usage no npm install needed!

<script type="module">
  import firecrackerode from 'https://cdn.skypack.dev/firecrackerode';
</script>

README

firecrackerode

Node.js client for Amazon's Firecracker MicroVM platform.

Installation

npm install firecrackerode

Usage

Getting started

To use firecrackerode first you need to instantiate it:

var Firecracker = require('dockerode');
var firecracker = new Firecracker({socketPath: '/tmp/firecracker.socket'});

Creating a MicroVM

//https://s3.amazonaws.com/spec.ccfc.min/img/hello/kernel/hello-vmlinux.bin
firecracker.bootSource({
  'kernel_image_path': process.cwd() + '/images/hello-vmlinux.bin',
  'boot_args': 'console=ttyS0 reboot=k panic=1 pci=off'
}).then(function(data) {
  //https://s3.amazonaws.com/spec.ccfc.min/img/hello/fsfiles/hello-rootfs.ext4
  var drive = firecracker.drive('rootfs');
  return drive.updatePreboot({
    'path_on_host': process.cwd() + '/images/hello-rootfs.ext4',
    'is_root_device': true,
    'is_read_only': false
  });
}).then(function(data) {
  return firecracker.action('InstanceStart');
}).then(function(data){
  console.log('MicroVM booted!');
}).catch(function(err) {
  console.log(err);
});

Helper functions

//Downloading an image
firecracker.downloadImage('https://s3.amazonaws.com/spec.ccfc.min/img/hello/kernel/hello-vmlinux.bin', os.tmpdir() + '/hello-vmlinux.bin').then(function () {
  console.log('Kernel image downloaded!');
}).catch(function(err) {
  console.log(err);
});

//Spawn Firecracker process
firecracker.spawn().then(function () {
  console.log('Firecracker spawned!');
}).catch(function(err) {
  console.log(err);
});

//Kill Firecracker process
firecracker.kill()