---
description: |
  The top-level source block defines reusable builder configuration blocks
page_title: source - Blocks
---

# The `source` block

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

The top-level `source` block defines reusable builder configuration blocks:

`@include 'from-1.5/sources/example-block.mdx'`

You can start builders by refering to those source blocks form a [`build`
block](/docs/templates/hcl_templates/blocks/build), for example :

```hcl
build {
  sources = [
    # Here Packer will use a default ami_name when saving the image.
    "source.amazon-ebs.example",
    "source.amazon-ebs.foo",
  ]
}
```

The build-level [`source` block](/docs/templates/hcl_templates/blocks/build/source) allows to
set specific source fields.

```hcl
build {
  source "source.amazon-ebs.example" {
    # Here Packer will use the provided ami_name instead of defaulting it.
    # Note that fields cannot be overwritten, in other words, you cannot
    # set the 'ami_name' field in the top-level source block.
    ami_name = "specific"
  }
}
```

`@include 'from-1.5/contextual-source-variables.mdx'`

## Related

- The list of available builders can be found in the [builders](/docs/builders)
  section.

- A list of [community
  builders](/community-tools#community-builders) is available.

- Create your own [custom builder](/docs/extending/custom-builders) !
