104 lines
2.8 KiB
Plaintext
104 lines
2.8 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: fileset - Functions - Configuration Language
|
|
sidebar_title: fileset
|
|
description: The fileset function enumerates a set of regular file names given a pattern.
|
|
---
|
|
|
|
# `fileset` Function
|
|
|
|
`fileset` enumerates a set of regular file names given a path and pattern.
|
|
The path is automatically removed from the resulting set of file names and any
|
|
result still containing path separators always returns forward slash (`/`) as
|
|
the path separator for cross-system compatibility.
|
|
|
|
```hcl
|
|
fileset(path, pattern)
|
|
```
|
|
|
|
Supported pattern matches:
|
|
|
|
- `*` - matches any sequence of non-separator characters
|
|
- `**` - matches any sequence of characters, including separator characters
|
|
- `?` - matches any single non-separator character
|
|
- `{alternative1,...}` - matches a sequence of characters if one of the comma-separated alternatives matches
|
|
- `[CLASS]` - matches any single non-separator character inside a class of characters (see below)
|
|
- `[^CLASS]` - matches any single non-separator character outside a class of characters (see below)
|
|
|
|
Character classes support the following:
|
|
|
|
- `[abc]` - matches any single character within the set
|
|
- `[a-z]` - matches any single character within the range
|
|
|
|
Functions are evaluated during configuration parsing rather than at apply time,
|
|
so this function can only be used with files that are already present on disk
|
|
before Packer takes any actions.
|
|
|
|
## Examples
|
|
|
|
```shell-session
|
|
> tree pkr-consul
|
|
pkr-consul
|
|
├── build-linux.pkr.hcl
|
|
└── linux
|
|
├── files
|
|
│ ├── hello.txt
|
|
│ └── world.txt
|
|
└── scripts
|
|
├── script-1-install.sh
|
|
└── script-2-setup.sh
|
|
|
|
3 directories, 5 files
|
|
|
|
> fileset(".", "*") | packer console pkr-consul
|
|
[
|
|
"build-linux.pkr.hcl",
|
|
]
|
|
|
|
> echo 'fileset(".", "linux/scripts/*")' | packer console pkr-consul
|
|
[
|
|
"linux/scripts/script-1-install.sh",
|
|
"linux/scripts/script-2-setup.sh",
|
|
]
|
|
|
|
> echo 'fileset("linux", "files/{hello,world}.txt")' | packer console pkr-consul
|
|
[
|
|
"files/hello.txt",
|
|
"files/world.txt",
|
|
]
|
|
|
|
> echo 'fileset("./linux/files", "*")' | packer console pkr-consul
|
|
[
|
|
"hello.txt",
|
|
"world.txt",
|
|
]
|
|
|
|
> echo 'fileset("./linux", "**")' | packer console pkr-consul
|
|
[
|
|
"files/hello.txt",
|
|
"files/world.txt",
|
|
"scripts/script-1-install.sh",
|
|
"scripts/script-2-setup.sh",
|
|
]
|
|
```
|
|
|
|
A common use of `fileset` is to set the `scripts` field of a `shell`
|
|
provisioner with a list of matching scripts to run.
|
|
|
|
```hcl
|
|
build {
|
|
sources = [
|
|
"source.amazon-ebs.linux",
|
|
]
|
|
|
|
provisioner "shell" {
|
|
scripts = fileset(".", "linux/scripts/*")
|
|
}
|
|
```
|
|
|
|
List of provisioners with a `scripts` field:
|
|
* [`shell`](/docs/provisioners/shell)
|
|
* [`powershell`](/docs/provisioners/powershell)
|
|
* [`shell-local`](/docs/provisioners/shell-local)
|
|
* [`windows-shell`](/docs/provisioners/windows-shell)
|