website/content/docs/templates/hcl_templates/onlyexcept.mdx
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
[!IMPORTANT]
Documentation Update: Product documentation previously located in/websitehas moved to thehashicorp/web-unified-docsrepository, where all product documentation is now centralized. Please make contributions directly toweb-unified-docs, since changes to/websitein this repository will not appear on developer.hashicorp.com. ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
only and except keywordsThe only and except keywords are filters that let you selectively run provisioners and post-processors in your Packer build. You can use the keywords in your Packer templates and as flags on the Packer CLI.
@include 'commands/except.mdx'
@include 'commands/only.mdx'
You can add the only and except keywords to run or skip provisioners and
post-processors for a specific source:
source "amazon-ebs" "first-example" {
}
source "amazon-ebs" "second-example" {
}
source "amazon-ebs" "third-example" {
}
build {
name = "my_build"
sources = [
"source.amazon-ebs.first-example",
]
source "source.amazon-ebs.second-example" {
// setting the name field allows you to rename the source only for this
// build section. To match this builder, you need to use
// second-example-local-name, not second-example
name = "second-example-local-name"
}
provisioner "shell-local" {
only = ["amazon-ebs.first-example"]
inline = ["echo I will only run for the first example source"]
}
provisioner "shell-local" {
except = ["amazon-ebs.second-example-local-name"]
inline = ["echo I will never run for the second example source"]
}
}
build {
sources = [
"source.amazon-ebs.third-example",
]
}
# this file will result in Packer creating three builds named:
# my_build.amazon-ebs.first-example
# my_build.amazon-ebs.second-example
# amazon-ebs.third-example
Note that CLI arguments can be used with a glob operator, using the previous configuration:
packer build -only 'my_build.*' dir: will only run the builds in blocks
named my_build.
packer build -only '*.amazon-ebs.*' dir: will only run the builds with a
source of type amazon-ebs.
packer build -only '*.second-example-local-name' dir: will only run that
specifically named build.
-> Note: In the cli only and except will match against build names (for
example:my_build.amazon-ebs.first-example) but in a provisioner they will
match on the source name (for example:amazon-ebs.third-example).