Clock
3
min read

Introducing Native Support for Terraform Variable Files in Scalr

Ryan Fee

Ryan Fee

Director - Solution Architecture

Scalr has now added native support for variable files in the workspace configuration! A common theme among our customers is to create reusable code and one of the core concepts of that is being able to inject variables per workspace to allow for the reusable code. 

Previously, the way to do this was to pass in a shell variable and reference the file:

TF_CLI_ARGS_plan= -var-file=env/xxxx.tfvars

While this worked and will continue to work, the variable files are really part of the workspace configuration, which is why we have added the native support for it. Going forward, the best practice will be to add the .tfvar file(s) to the workspace configuration:

resource "scalr_workspace" "dev" {
  name = "manager-dev"
  environment_id = data.scalr_vcs_provider.manager.id
  vcs_provider_id = data.scalr_vcs_provider.manager.id
  working_directory = "module"
  var_files = ["common.tfvars", "dev.tfvars"]

  vcs_repo {
    identifier = "org/name"
    branch = "main"
  }
}

resource "scalr_workspace" "prod" {
  name = "manager-dev"
  environment_id = data.scalr_vcs_provider.manager.id
  vcs_provider_id = data.scalr_vcs_provider.manager.id
  working_directory = "module"
  var_files = ["common.tfvars", "prod.tfvars"]

  vcs_repo {
    identifier = "org/name"
    branch = "main"
  }
}

This now gives you the ability to add multiple files as part of the workspace configuration, and most importantly it is now part of the Scalr provider, which is the best practice in creating and maintaining workspaces. The ability to add files through the UI will follow very soon.

The combination of the Scalr module registry and variables in the workspace configuration now makes it even easier to structure your Terraform deployments at scale.