From c6603cddee9710c7cbec59fc15ba9fde316ed30d Mon Sep 17 00:00:00 2001 From: Seth Vargo Date: Mon, 31 Oct 2016 00:05:05 -0400 Subject: [PATCH] Add template example --- .../docs/job-specification/template.html.md | 108 ++++++++++++++++++ website/source/layouts/docs.erb | 3 + 2 files changed, 111 insertions(+) create mode 100644 website/source/docs/job-specification/template.html.md diff --git a/website/source/docs/job-specification/template.html.md b/website/source/docs/job-specification/template.html.md new file mode 100644 index 000000000..cddc42214 --- /dev/null +++ b/website/source/docs/job-specification/template.html.md @@ -0,0 +1,108 @@ +--- +layout: "docs" +page_title: "template Stanza - Job Specification" +sidebar_current: "docs-job-specification-template" +description: |- + The "template" block instantiates an instance of a template renderer. This + creates a convenient way to ship configuration files that are populated from + Consul data, Vault secrets, or just general configurations within a Nomad + task. +--- + +# `template` Stanza + + + + + + +
Placement + job -> group -> task -> **template** +
+ +The `template` block instantiates an instance of a template renderer. This +creates a convenient way to ship configuration files that are populated from +Consul data, Vault secrets, or just general configurations within a Nomad task. + +```hcl +job "docs" { + group "example" { + task "server" { + template { + source = "local/redis.conf.tpl" + destination = "local/redis.conf" + change_mode = "signal" + change_signal = "SIGNINT" + } + } + } +} +``` + +Nomad is utilizes a tool called [Consul Template][ct]. For a full list of the +API template functions, please see the [Consul Template README][ct]. + +## `template` Parameters + +- `source` `(string: "")` - Specifies the path to the template to be rendered. + One of `source` or `data` must be specified, but not both. This source can + optionally be fetched using an [`artifact`][artifact] resource. + +- `destination` `(string: required)` - Specifies the location where the resulting template should be rendered, relative to the task directory. + +- `data` `(string: "")` - Specifies the raw template to execute. One of `source` + or `data` must be specified, but not both. This is useful for smaller + templates, but we recommend using `source` for larger templates. + +- `change_mode` `(string: "restart")` - Specifies the behavior Nomad should take if the Vault token changes. The possible values are: + + - `"noop"` - take no action (continue running the task) + - `"restart"` - restart the task as per the task's [restart policy][restart] + - `"signal"` - send a configurable signal to the task + +- `change_signal` `(string: "")` - Specifies the signal to send to the task as a + string like `"SIGUSR1"` or `"SIGINT"`. This option is required if the + `change_mode` is `signal`. + +- `splay` `(string: "5s")` - Specifies a random amount of time to wait between + 0ms and the given splay value before invoking the change mode. This is + specified using a label suffix like "30s" or "1h", and is often used to + prevent a thundering herd problem where all task instances restart at the same + time. + +## `template` Examples + +The following examples only show the `template` stanzas. Remember that the +`template` stanza is only valid in the placements listed above. + +### Inline Template + +This example uses an inline template to render a controlled file to disk. This +file watches various keys in Consul for changes: + +```hcl +template { + data = "---\nkey: {{ key \"service/my-key\" }}" + destination = "local/file.yml" +} +``` + +### Remote Template + +This example uses an [`artifact`][artifact] stanza to download an input template +before passing it to the template engine: + +```hcl +artifact { + source = "https://example.com/file.yml.tpl" + destination = "local/file.yml.tpl" +} + +template { + source = "local/file.yml.tpl" + destination = "local/file.yml" +} +``` + +[ct]: https://github.com/hashicorp/consul-template "Consul Template by HashiCorp" +[artifact]: /docs/job-specification/artifact.html "Nomad artifact Job Specification" diff --git a/website/source/layouts/docs.erb b/website/source/layouts/docs.erb index a18dac5da..390b0b852 100644 --- a/website/source/layouts/docs.erb +++ b/website/source/layouts/docs.erb @@ -81,6 +81,9 @@ > task + > + template + > update