add filebase64 function (#11791)

Signed-off-by: Conor Evans <coevans@tcd.ie>
This commit is contained in:
Conor Evans 2022-06-06 16:58:17 +01:00 committed by GitHub
parent 116d78a89c
commit 86116a7607
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 0 deletions

3
.changelog/11791.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:improvement
hcl: added support for using the `filebase64` function in jobspecs
```

View File

@ -105,6 +105,7 @@ func Functions(basedir string, allowFS bool) map[string]function.Function {
"basename": guardFS(allowFS, filesystem.BasenameFunc),
"dirname": guardFS(allowFS, filesystem.DirnameFunc),
"file": guardFS(allowFS, filesystem.MakeFileFunc(basedir, false)),
"filebase64": guardFS(allowFS, filesystem.MakeFileFunc(basedir, true)),
"fileexists": guardFS(allowFS, filesystem.MakeFileExistsFunc(basedir)),
"fileset": guardFS(allowFS, filesystem.MakeFileSetFunc(basedir)),
"pathexpand": guardFS(allowFS, filesystem.PathExpandFunc),

View File

@ -0,0 +1,37 @@
---
layout: docs
page_title: filebase64 - Functions - Configuration Language
description: |-
The filebase64 function reads the contents of the file at the given path and
returns them as a base64-encoded string.
---
# `filebase64` Function
`filebase64` reads the contents of a file at the given path and returns them as
a base64-encoded string.
```hcl
filebase64(path)
```
The result is a Base64 representation of the raw bytes in the given file.
Nomad uses the "standard" Base64 alphabet as defined in
[RFC 4648 section 4](https://tools.ietf.org/html/rfc4648#section-4).
## Examples
```
> filebase64("${path.module}/hello.txt")
SGVsbG8gV29ybGQ=
```
## Related Functions
* [`file`](/docs/job-specification/hcl2/functions/file/file) also reads the contents of a given file,
but interprets the data as UTF-8 text and returns the result directly
as a string, without any further encoding.
* [`base64decode`](/docs/job-specification/hcl2/functions/encoding/base64decode) can decode a
Base64 string representing bytes in UTF-8, but in practice `base64decode(filebase64(...))`
is equivalent to the shorter expression `file(...)`.

View File

@ -1082,6 +1082,10 @@
"title": "file",
"path": "job-specification/hcl2/functions/file/file"
},
{
"title": "filebase64",
"path": "job-specification/hcl2/functions/file/filebase64"
},
{
"title": "fileexists",
"path": "job-specification/hcl2/functions/file/fileexists"