Nomad
meta Block
Placement | job -> meta job -> group -> meta job -> group -> task -> meta |
The meta
block allows for user-defined arbitrary key-value pairs. It is
possible to use the meta
block at the job, group, or task level.
job "docs" {
meta {
my-key = "my-value"
}
group "example" {
meta {
my-key = "my-value"
}
task "server" {
meta {
my-key = "my-value"
}
}
}
}
Metadata is merged up the job specification, so metadata defined at the job level applies to all groups and tasks within that job. Metadata defined at the group layer applies to all tasks within that group.
Meta values are made available inside tasks as runtime environment variables.
meta
Parameters
The "parameters" for the meta
block can be any key-value. The keys and values
are both of type string
, but they can be specified as other types. They will
automatically be converted to strings. Any character in a key other than
[A-Za-z0-9_.]
will be converted to _
.
meta
Examples
The following examples only show the meta
blocks. Remember that the
meta
block is only valid in the placements listed above.
Coercion
This example shows the different ways to specify key-value pairs. Internally, these values will be stored as their string representation. No type information is preserved.
meta {
key = "true"
key = true
key = 1.4
key = "1.4"
}
Interpolation
This example shows using Nomad interpolation to populate environment variables.
meta {
class = "${node.class}"
}
Meta keys with dots
Meta keys that aren't valid HCLv2 identifiers, like ones containing .
, require an alternative map assignment syntax.
meta = {
"project.team" = "sre"
}
meta
Usage Examples
Templates
To make use of a meta
value in a template, refer to its environment variable
form.
template {
destination = "local/out.txt"
data = <<EOH
{{ env "NOMAD_META_mykey" }}
EOH
}