No description
Find a file
2019-09-30 10:51:28 -05:00
cmd/driver initial set of files for task driver skeleton 2019-09-30 10:26:20 -05:00
pkg/plugin initial set of files for task driver skeleton 2019-09-30 10:26:20 -05:00
go.mod initial set of files for task driver skeleton 2019-09-30 10:26:20 -05:00
go.sum initial set of files for task driver skeleton 2019-09-30 10:26:20 -05:00
LICENSE initial set of files for task driver skeleton 2019-09-30 10:26:20 -05:00
Makefile initial set of files for task driver skeleton 2019-09-30 10:26:20 -05:00
README.md initial set of files for task driver skeleton 2019-09-30 10:26:20 -05:00

nomad-driver-skeleton

This project is a Hashicorp Nomad runtime driver plugin skeleton implementation. You can clone and modify this to get started writing your own driver plugin.

Note that this is only a skeleton to help you get started. The Makefile only builds for linux/amd64

Requirements

  • Nomad v0.9.5+
  • Go v1.11+ (to build the plugin)

Get Started

Clone repository to: `$GOPATH/src/github.com/hashicorp/nomad-driver-skeleton

Copy the files into your new driver's package and change package names as needed.

$ cd $GOPATH/src/github.com/hashicorp/nomad-driver-skeleton
$ make dep
$ make build

Requirements

Go should be installed on your machine. You will also need to correctly setup a GOPATH and add $GOPATH/bin to your $PATH.

To compile the driver plugin, run make build. This will build the plugin and put the task driver binary under the NOMAD plugin dir, which by default is located under <nomad-data-dir>/plugins/. Check Nomad -data-dir and -plugin-dir flags for more information.

$ make build

Makefile and project module structure were inspired by Sylab's singularity driver.

Code Organization

The skeleton driver comes with an in memory task state store (see state.go). This in-memory map is for storing runtime details (like a process id). The details of what to store is left to the implementation of the runtime driver. Fields stored in the base implementation in this skeleton can be found in the taskHandle struct.