Search code examples
terraformterraform-cloudterraform-cli

terraform CLI can't find remote cloud workspaces when using multiple tags, attempts to create them


I have a 'development' - 'staging' and 'production' workspace within the terraform cloud organisation.

I'm attempting to interact with them as per documentation here.

Particularly this:

If you associate the directory with multiple workspaces (using workspace tags), you can use the terraform workspace commands to select which remote workspace to use.

Locally, I also have the exact same three terraform workspaces created.

Screenshots:

  • local workspaces: enter image description here
  • remote workspaces and tags:

enter image description here

100% same organisation I was able to interact with the workspaces if I hardcode the workspace value instead of using tags.

My terraform backend cloud definitions:

terraform {
  cloud {
    organization = "<<myorgname>>"
    workspaces {
      tags = ["development", "staging", "production"]
    }
  }
}

When I run a simple terraform init I get greeted by:

No workspaces found.

  There are no workspaces with the configured tags (development, production, staging)
  in your Terraform Cloud organization. To finish initializing, Terraform needs at
  least one workspace available.

  Terraform can create a properly tagged workspace for you now. Please enter a
  name to create a new Terraform Cloud workspace.

I've been going through the documentation here that goes into CLI-driven runs with this context but I can't figure out the right way to do this.

What I want is:

  • run a terraform plan or terraform apply whilst in the locally-selected development workspace

and then:

  • the cloud terraform to perform a run on the remote development workspace.

If I just go ahead and write 'development' as a name, it will then apply all 3 tags in the static definition to the remote 'development' workspace, thus defeating the whole purpose of using tags instead of a name.

What's the right way of doing this?


Solution

  • That is true, however there is also this part of documentation [1]:

    tags - (Optional) A set of Terraform Cloud workspace tags. You will be able to use this working directory with any workspaces that have all of the specified tags, and can use the terraform workspace commands to switch between them or create new workspaces. New workspaces will automatically have the specified tags. This option conflicts with name.

    EDIT: As mentioned in the comments, in order for local workspaces to be usable in Terraform Cloud as well (i.e., to be able to apply the code in Terraform Cloud), there has to be a "common" or a "main" tag across all workspaces created in the Terraform Cloud.


    [1] https://www.terraform.io/cli/cloud/settings#arguments