open-nomad/website/pages/docs/internals/plugins/index.mdx

33 lines
1.2 KiB
Plaintext
Raw Normal View History

2019-03-04 14:04:53 +00:00
---
2020-02-06 23:45:31 +00:00
layout: docs
page_title: Plugins
sidebar_title: Plugins
description: Learn about how external plugins work in Nomad.
2019-03-04 14:04:53 +00:00
---
# Plugins
Nomad 0.9 introduced 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:
2019-03-04 14:04:53 +00:00
2020-02-06 23:45:31 +00:00
- [Task Drivers](/docs/internals/plugins/task-drivers)
- [Devices](/docs/internals/plugins/devices)
2019-03-04 14:04:53 +00:00
# Architecture
The Nomad plugin framework uses the [go-plugin][goplugin] project to expose
2019-05-15 19:02:16 +00:00
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.
2019-03-04 14:04:53 +00:00
To make plugin development easier, a set of go interfaces and structs exist for
2019-05-15 19:02:16 +00:00
each plugin type that abstract away go-plugin and the gRPC interface. The
2019-03-04 14:04:53 +00:00
guides in this documentation reference these abstractions for ease of use.
[goplugin]: https://github.com/hashicorp/go-plugin