diff --git a/website/content/docs/templates/hcl_templates/blocks/build/source.mdx b/website/content/docs/templates/hcl_templates/blocks/build/source.mdx index 673e153f0..02b4b5e4d 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/source.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/source.mdx @@ -1,7 +1,8 @@ --- description: > A source block nested in a build block allows you to use an already defined - source and to set specific fields. + source and to set specific fields which aren't already set in the top-level + source block. page_title: source - build - Blocks sidebar_title: source --- @@ -10,8 +11,16 @@ sidebar_title: source `@include 'from-1.5/beta-hcl2-note.mdx'` -A `source` block nested in a `build` block allows to use an already defined -source and to set specific fields. +A `source` block nested in a `build` block allows you to use an already defined +source and to "fill in" those fields _which aren't already set in the top-level +source block_. + +Build-level source blocks are implemented by merging their contents with the +corresponding top-level source block, and a packer build will fail when it +encounters the ambiguity that arises when a source parameter is defined twice. +For example, in the below example, if the top-level "lxd.arch" source block +also defined an `output_image` field (or if one of the build-level source blocks +redefined and image field), Packer would error. ```hcl # builds.pkr.hcl @@ -43,11 +52,3 @@ build { } } ``` - -This allows to have commonly defined source settings with specific parts of it -defined inside the specific build block. - --> **Note:** It is **not allowed** to set the same field in a top-level source -block and in a used source block. For example, if in the above example, the -top-level "amazon-ebs.example" source block also had an `output` field; -Packer would error.