We have an issue where when we try to move items using tf state mv it wil parse incorrectly in powershell.
As you can see below, the terraform CLI interpets the space as a new item and fails the state mv call
If we run the command in command prompt with modified escaping it will work, we would like to find a way to make it work in powershell possibly with custom escaping.
Repro steps in PS:
Terraform init
Terraform plan
Terraform apply
Terraform state mv 'local_file.file[\"b c\"]' 'local_file.file[\"e f\"]'
Command in PS (fails)
terraform state mv 'local_file.file[\"b c\"]' 'local_file.file[\"e f\"]'
Command in CMD
terraform state mv "local_file.file[\"b c\"]" "local_file.file[\"e f\"]"
Output
2020/06/14 23:59:22 [INFO] Terraform version: 0.12.23 2020/06/14 23:59:22 [INFO] Go runtime version: go1.12.13 2020/06/14 23:59:22 [INFO] CLI args: string{“C:\Windows\terraform.exe”, “state”, “mv”, “local_file.file[“b”, “c”]”, “local_file.file[“e”, “f”]”} 2020/06/14 23:59:22 [DEBUG] Attempting to open CLI config file: C:\Users\p120b60.CORPADDS\AppData\Roaming\terraform.rc 2020/06/14 23:59:22 [DEBUG] File doesn’t exist, but doesn’t need to. Ignoring. 2020/06/14 23:59:22 [INFO] CLI command args: string{“state”, “mv”, “local_file.file[“b”, “c”]”, “local_file.file[“e”, “f”]”} Exactly two arguments expected.
main.tf
provider “azurerm” {
version = “=2.13.0”
skip_provider_registration = “true”
features {}
}
locals {
filenames = toset([“a”, “b c”])
}
terraform {
backend “local” {
path = "./terraformconfig.tfstate"
}
}
resource “local_file” “file” {
for_each = local.filenames
filename = each.value
}
TF version Terraform v0.12.23
provider.azurerm v2.13.0 provider.local v1.4.0