Base Plugin
The base plugin is a special plugin type implemented by all plugins. It allows for common plugin operations such as defining a configuration schema and version information.
Plugin API
PluginInfo() (*PluginInfoResponse, error)
A PluginInfoResponse
contains meta data about the plugin.
ConfigSchema() (*hclspec.Spec, error)
The ConfigSchema
function allows a plugin to tell Nomad the schema for its
configuration. This configuration is given in a plugin block of
the client configuration. The schema is defined with the hclspec
package.
SetConfig(config *Config) error
The SetConfig
function is called when starting the plugin for the first
time. The Config
given has two different configuration fields. The first
PluginConfig
, is an encoded configuration from the plugin
block of the
client config. The second, AgentConfig
, is the Nomad agent's configuration
which is given to all plugins.
HCL Specifications
*hclspec.Spec
is a struct that defines the schema to validate an HCL entity
against. The full documentation of the different hcl attribute types can be
found on the hclspec godoc.
For a basic example, lets look at the driver configuration for the raw_exec driver:
The config
block is what is validated against the hclspec.Spec
. It has two
keys, command which takes a string attribute and args which takes an array
attribute. The corresponding *hclspec.Spec
would be: