mirror of
https://github.com/kemko/nomad.git
synced 2026-01-04 09:25:46 +03:00
* create plugin author guide; remove concepts/plugins * style guide; update links * update cni redirect * move host-volume plugin to /plugins/. Add arch host volume content. * Apply Jeff's style guide updates Co-authored-by: Jeff Boruszak <104028618+boruszak@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Jeff Boruszak <104028618+boruszak@users.noreply.github.com> * Create Base plugin API section, link to BasePlugin interface --------- Co-authored-by: Jeff Boruszak <104028618+boruszak@users.noreply.github.com>
36 lines
1.5 KiB
Plaintext
36 lines
1.5 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: Nomad plugin authoring guide
|
|
description: |-
|
|
Expand Nomad functionality by authoring your own plugins.
|
|
---
|
|
|
|
# Nomad plugin authoring guide
|
|
|
|
Nomad implements a plugin framework that lets you 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:
|
|
|
|
- [Device](/nomad/plugins/author/device): Extend workload functionality with a
|
|
custom hardware device.
|
|
- [Host volume](/nomad/plugins/author/host-volume): Extend workload storage
|
|
functionality with a plugin specific to your local storage environment.
|
|
- [Task driver](/nomad/plugins/author/task-driver): Extend task execution
|
|
functionality with a custom task driver.
|
|
|
|
## Architecture
|
|
|
|
The Nomad task driver and device plugin framework uses the [go-plugin][goplugin]
|
|
project to expose a language-independent plugin interface. Plugins implement a
|
|
set of gRPC services and methods that Nomad manages by running the plugin and
|
|
calling the implemented RPCs. As a result, plugins are free to be implemented
|
|
in the author's language of choice. To facilitate plugin development, a set of
|
|
Go interfaces and structs exist for each plugin type that abstracts away
|
|
go-plugin and the gRPC interface. The guides in this documentation reference
|
|
these abstractions for ease of use.
|
|
|
|
[goplugin]: https://github.com/hashicorp/go-plugin
|