scalr_workspace Resource

Manage the state of workspaces in Scalr. Create, update and destroy

Example Usage

Basic usage:

VCS-driven

data "scalr_vcs_provider" test {
  name = "vcs-name"
  account_id = "acc-xxxx" # if the user has access to more than one account
}

data "scalr_environment" test {
  name = "env-name"
  account_id = "acc-xxxx" # if the user has access to more than one account
}

resource "scalr_workspace" "vcs-driven" {
  name            = "my-workspace-name"
  environment_id  = data.scalr_environment.test.id
  vcs_provider_id = data.scalr_vcs_provider.test.id

  working_directory = "example/path"
  var_files = ["common.tfvars", "dev.tfvars"]

  vcs_repo {
      identifier          = "org/repo"
      branch              = "dev"
      trigger_prefixes    = ["stage", "prod"]
  }
}

Module-driven

data "scalr_environment" test {
  name = "env-name"
  # account_id = "acc-xxxx" # Optional, if the user has access to more than one account
}

data "scalr_module_version" "example" {
  source = "env-xxxxx/module-name/provider"  # environment-level module will be retrieved
  # source = "acc-xxxxx/module-name/provider" # account-level module will be retrieved
  # version = "1.0.0" # Optional, if omitted, the latest module version is selected
}

resource "scalr_workspace" "module-driven" {
  environment_id = data.scalr_environment.test.id

  name = "module-driven-workspace"
  module_version_id = data.scalr_module_version.example.id
}

CLI-driven

data "scalr_environment" test {
  name = "env-name"
  # account_id = "acc-xxxx" # Optional, if the user has access to more than one account
}

resource "scalr_workspace" "cli-driven" {
  name            = "my-workspace-name"
  environment_id  = data.scalr_environment.test.id

  working_directory = "example/path"
  var_files = ["common.tfvars", "dev.tfvars"]
}

Argument Reference

  • name - (Required) Name of the workspace. Workspace name which must be unique within the environment. Comprises letters, numbers, -, and _ only.

  • environment_id - (Required) ID of the environment, in the format env-<RANDOM STRING>.

  • auto_apply - (Optional) Set (true/false) to configure if terraform apply should automatically run when terraform plan ends without error. Default false.

  • operations - (Optional) Set (true/false) to configure workspace remote execution in CLI-driven mode. When false runs executed locally and workspace is only used to store state. Default true. Defaults to true.

  • terraform_version - (Optional) The version of Terraform to use for this workspace. Defaults to the latest available version.

  • working_directory - (Optional) A relative path that Terraform will be run in. Defaults to the root of the repository "".

  • run_operation_timeout - (Optional) The number of minutes run operation can be executed before termination. Defaults to 0 (not set, backend default is used).

  • module_version_id - (Optional) The identifier of a module version in the format modver-<RANDOM STRING>. This attribute conflicts with vcs_provider_id and vcs_repo attributes.

  • agent_pool_id - (Optional) The identifier of an agent pool in the format apool-<RANDOM STRING>.

  • var_files - (Optional) A list of paths to the .tfvars file(s) to be used as part of the workspace configuration.

  • vcs_provider_id - (Optional) ID of vcs provider - required if vcs-repo present and vice versa, in the format vcs-<RANDOM STRING>

  • vcs_repo - (Optional) Settings for the workspace’s VCS repository.

    The vcs_repo block supports:

    • identifier - (Required) A reference to your VCS repository in the format :org/:repo, it refers to the organization and repository in your VCS provider.

    • branch - (Optional) The repository branch where Terraform will be run from. Default master.

    • path - (Optional) Deprecated: The repository subdirectory that Terraform will execute from. If omitted or submitted as an empty string, this defaults to the repository’s root.

    • trigger_prefixes - (Optional) List of paths (relative to path), whose changes will trigger a run for the workspace using this binding when the CV is created. If omitted or submitted as an empty list, any change in path will trigger a new run.

    • dry_runs_enabled - (Optional) Set (true/false) to configure the VCS driven dry runs should run when pull request to configuration versions branch created. Default true

  • hooks - (Optional) Settings for the workspaces custom hooks.

    The hooks block supports:

    • pre_plan - (Optional) Action that will be called before plan phase

    • post_plan - (Optional) Action that will be called after plan phase

    • pre_apply - (Optional) Action that will be called before apply phase

    • post_apply - (Optional) Action that will be called after apply phase

Attribute Reference

All arguments plus:

  • id - The workspace ID, in the format ws-<RANDOM STRING>.

  • created_by - Details of the user that created the workspace.

  • has_resources - The presence of active terraform resources in the current state version.

The created_by block contains:

  • username - Username of creator.

  • email - Email address of creator.

  • full_name - Full name of creator.

Import

To import workspaces use workspace ID as the import ID. For example:

terraform import scalr_workspace.example ws-t47s1aa6s4boubg