--- layout: docs page_title: env Block - Job Specification description: |- The "env" block configures a list of environment variables to populate the task's environment before starting. --- # `env` Block The `env` block configures a list of environment variables to populate the task's environment before starting. ```hcl job "docs" { group "example" { task "server" { env { my_key = "my-value" } } } } ``` ## `env` Parameters The "parameters" for the `env` 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. Invalid characters such as dashes (`-`) will be converted to underscores. ## `env` Examples The following examples only show the `env` blocks. Remember that the `env` 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. ```hcl env { key = 1.4 key = "1.4" key = true key = "1" key = 1 } ``` ### Interpolation This example shows using [Nomad interpolation][interpolation] to populate environment variables. ```hcl env { NODE_CLASS = "${node.class}" } ``` ### Environment variables with dots Environment variables that aren't valid HCLv2 identifiers, like ones containing `.`, require an alternative map assignment syntax. ```hcl env = { "discovery.type" = "single-node" } ``` ### Dynamic Environment Variables Nomad also supports populating dynamic environment variables from data stored in HashiCorp Consul and Vault. To use this feature please see the documentation on the [`template` block][template-env]. [interpolation]: /nomad/docs/runtime/interpolation 'Nomad interpolation' [template-env]: /nomad/docs/job-specification/template#environment-variables 'Nomad template Block'