Variable Interpolation
furyctl
allows to specify interpolated strings inside a furyctl.yaml
configuration file.
Path interpolation
Intended for fields where you should specify a path to a folder or a file (e.g.: spec.kubernetes.ssh.keyPath
). It will be replaced by the absolute path as computed from the current working directory.
Format: "{path://<relative-path>}"
Example:
...
spec:
kubernetes:
ssh:
keyPath: "{path://./ssh-key}"
...
Assuming you are running furyctl
from /home/user/projects/test
, the "{path://./ssh-key}"
string will be replaced with /home/user/projects/test/ssh-key
.
File interpolation
Replaces the interpolation string with the contents of a specified file. Useful for fields where you could have a file in your local filesystem that holds the required data, for example spec.distribution.modules.ingress.nginx.tls.secret.cert
. To locate the file, furyctl
will first convert the specified path to an absolute one (if needed).
Format: "{file://<path-to-file>}"
Example:
...
spec:
distribution:
modules:
ingress:
nginx:
tls:
secret:
cert: "{file://relative/path/to/ssl.crt}"
key: "{file://relative/path/to/ssl.key}"
ca: "{file://relative/path/to/ssl.ca}"
...
Assuming you are running furyctl
from /home/user/projects/test
, the cert
, key
and ca
values will be replaced with /home/user/projects/test/relative/path/to/ssl.{crt|key|ca}
.
Environment interpolation
Replaces the interpolation string with the value of the specified environment variable. Useful to specify secrets that you may not want to store inside plaintext files.
Format: "{env://<env-variable-name>}"
Example:
...
spec:
distribution:
modules:
auth:
pomerium:
secrets:
COOKIE_SECRET: "{env://POMERIUM_COOKIE_SECRET}"
IDP_CLIENT_SECRET: "{env://POMERIUM_IDP_CLIENT_SECRET}"
SHARED_SECRET: "{env://POMERIUM_IDP_CLIENT_SECRET}"
SIGNING_KEY: "{env://POMERIUM_IDP_CLIENT_SECRET}"
...
The strings in the above example will be replaced with the value of the specified environment variables.