description="TPM 2.0 node attestation plugin. When set, automatically enables security.tpm2 and grants the spire-agent user access to the TPM device.";
description="The trust domain that this agent belongs to";
description="The trust domain that this agent belongs to (should be no more than 255 characters)";
example="example.com";
};
data_dir=lib.mkOption{
type=lib.types.str;
default="$STATE_DIRECTORY";
description="The directory where the SPIRE agent stores its data";
description="A directory the agent can use for its runtime data";
};
server_address=lib.mkOption{
type=lib.types.str;
description="The address of the SPIRE server";
description="DNS name or IP address of the SPIRE server";
example="server.example.com";
};
server_port=lib.mkOption{
type=lib.types.port;
default=8081;
description="The port on which the SPIRE server is listening";
description="Port number of the SPIRE server";
};
socket_path=lib.mkOption{
type=lib.types.path;
default="/run/spire/agent/public/api.sock";
description="The path to the SPIRE agent socket";
description="Location to bind the SPIRE Agent API socket (Unix only)";
};
join_token=lib.mkOption{
type=lib.types.nullOrlib.types.str;
default=null;
description="An optional token which has been generated by the SPIRE server";
};
join_token_file=lib.mkOption{
type=lib.types.nullOrlib.types.str;
default=null;
description="Path to a file containing an optional join token which has been generated by the SPIRE server";
};
};
plugins=lib.mkOption{
@@ -55,8 +65,39 @@ in
Built-in plugin types can be found at [the plugin types documentation](https://spiffe.io/docs/latest/deploying/spire_agent/#plugin-types).
See [plugin configuration](https://spiffe.io/docs/latest/deploying/spire_agent/#plugin-configuration) for options and how to configure external plugins.
'';
# TODO: We can probably enforce some of these constraints with a submodule
type=format.type;
type=lib.types.submodule{
freeformType=format.type;
options.NodeAttestor=lib.mkOption{
default={};
description=''
Gathers information used to attest the agent's identity to the server. Generally paired with a server plugin of the same type.
'';
type=lib.types.submodule{
freeformType=format.type;
options.join_token=lib.mkOption{
default=null;
description=''
The `join_token` is responsible for attesting the agent's identity using a one-time-use pre-shared key.
Must be used in conjunction with the server-side `join_token` plugin.
'';
type=lib.types.nullOr(
lib.types.submodule{
freeformType=format.type;
options.plugin_data=lib.mkOption{
type=lib.types.submodule{};
default={};
description=''
As a special case for node attestors, the join token itself is configured by a CLI flag (`-joinToken`)
or by configuring `join_token` in the agent's main config body.
'';
};
}
);
};
};
};
};
example={
KeyManager.memory.plugin_data={};
NodeAttestor.join_token.plugin_data={};
@@ -71,7 +112,7 @@ in
configFile=lib.mkOption{
type=lib.types.path;
defaultText="Config file generated from services.spire.agent.settings";
Built-in plugin types can be found at [the plugin types documentation](https://spiffe.io/docs/latest/deploying/spire_server/#plugin-types).
See [plugin configuration](https://spiffe.io/docs/latest/deploying/spire_server/#plugin-configuration) for options and how to configure external plugins.
'';
# TODO: We can probably enforce some of these constraints with a submodule
type=lib.types.submodule{
freeformType=format.type;
options.NodeAttestor=lib.mkOption{
default={};
description=''
NodeAttestor plugins implement validation logic for nodes attempting to assert their identity.
They are generally paired with an agent plugin of the same type.
See [the documentation](https://spiffe.io/docs/latest/deploying/spire_server/#nodeattestor)
for the list of built-in NodeAttestor plugins.
'';
type=lib.types.submodule{
freeformType=format.type;
options.join_token=lib.mkOption{
default=null;
description="Join token based node attestation.";
type=lib.types.nullOr(
lib.types.submodule{
freeformType=format.type;
options.plugin_data=lib.mkOption{
type=format.type;
default={};
description="Plugin data for the join_token NodeAttestor.";