Plugins
Nomad implements a plugin framework which allows users to extend the functionality of some components within Nomad. The design of the plugin system is inspired by the lessons learned from plugin systems implemented in other HashiCorp products such as Terraform and Vault.
The following components are currently pluggable within Nomad:
Architecture
The Nomad plugin framework uses the go-plugin project to expose a language independent plugin interface. Plugins implement a set of gRPC services and methods which Nomad manages by running the plugin and calling the implemented RPCs. This means that plugins are free to be implemented in the author's language of choice.
To make plugin development easier, a set of go interfaces and structs exist for each plugin type that abstract away go-plugin and the gRPC interface. The guides in this documentation reference these abstractions for ease of use.