--- description: > The `variable` and `input-variable` blocks define variables in your Packer configuration. Learn how to use these blocks to declare variables in your template. page_title: variable block reference --- ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ > [!IMPORTANT] > **Documentation Update:** Product documentation previously located in `/website` has moved to the [`hashicorp/web-unified-docs`](https://github.com/hashicorp/web-unified-docs) repository, where all product documentation is now centralized. Please make contributions directly to `web-unified-docs`, since changes to `/website` in this repository will not appear on developer.hashicorp.com. ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ # `variable` block This topic provides reference information about the `variable` block. ## Description The `variable` and `input-variable` blocks define variables within your Packer configuration. You cannot use the `input-variable` block in another `input-variable` block. We recommend using the [`locals`](/packer/docs/templates/hcl_templates/blocks/locals) to nest variables 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.