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


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 the hosts attribute, , 1 for the second host and so on.
    • components.COMPONENT_NAME.vars.NAME
    • components.COMPONENT_NAME.image1
    • components.COMPONENT_NAME.imageName1
    • components.COMPONENT_NAME.imageTag1
    • components.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