github.com/ferranbt/nomad@v0.9.3-0.20190607002617-85c449b7667c/website/source/docs/internals/plugins/index.html.md (about)

     1  ---
     2  layout: "docs"
     3  page_title: "Plugins"
     4  sidebar_current: "docs-internals-plugins"
     5  description: |-
     6    Learn about how external plugins work in Nomad.
     7  ---
     8  
     9  # Plugins
    10  
    11  Nomad 0.9 introduced a plugin framework which allows users to extend the
    12  functionality of some components within Nomad. The design of the plugin system
    13  is inspired by the lessons learned from plugin systems implemented in other
    14  HashiCorp products such as Terraform and Vault.
    15  
    16  The following components are currently pluggable within Nomad:
    17  
    18  - [Task Drivers](/docs/internals/plugins/task-drivers.html)
    19  - [Devices](/docs/internals/plugins/devices.html)
    20  
    21  # Architecture
    22  
    23  The Nomad plugin framework uses the [go-plugin][goplugin] project to expose
    24  a language independent plugin interface. Plugins implement a set of gRPC
    25  services and methods which Nomad manages by running the plugin and calling the
    26  implemented RPCs. This means that plugins are free to be implemented in the
    27  author's language of choice.
    28  
    29  To make plugin development easier, a set of go interfaces and structs exist for
    30  each plugin type that abstract away go-plugin and the gRPC interface. The
    31  guides in this documentation reference these abstractions for ease of use.
    32  
    33  [goplugin]: https://github.com/hashicorp/go-plugin