Skip to main content
Version: 5.14

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)
  • command means DevSpace will not ask the user a question and instead execute a command to determine the value of the variable.
Pass Variables via CLI

A useful feature in DevSpace is that you can also specify variables as flags, which will override previous values (if there are any):

devspace deploy --var VAR1=VALUE1 --var VAR2=VALUE2
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 encrypted 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_GIT_BRANCH: The current branch name of the local repo
  • DEVSPACE_NAMESPACE: The default namespace of the current kube-context (= the namespace that you are deploying to)
  • DEVSPACE_CONTEXT: Name of the current kube-context
  • DEVSPACE_VERSION: The version of the devspace cli without a leading v (e.g. 5.4.3)
  • DEVSPACE_PROFILE: The main profile used for DevSpace (value of the --profile flag)
  • DEVSPACE_USER_HOME: The absolute path to the user's home directory

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"