open-nomad/website/content/docs/commands/job/validate.mdx
Daniel Bennett dc9c8d4e47
Change job init default to example.nomad.hcl and recommend in docs (#15997)
recommend .nomad.hcl for job files instead of .nomad (without .hcl)
* nomad job init -> example.nomad.hcl
* update docs
2023-02-02 11:47:47 -06:00

103 lines
3.6 KiB
Plaintext

---
layout: docs
page_title: 'Commands: job validate'
description: >
The job validate command is used to check a job specification for syntax
errors and validation problems.
---
# Command: job validate
**Alias: `nomad validate`**
The `job validate` command is used to check an HCL [job specification] for any
syntax errors or validation problems.
## Usage
```plaintext
nomad job validate <file>
```
The `job validate` command requires a single argument, specifying the path to a
file containing an HCL [job specification]. This file will be read and the job
checked for any problems. 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.
On successful validation, exit code 0 will be returned, otherwise an exit code
of 1 indicates an error.
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.
When ACLs are enabled, this command requires a token with the `read-job`
capability for the job's namespace.
## General Options
@include 'general_options.mdx'
## Validate Options
- `-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
field is used as the job.
- `-hcl1`: If set, HCL1 parser is used for parsing the job spec. Takes
precedence over `-hcl2-strict`.
- `-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.
Defaults to true, but ignored if `-hcl1` is defined.
- `-vault-token`: Used to validate if the user submitting the job has
permission to run the job according to its Vault policies. A Vault token must
be supplied if the [`vault` block `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` block when templating in a job with a Vault token.
- `-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.
## Examples
Validate a JSON job with invalid syntax:
```shell-session
$ nomad job validate -json example.json
Job validation errors:
1 error occurred:
* Missing job datacenters
```
Validate a job that has a configuration that causes warnings:
```shell-session
$ nomad job validate example.nomad.hcl
Job Warnings:
1 warning(s):
* Group "cache" has warnings: 1 error(s) occurred:
* Update max parallel count is greater than task group count (6 > 3). A destructive change would result in the simultaneous replacement of all allocations.
Job validation successful
```
[`go-getter`]: https://github.com/hashicorp/go-getter
[job specification]: /nomad/docs/job-specification
[`vault` block `allow_unauthenticated`]: /nomad/docs/configuration/vault#allow_unauthenticated
[`vault_token`]: /nomad/docs/job-specification/job#vault_token