2015-09-18 06:39:31 +00:00
|
|
|
---
|
2020-02-06 23:45:31 +00:00
|
|
|
layout: docs
|
|
|
|
page_title: 'Commands: job run'
|
|
|
|
description: |
|
2018-03-22 17:56:06 +00:00
|
|
|
The job run command is used to run a new job.
|
2015-09-18 06:39:31 +00:00
|
|
|
---
|
|
|
|
|
2018-03-22 17:56:06 +00:00
|
|
|
# Command: job run
|
2019-10-22 13:44:00 +00:00
|
|
|
|
2018-03-22 18:09:26 +00:00
|
|
|
**Alias: `nomad run`**
|
2015-09-18 06:39:31 +00:00
|
|
|
|
2018-03-22 17:56:06 +00:00
|
|
|
The `job run` command is used to submit new jobs to Nomad or to update existing
|
2019-10-22 13:44:00 +00:00
|
|
|
jobs. Job files must conform to the [job specification] format.
|
2015-09-18 06:39:31 +00:00
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2019-10-22 13:44:00 +00:00
|
|
|
```plaintext
|
2018-03-22 17:56:06 +00:00
|
|
|
nomad job run [options] <job file>
|
2015-09-18 06:39:31 +00:00
|
|
|
```
|
|
|
|
|
2018-03-22 17:56:06 +00:00
|
|
|
The `job run` command requires a single argument, specifying the path to a file
|
2019-10-22 13:44:00 +00:00
|
|
|
containing a valid [job specification]. This file will be read and the job will
|
|
|
|
be submitted to Nomad for scheduling. If the supplied path is "-", the job file
|
|
|
|
is read from STDIN. Otherwise it is read from the file at the supplied path or
|
|
|
|
downloaded and read from URL specified. Nomad downloads the job file using
|
|
|
|
[`go-getter`] and supports `go-getter` syntax.
|
2016-06-21 20:46:42 +00:00
|
|
|
|
2016-03-15 18:28:31 +00:00
|
|
|
By default, on successful job submission the run command will enter an
|
2015-09-18 06:39:31 +00:00
|
|
|
interactive monitor and display log information detailing the scheduling
|
2021-11-04 15:33:09 +00:00
|
|
|
decisions, placement information, and [deployment status] for the provided job
|
|
|
|
if applicable ([`batch`] and [`system`] jobs don't create deployments). The monitor will
|
2021-06-14 23:42:38 +00:00
|
|
|
exit after scheduling and deployment have finished or failed.
|
2015-09-18 06:39:31 +00:00
|
|
|
|
2015-09-21 19:26:16 +00:00
|
|
|
On successful job submission and scheduling, exit code 0 will be returned. If
|
|
|
|
there are job placement issues encountered (unsatisfiable constraints, resource
|
|
|
|
exhaustion, etc), then the exit code will be 2. Any other errors, including
|
2021-12-09 14:09:28 +00:00
|
|
|
deployment failures, client connection issues, or internal errors, are indicated
|
|
|
|
by exit code 1.
|
2015-09-21 19:26:16 +00:00
|
|
|
|
2020-11-19 15:57:05 +00:00
|
|
|
If the job has specified the region, the `-region` flag and `$NOMAD_REGION`
|
2016-10-11 19:31:40 +00:00
|
|
|
environment variable are overridden and the job's region is used.
|
2016-06-07 18:33:55 +00:00
|
|
|
|
2019-11-18 21:05:06 +00:00
|
|
|
The run command will set the `consul_token` of the job based on the following
|
|
|
|
precedence, going from highest to lowest: the `-consul-token` flag, the
|
2020-02-13 16:02:36 +00:00
|
|
|
`$CONSUL_HTTP_TOKEN` environment variable and finally the value in the job file.
|
2019-11-18 21:05:06 +00:00
|
|
|
|
2016-08-17 04:32:25 +00:00
|
|
|
The run command will set the `vault_token` of the job based on the following
|
|
|
|
precedence, going from highest to lowest: the `-vault-token` flag, the
|
|
|
|
`$VAULT_TOKEN` environment variable and finally the value in the job file.
|
|
|
|
|
2020-11-19 21:38:08 +00:00
|
|
|
When ACLs are enabled, this command requires a token with the `submit-job`
|
|
|
|
capability for the job's namespace. Jobs that mount CSI volumes require a
|
|
|
|
token with the `csi-mount-volume` capability for the volume's namespace. Jobs
|
|
|
|
that mount host volumes require a token with the `host_volume` capability for
|
|
|
|
that volume.
|
|
|
|
|
2015-09-18 06:39:31 +00:00
|
|
|
## General Options
|
|
|
|
|
2020-02-06 23:45:31 +00:00
|
|
|
@include 'general_options.mdx'
|
2015-09-18 06:39:31 +00:00
|
|
|
|
|
|
|
## Run Options
|
|
|
|
|
2019-10-22 13:44:00 +00:00
|
|
|
- `-check-index`: If set, the job is only registered or
|
2016-10-11 19:31:40 +00:00
|
|
|
updated if the passed job modify index matches the server side version.
|
2016-06-17 00:23:49 +00:00
|
|
|
If a check-index value of zero is passed, the job is only registered if it does
|
|
|
|
not yet exist. If a non-zero value is passed, it ensures that the job is being
|
|
|
|
updated from a known state. The use of this flag is most common in conjunction
|
2019-10-22 13:44:00 +00:00
|
|
|
with [`job plan` command].
|
2016-06-08 23:48:02 +00:00
|
|
|
|
2019-10-22 13:44:00 +00:00
|
|
|
- `-detach`: Return immediately instead of monitoring. A new evaluation ID
|
2016-05-26 01:52:14 +00:00
|
|
|
will be output, which can be used to examine the evaluation using the
|
2019-10-22 13:44:00 +00:00
|
|
|
[eval status] command.
|
2015-09-18 06:39:31 +00:00
|
|
|
|
2021-11-23 08:23:31 +00:00
|
|
|
- `-eval-priority`: Override the priority of the evaluations produced as a result
|
|
|
|
of this job submission. By default, this is set to the priority of the job.
|
|
|
|
|
2022-04-21 20:20:36 +00:00
|
|
|
- `-json`: Parses the job file as JSON. If the outer object has a Job field,
|
|
|
|
such as from "nomad job inspect" or "nomad run -output", the value of the
|
2022-04-22 22:57:27 +00:00
|
|
|
field is used as the job. See [JSON Jobs] for details.
|
2022-04-21 20:20:36 +00:00
|
|
|
|
2022-09-01 14:42:08 +00:00
|
|
|
- `-hcl1`: If set, HCL1 parser is used for parsing the job spec. Takes
|
|
|
|
precedence over `-hcl2-strict`.
|
2021-04-07 16:07:33 +00:00
|
|
|
|
2021-11-04 15:33:09 +00:00
|
|
|
- `-hcl2-strict`: Whether an error should be produced from the HCL2 parser where
|
|
|
|
a variable has been supplied which is not defined within the root variables.
|
2022-09-01 14:42:08 +00:00
|
|
|
Defaults to true, but ignored if `-hcl1` is defined.
|
2021-11-04 15:33:09 +00:00
|
|
|
|
2019-10-22 13:44:00 +00:00
|
|
|
- `-output`: Output the JSON that would be submitted to the HTTP API without
|
2017-09-19 14:47:10 +00:00
|
|
|
submitting the job.
|
|
|
|
|
2019-10-22 13:44:00 +00:00
|
|
|
- `-policy-override`: Sets the flag to force override any soft mandatory
|
|
|
|
Sentinel policies.
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2020-06-16 17:53:13 +00:00
|
|
|
- `-preserve-counts`: If set, the existing task group counts will be preserved
|
|
|
|
when updating a job.
|
|
|
|
|
2019-11-18 21:05:06 +00:00
|
|
|
- `-consul-token`: If set, the passed Consul token is stored in the job before
|
|
|
|
sending to the Nomad servers. This allows passing the Consul token without
|
2020-09-22 18:32:29 +00:00
|
|
|
storing it in the job file. This overrides the token found in the
|
|
|
|
`$CONSUL_HTTP_TOKEN` environment variable and that found in the job.
|
2019-11-18 21:05:06 +00:00
|
|
|
|
2021-03-16 18:22:21 +00:00
|
|
|
- `-consul-namespace`: <EnterpriseAlert inline/> If set, any services in the job will be registered into the
|
|
|
|
specified Consul namespace. Any `template` stanza reading from Consul KV will
|
2022-08-05 20:45:30 +00:00
|
|
|
scoped to the specified Consul namespace. If Consul ACLs are enabled and the
|
2022-04-06 17:01:38 +00:00
|
|
|
[`consul` stanza `allow_unauthenticated`] is disabled in the Nomad server configuration, then
|
2021-03-16 18:22:21 +00:00
|
|
|
a Consul token must be supplied with appropriate service and kv Consul ACL policy
|
|
|
|
permissions.
|
|
|
|
|
2022-04-06 17:01:38 +00:00
|
|
|
- `-vault-token`: Used to validate if the user submitting the job has
|
2022-04-22 14:46:34 +00:00
|
|
|
permission to run the job according to its Vault policies. A Vault token must
|
|
|
|
be supplied if the [`vault` stanza `allow_unauthenticated`] is disabled in
|
|
|
|
the Nomad server configuration. If the `-vault-token` flag is set, the passed
|
|
|
|
Vault token is added to the jobspec before sending to the Nomad servers. This
|
|
|
|
allows passing the Vault token without storing it in the job file. This
|
|
|
|
overrides the token found in the `$VAULT_TOKEN` environment variable and the
|
|
|
|
[`vault_token`] field in the job file. This token is cleared from the job
|
|
|
|
after validating and cannot be used within the job executing environment. Use
|
|
|
|
the `vault` stanza when templating in a job with a Vault token.
|
2016-08-17 04:32:25 +00:00
|
|
|
|
2021-04-07 16:07:33 +00:00
|
|
|
- `-vault-namespace`: If set, the passed Vault namespace is stored in the job
|
|
|
|
before sending to the Nomad servers.
|
|
|
|
|
|
|
|
- `-var=<key=value>`: Variable for template, can be used multiple times.
|
|
|
|
|
|
|
|
- `-var-file=<path>`: Path to HCL2 file containing user variables.
|
2020-11-02 17:27:53 +00:00
|
|
|
|
2019-10-22 13:44:00 +00:00
|
|
|
- `-verbose`: Show full information.
|
2016-01-19 23:01:26 +00:00
|
|
|
|
2015-09-18 06:39:31 +00:00
|
|
|
## Examples
|
|
|
|
|
2021-06-09 23:25:47 +00:00
|
|
|
Schedule the job contained in the file `job1.nomad`, monitoring placement and deployment:
|
2015-09-18 06:39:31 +00:00
|
|
|
|
2020-05-18 20:53:06 +00:00
|
|
|
```shell-session
|
|
|
|
$ nomad job run job1.nomad
|
2021-06-09 23:25:47 +00:00
|
|
|
==> 2021-06-09T15:22:58-07:00: Monitoring evaluation "52dee78a"
|
|
|
|
2021-06-09T15:22:58-07:00: Evaluation triggered by job "example"
|
|
|
|
2021-06-09T15:22:58-07:00: Allocation "5e0b39f0" created: node "3e84d3d2", group "group1"
|
|
|
|
==> 2021-06-09T15:22:59-07:00: Monitoring evaluation "52dee78a"
|
|
|
|
2021-06-09T15:22:59-07:00: Evaluation within deployment: "62eb607c"
|
|
|
|
2021-06-09T15:22:59-07:00: Allocation "5e0b39f0" status changed: "pending" -> "running"
|
|
|
|
2021-06-09T15:22:59-07:00: Evaluation status changed: "pending" -> "complete"
|
|
|
|
==> 2021-06-09T15:22:59-07:00: Evaluation "52dee78a" finished with status "complete"
|
|
|
|
==> 2021-06-09T15:22:59-07:00: Monitoring deployment "62eb607c"
|
|
|
|
⠦ Deployment "62eb607c" in progress...
|
|
|
|
|
|
|
|
2021-06-09T15:22:59-07:00
|
|
|
|
ID = 62eb607c
|
|
|
|
Job ID = example
|
|
|
|
Job Version = 0
|
|
|
|
Status = running
|
|
|
|
Description = Deployment is running
|
|
|
|
|
|
|
|
Deployed
|
|
|
|
Task Group Desired Placed Healthy Unhealthy Progress Deadline
|
2021-11-04 15:33:09 +00:00
|
|
|
cache 2 2 1 0 2021-06-09T15:32:58-07:00
|
2021-06-09 23:25:47 +00:00
|
|
|
web 1 1 1 0 2021-06-09T15:32:58-07:00
|
2015-09-18 06:39:31 +00:00
|
|
|
```
|
|
|
|
|
2016-06-17 00:23:49 +00:00
|
|
|
<a id="check-index"></a> Update the job using `check-index`:
|
|
|
|
|
2020-05-18 20:53:06 +00:00
|
|
|
```shell-session
|
|
|
|
$ nomad job run -check-index 5 example.nomad
|
2016-06-08 23:48:02 +00:00
|
|
|
Enforcing job modify index 5: job exists with conflicting job modify index: 6
|
|
|
|
Job not updated
|
|
|
|
|
2018-03-22 17:56:06 +00:00
|
|
|
$ nomad job run -check-index 6 example.nomad
|
2021-06-09 23:25:47 +00:00
|
|
|
==> 2021-06-09T16:57:29-07:00: Monitoring evaluation "5ef16dff"
|
|
|
|
2021-06-09T16:57:29-07:00: Evaluation triggered by job "example"
|
|
|
|
2021-06-09T16:57:29-07:00: Allocation "6ec7d16f" modified: node "6e1f9bf6", group "cache"
|
|
|
|
==> 2021-06-09T16:57:30-07:00: Monitoring evaluation "5ef16dff"
|
|
|
|
2021-06-09T16:57:30-07:00: Evaluation within deployment: "62eb607c"
|
|
|
|
2021-06-09T16:57:30-07:00: Evaluation status changed: "pending" -> "complete"
|
|
|
|
==> 2021-06-09T16:57:30-07:00: Evaluation "5ef16dff" finished with status "complete"
|
|
|
|
==> 2021-06-09T16:57:30-07:00: Monitoring deployment "62eb607c"
|
2021-07-09 23:27:55 +00:00
|
|
|
✓ Deployment "62eb607c" successful
|
2021-11-04 15:33:09 +00:00
|
|
|
|
2021-06-09 23:25:47 +00:00
|
|
|
2021-06-09T16:57:30-07:00
|
|
|
|
ID = 62eb607c
|
|
|
|
Job ID = example
|
|
|
|
Job Version = 2
|
|
|
|
Status = successful
|
|
|
|
Description = Deployment completed successfully
|
|
|
|
|
|
|
|
Deployed
|
|
|
|
Task Group Desired Placed Healthy Unhealthy Progress Deadline
|
|
|
|
cache 1 1 1 0 2021-06-09T17:07:00-07:00
|
2016-06-08 23:48:02 +00:00
|
|
|
```
|
|
|
|
|
2015-09-21 19:05:48 +00:00
|
|
|
Schedule the job contained in `job1.nomad` and return immediately:
|
2015-09-18 06:39:31 +00:00
|
|
|
|
2020-05-18 20:53:06 +00:00
|
|
|
```shell-session
|
|
|
|
$ nomad job run -detach job1.nomad
|
2020-08-20 15:38:03 +00:00
|
|
|
Job registration successful
|
|
|
|
Evaluation ID: e18819c1-b83d-dc17-5e7b-b6f264990283
|
2015-09-18 06:39:31 +00:00
|
|
|
```
|
2015-09-21 19:05:48 +00:00
|
|
|
|
2016-05-26 01:52:14 +00:00
|
|
|
Schedule a job which cannot be successfully placed. This results in a scheduling
|
|
|
|
failure and the specifics of the placement are printed:
|
2015-09-21 19:05:48 +00:00
|
|
|
|
2020-05-18 20:53:06 +00:00
|
|
|
```shell-session
|
|
|
|
$ nomad job run failing.nomad
|
2021-06-09 23:25:47 +00:00
|
|
|
==> 2021-06-09T16:49:00-07:00: Monitoring evaluation "2ae0e6a5"
|
|
|
|
2021-06-09T16:49:00-07:00: Evaluation triggered by job "example"
|
|
|
|
==> 2021-06-09T16:49:01-07:00: Monitoring evaluation "2ae0e6a5"
|
|
|
|
2021-06-09T16:49:01-07:00: Evaluation within deployment: "db0c5e57"
|
|
|
|
2021-06-09T16:49:01-07:00: Evaluation status changed: "pending" -> "complete"
|
|
|
|
==> 2021-06-09T16:49:01-07:00: Evaluation "2ae0e6a5" finished with status "complete" but failed to place all allocations:
|
|
|
|
2021-06-09T16:49:01-07:00: Task Group "cache" (failed to place 1 allocation):
|
2016-05-26 01:52:14 +00:00
|
|
|
* Class "foo" filtered 1 nodes
|
|
|
|
* Constraint "${attr.kernel.name} = linux" filtered 1 nodes
|
2021-06-09 23:25:47 +00:00
|
|
|
2021-06-09T16:49:01-07:00: Evaluation "67493a64" waiting for additional capacity to place remainder
|
|
|
|
==> 2021-06-09T16:49:01-07:00: Monitoring deployment "db0c5e57"
|
|
|
|
⠧ Deployment "db0c5e57" in progress...
|
|
|
|
|
|
|
|
2021-06-09T16:49:03-07:00
|
|
|
|
ID = db0c5e57
|
|
|
|
Job ID = example
|
|
|
|
Job Version = 8
|
|
|
|
Status = running
|
|
|
|
Description = Deployment is running
|
|
|
|
|
|
|
|
Deployed
|
|
|
|
Task Group Desired Placed Healthy Unhealthy Progress Deadline
|
|
|
|
cache 1 0 0 0 N/A
|
2015-09-21 19:05:48 +00:00
|
|
|
```
|
2019-10-22 13:44:00 +00:00
|
|
|
|
2021-06-14 23:42:38 +00:00
|
|
|
Sample output when scheduling a system job, which doesn't create a deployment:
|
|
|
|
|
|
|
|
```shell-session
|
|
|
|
$ nomad job run example.nomad
|
|
|
|
==> 2021-06-14T09:25:08-07:00: Monitoring evaluation "88a91284"
|
|
|
|
2021-06-14T09:25:08-07:00: Evaluation triggered by job "example"
|
|
|
|
2021-06-14T09:25:08-07:00: Allocation "03501797" created: node "7849439f", group "cache"
|
|
|
|
==> 2021-06-14T09:25:09-07:00: Monitoring evaluation "88a91284"
|
|
|
|
2021-06-14T09:25:09-07:00: Evaluation status changed: "pending" -> "complete"
|
|
|
|
==> 2021-06-14T09:25:09-07:00: Evaluation "88a91284" finished with status "complete"
|
|
|
|
```
|
|
|
|
|
2023-01-25 17:31:14 +00:00
|
|
|
[`batch`]: /nomad/docs/schedulers#batch
|
|
|
|
[`consul` stanza `allow_unauthenticated`]: /nomad/docs/configuration/consul#allow_unauthenticated
|
|
|
|
[deployment status]: /nomad/docs/commands/deployment#status
|
|
|
|
[eval status]: /nomad/docs/commands/eval/status
|
2022-04-22 22:57:27 +00:00
|
|
|
[`go-getter`]: https://github.com/hashicorp/go-getter
|
2023-01-25 17:31:14 +00:00
|
|
|
[`job plan` command]: /nomad/docs/commands/job/plan
|
|
|
|
[job specification]: /nomad/docs/job-specification
|
|
|
|
[JSON jobs]: /nomad/api-docs/json-jobs
|
|
|
|
[`system`]: /nomad/docs/schedulers#system
|
|
|
|
[`vault` stanza `allow_unauthenticated`]: /nomad/docs/configuration/vault#allow_unauthenticated
|
|
|
|
[`vault_token`]: /nomad/docs/job-specification/job#vault_token
|