Update docs on interpreted
Uses "property" instead of overloading "attribute"
This commit is contained in:
parent
d92c944b42
commit
170668d128
|
@ -17,7 +17,7 @@ The syntax for interpreting variables is `${variable}`. An example and a
|
||||||
comprehensive list of interpretable fields can be seen below:
|
comprehensive list of interpretable fields can be seen below:
|
||||||
|
|
||||||
```hcl
|
```hcl
|
||||||
task "demo" {
|
task "docs" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
# Drivers support interpreting node attributes and runtime environment
|
# Drivers support interpreting node attributes and runtime environment
|
||||||
|
@ -61,100 +61,126 @@ task "demo" {
|
||||||
## Node Variables <a id="interpreted_node_vars"></a>
|
## Node Variables <a id="interpreted_node_vars"></a>
|
||||||
|
|
||||||
Below is a full listing of node attributes that are interpretable. These
|
Below is a full listing of node attributes that are interpretable. These
|
||||||
attributes are Interpreted by __both__ constraints and within the task and
|
attributes are interpreted by __both__ constraints and within the task and
|
||||||
driver.
|
driver.
|
||||||
|
|
||||||
<table class="table table-bordered table-striped">
|
<table class="table table-bordered table-striped">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Variable</th>
|
<th>Variable</th>
|
||||||
<th>Description</th>
|
<th>Description</th>
|
||||||
<th>Example</th>
|
<th>Example Value</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${node.unique.id}</td>
|
<td><tt>${node.unique.id}</tt></td>
|
||||||
<td>The 36 character unique client node identifier</td>
|
<td>36 character unique client identifier</td>
|
||||||
<td>9afa5da1-8f39-25a2-48dc-ba31fd7c0023</td>
|
<td><tt>9afa5da1-8f39-25a2-48dc-ba31fd7c0023</tt></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${node.datacenter}</td>
|
<td><tt>${node.datacenter}</tt></td>
|
||||||
<td>The client node's datacenter</td>
|
<td>Client's datacenter</td>
|
||||||
<td>dc1</td>
|
<td><tt>dc1</tt></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${node.unique.name}</td>
|
<td><tt>${node.unique.name}</tt></td>
|
||||||
<td>The client node's name</td>
|
<td>Client's name</td>
|
||||||
<td>nomad-client-10-1-2-4</td>
|
<td><tt>nomad-client-10-1-2-4</tt></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${node.class}</td>
|
<td><tt>${node.class}</tt></td>
|
||||||
<td>The client node's class</td>
|
<td>Client's class</td>
|
||||||
<td>linux-64bit</td>
|
<td><tt>linux-64bit</tt></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${attr."key"}</td>
|
<td><tt>${attr.<property>}</tt></td>
|
||||||
<td>The attribute given by `key` on the client node.</td>
|
<td>Property given by <tt>property</tt> on the client</td>
|
||||||
<td>platform.aws.instance-type:r3.large</td>
|
<td><tt>${attr.arch} => amd64</tt></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${meta."key"}</td>
|
<td><tt>${meta.<key>}</tt></td>
|
||||||
<td>The metadata value given by `key` on the client node.</td>
|
<td>Metadata value given by <tt>key</tt> on the client</td>
|
||||||
<td></td>
|
<td><tt>${meta.foo} => bar</tt></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
Below is a table documenting common node attributes:
|
Below is a table documenting common node properties:
|
||||||
|
|
||||||
<table class="table table-bordered table-striped">
|
<table class="table table-bordered table-striped">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Attribute</th>
|
<th>Property</th>
|
||||||
<th>Description</th>
|
<th>Description</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>arch</td>
|
<td><tt>arch</tt></td>
|
||||||
<td>CPU architecture of the client. Examples: `amd64`, `386`</td>
|
<td>CPU architecture of the client (e.g. <tt>amd64</tt>, <tt>386</tt>)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>consul.datacenter</td>
|
<td><tt>consul.datacenter</tt></td>
|
||||||
<td>The Consul datacenter of the client node if Consul found</td>
|
<td>The Consul datacenter of the client (if Consul is found)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>cpu.numcores</td>
|
<td><tt>cpu.numcores</tt></td>
|
||||||
<td>Number of CPU cores on the client</td>
|
<td>Number of CPU cores on the client</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>driver."key"</td>
|
<td><tt>driver.<property></tt></td>
|
||||||
<td>See the [task drivers](/docs/drivers/index.html) for attribute documentation</td>
|
<td>See the [task drivers](/docs/drivers/index.html) for property documentation</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>unique.hostname</td>
|
<td><tt>unique.hostname</tt></td>
|
||||||
<td>Hostname of the client</td>
|
<td>Hostname of the client</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>kernel.name</td>
|
<td><tt>kernel.name</tt></td>
|
||||||
<td>Kernel of the client. Examples: `linux`, `darwin`</td>
|
<td>Kernel of the client (e.g. <tt>linux</tt>, <tt>darwin</tt>)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>kernel.version</td>
|
<td><tt>kernel.version</tt></td>
|
||||||
<td>Version of the client kernel. Examples: `3.19.0-25-generic`, `15.0.0`</td>
|
<td>Version of the client kernel (e.g. <tt>3.19.0-25-generic</tt>, <tt>15.0.0</tt>)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>platform.aws.ami-id</td>
|
<td><tt>platform.aws.ami-id</tt></td>
|
||||||
<td>On EC2, the AMI ID of the client node</td>
|
<td>AMI ID of the client (if on AWS EC2)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>platform.aws.instance-type</td>
|
<td><tt>platform.aws.instance-type</tt></td>
|
||||||
<td>On EC2, the instance type of the client node</td>
|
<td>Instance type of the client (if on AWS EC2)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>os.name</td>
|
<td><tt>os.name</tt></td>
|
||||||
<td>Operating system of the client. Examples: `ubuntu`, `windows`, `darwin`</td>
|
<td>Operating system of the client (e.g. <tt>ubuntu</tt>, <tt>windows</tt>, <tt>darwin</tt>)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>os.version</td>
|
<td><tt>os.version</tt></td>
|
||||||
<td>Version of the client OS</td>
|
<td>Version of the client OS</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
Here are some examples of using node attributes and properties in a job file:
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
job "docs" {
|
||||||
|
# This will constrain this job to only run on 64-bit clients.
|
||||||
|
constraint {
|
||||||
|
attribute = "${attr.arch}"
|
||||||
|
value = "amd64"
|
||||||
|
}
|
||||||
|
|
||||||
|
# This will restrict the job to only run on clients with 4 or more cores.
|
||||||
|
# Note: you may also declare a resource requirement for CPU for a task.
|
||||||
|
constraint {
|
||||||
|
attribute = "${cpu.numcores}"
|
||||||
|
operator = ">="
|
||||||
|
value = "4"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Only run this job on a memory-optimized AWS EC2 instance.
|
||||||
|
constraint {
|
||||||
|
attribute = "${attr.platform.aws.instance-type}"
|
||||||
|
value = "m4.xlarge"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Environment Variables <a id="interpreted_env_vars"></a>
|
## Environment Variables <a id="interpreted_env_vars"></a>
|
||||||
|
|
||||||
The following are runtime environment variables that describe the environment
|
The following are runtime environment variables that describe the environment
|
||||||
|
@ -167,68 +193,63 @@ a particular node and as such can not be used in constraints.
|
||||||
<th>Description</th>
|
<th>Description</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_ALLOC_DIR}</td>
|
<td><tt>${NOMAD_ALLOC_DIR}</tt></td>
|
||||||
<td>The path to the shared `alloc/` directory. See
|
<td>The path to the shared <tt>alloc/</tt> directory. See [here](/docs/jobspec/environment.html#task_dir) for more information.</td>
|
||||||
[here](/docs/jobspec/environment.html#task_dir) for more
|
|
||||||
information.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_TASK_DIR}</td>
|
<td><tt>${NOMAD_TASK_DIR}</tt></td>
|
||||||
<td>The path to the task `local/` directory. See
|
<td>The path to the task <tt>local/</tt> directory. See [here](/docs/jobspec/environment.html#task_dir) for more information.</td>
|
||||||
[here](/docs/jobspec/environment.html#task_dir) for more
|
|
||||||
information.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_MEMORY_LIMIT}</td>
|
<td><tt>${NOMAD_MEMORY_LIMIT}</tt></td>
|
||||||
<td>The memory limit in MBytes for the task</td>
|
<td>The memory limit in MBytes for the task</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_CPU_LIMIT}</td>
|
<td><tt>${NOMAD_CPU_LIMIT}</tt></td>
|
||||||
<td>The CPU limit in MHz for the task</td>
|
<td>The CPU limit in MHz for the task</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_ALLOC_ID}</td>
|
<td><tt>${NOMAD_ALLOC_ID}</tt></td>
|
||||||
<td>The allocation ID of the task</td>
|
<td>The allocation ID of the task</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_ALLOC_NAME}</td>
|
<td><tt>${NOMAD_ALLOC_NAME}</tt></td>
|
||||||
<td>The allocation name of the task</td>
|
<td>The allocation name of the task</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_ALLOC_INDEX}</td>
|
<td><tt>${NOMAD_ALLOC_INDEX}</tt></td>
|
||||||
<td>The allocation index; useful to distinguish instances of task groups</td>
|
<td>The allocation index; useful to distinguish instances of task groups</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_TASK_NAME}</td>
|
<td><tt>${NOMAD_TASK_NAME}</tt></td>
|
||||||
<td>The task's name</td>
|
<td>The task's name</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_IP_"label"}</td>
|
<td><tt>${NOMAD_IP_<label>}</tt></td>
|
||||||
<td>The IP for the given port `label`. See
|
<td>The IP for the given port <tt>label</tt>. See
|
||||||
[here](/docs/jobspec/networking.html) for more information.</td>
|
[here](/docs/jobspec/networking.html) for more information.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_PORT_"label"}</td>
|
<td><tt>${NOMAD_PORT_<label>}</tt></td>
|
||||||
<td>The port for the port `label`. See [here](/docs/jobspec/networking.html)
|
<td>The port for the port <tt>label</tt>. See [here](/docs/jobspec/networking.html) for more information.</td>
|
||||||
for more information.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_ADDR_"label"}</td>
|
<td><tt>${NOMAD_ADDR_<label>}</tt></td>
|
||||||
<td>The `ip:port` pair for the given port `label`. See
|
<td>The <tt>ip:port</tt> pair for the given port <tt>label</tt>. See
|
||||||
[here](/docs/jobspec/networking.html) for more information.</td>
|
[here](/docs/jobspec/networking.html) for more information.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_HOST_PORT_"label"}</td>
|
<td><tt>${NOMAD_HOST_PORT_<label>}</tt></td>
|
||||||
<td>The port on the host if port forwarding is being used for the port
|
<td>The port on the host if port forwarding is being used for the port
|
||||||
`label`. See [here](/docs/jobspec/networking.html#mapped_ports) for more
|
<tt>label</tt>. See [here](/docs/jobspec/networking.html#mapped_ports) for more
|
||||||
information.</td>
|
information.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${NOMAD_META_"key"}</td>
|
<td><tt>${NOMAD_META_<key>}</tt></td>
|
||||||
<td>The metadata value given by `key` on the task's metadata</td>
|
<td>The metadata value given by <tt>key</tt> on the task's metadata</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>${"env_key"}</td>
|
<td><tt>${"env_key"}</tt></td>
|
||||||
<td>Interpret an environment variable with key `env_key` set on the task.</td>
|
<td>Interpret an environment variable with key <tt>env_key</tt> set on the task.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
Loading…
Reference in a new issue