Variable Interpolation
Variables within variables
Introduction
Oftentimes, you will need to define variables whose values depend on other variables.
To do this, you can use Value interpolation.
Starting with some examples always works best in these cases.
Some Examples
-
An environment variable identifier containing a complete identifier for your Bunnyshell environment.
{{ project.name }} : {{ org.name }} : {{ env.name }}
-
A variable that is using the identifier variable to create a logging content prefix.
{{ "now"|date("m/d/Y") }} {{ env.var.identifier|lower }}
-
A variable that interpolates a conditional value
{% if env.type == 'ephemeral' %}true{% else %}false{% endif %}
Where to use value interpolation
- Variables (at Project, Environment, or Component level)
- Docker-compose Components or DockerImage Components
- Build arguments
- Build context
- Build Dockerfile
- Build target
- Static applications
- build command
- build arguments
- Helm Components, Kubernetes Manifest Components, Terraform Components or Generic Components
- runnerImage
- environment variables
- deploy, destroy, start and stop commands
- Docker-compose Components
- environment variables
- pod.init_containers[].environment
- pod.sidecar_containers[].environment
- hosts[].hostname
- hosts[].path
- Remote dev
- kubernetes resource name
- kubernetes resource namespace
- container command
- container environment
Available interpolation values
- Organization variables
org.name
org.unique
- Project variables
project.name
- Environment variables
env.unique
env.name
env.type - primary / ephemeral
env.base_domain
env.k8s.namespace
env.vars.NAME
- Components variables
components.COMPONENT_NAME.gitBranch
components.COMPONENT_NAME.ingress.hosts[*]
1
components.COMPONENT_NAME.ingress.hosts[*].url
1
components.COMPONENT_NAME.ingress.hosts[*].hostname
1
components.COMPONENT_NAME.ingress.hosts[*].path
1
The*
must be replaced with the index, eg.0
for the first host listed under thehosts
attribute, ,1
for the second host and so on.components.COMPONENT_NAME.vars.NAME
components.COMPONENT_NAME.image
1components.COMPONENT_NAME.imageName
1components.COMPONENT_NAME.imageTag
1components.COMPONENT_NAME.exported.VAR_NAME
(only for Helm, Kubernetes, Terraform and Generic components)
- Component containers variables
components.COMPONENT_NAME.containers.CONTAINER_NAME.vars.VAR_NAME
1 Helm, Kubernetes Manifest and Terraform components don’t have these. Generic component has these only when they have set .dockerCompose.build or .dockerCompose.image
Updated 3 months ago