Skip to main content
Version: 4.x

Config Variables

DevSpace allows you to make your configuration dynamic by using variables in devspace.yaml.

While there is no need to explicitly define a config variable, it allows you to customize the behavior of DevSpace when working with the variable. Variables are defined within the vars section of devspace.yaml.

images:
database:
image: "mysql:${MYSQL_VERSION}"
vars:
- name: MYSQL_VERSION
question: Which mysql version do you want to use?
default: "5.7"
Source

The source option of a config variable expects either:

  • all means to check environment variables first and then ask a question if no env variable is defined (default)
  • env means to check environment variables only
  • input means to ask the user a question once (values will be cached in .devspace/generated.yaml)
Input Caching

If source is either all or input and the variable is not defined, the user will be asked to provide a value either using a generic question or the one provided via the question option. The user-provided value will be cached in .devspace/generated.yaml and the user will only be asked again after the cache has been cleared first using:

devspace reset vars

Predefined Variables​

DevSpace provides some variables that are filled automatically and can be used within the config. These can be helpful for image tagging and other use cases:

  • DEVSPACE_RANDOM: A random 6 character long string
  • DEVSPACE_TIMESTAMP A unix timestamp when the config was loaded
  • DEVSPACE_GIT_COMMIT: A short hash of the local repo's current git commit
  • DEVSPACE_SPACE: The name of the Space that is currently used
  • DEVSPACE_SPACE_NAMESPACE: The Kubernetes namespace of the Space in the cluster
  • DEVSPACE_USERNAME: The username currently logged into DevSpace Cloud

Example: Using ${DEVSPACE_GIT_COMMIT}​

images:
default:
image: myrepo/devspace
tag: ${DEVSPACE_GIT_COMMIT}-${DEVSPACE_TIMESTAMP}

Explanation:
This config will tag the image in the form of myrepo/devspace:d9b4bcd-1559766514. Many other combinations are possible with this method.

Useful Commands​

devspace list vars​

To get a list of all variables defined in the devspace.yaml, you can run this command:

devspace list vars

devspace reset vars​

Once DevSpace asks you to provide a value for a variable, this value will be stored in the variables cache, so you will not asked about this variable again. To reset the variables cache, run:

devspace reset vars

DevSpace will fill the variables cache again, once you run the next build or deployment command.

devspace print​

The following command prints the config after all variables have been replaced:

devspace print

You can optionally add the -p / --profiles flag to this command.

export VAR_NAME=value​

The value for a config variable can also be set by defining an environment variable named [VAR_NAME]. Setting the value of a config variable with name ${IMAGE_NAME} would be possible by setting an environment value IMAGE_NAME.

$env:IMAGE_NAME = "some-value"