---
description: >
  The variable block, also called the input-variable block, defines variables
  within your Packer configuration.
page_title: variable - Blocks
---

# The `variable` block

`@include 'from-1.5/beta-hcl2-note.mdx'`

The `variable` block, also called the `input-variable` block, defines variables
within your Packer configuration. An input-variable cannot be used in another
input variable: we recommend using [locals](/packer/docs/templates/hcl_templates/blocks/locals) for that instead.

`@include 'from-1.5/variables/foo-block.mdx'`

## Default value

If a default value is set, the variable is optional. Otherwise, the variable
**must** be set.

`@include 'from-1.5/variables/assignment.mdx'`

`@include 'from-1.5/variables/custom-validation.mdx'`

Example of a variable assignment from a file:

`@include 'from-1.5/variables/foo-pkrvar.mdx'`

`@include 'from-1.5/variables/must-be-set.mdx'`

`@include 'from-1.5/variables/sensitive.mdx'`

# More on variables

- Read the [full variables](/packer/docs/templates/hcl_templates/variables) description for a more
  thorough read.
- Read the [variables guide](/packer/guides/hcl/variables) for more examples.
