Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

consul backend path with trailing / causes issues #15747

Closed
Evertvz opened this issue Aug 7, 2017 · 2 comments · Fixed by #25842
Closed

consul backend path with trailing / causes issues #15747

Evertvz opened this issue Aug 7, 2017 · 2 comments · Fixed by #25842

Comments

@Evertvz
Copy link

Evertvz commented Aug 7, 2017

Terraform Version

Terraform v0.10.0

Terraform Configuration Files

terraform {
  backend "consul" {
    address = "consulbackend:8500"
    path    = "terraform_state/prod-myapp-euir1/"
    access_token = "12345"
    lock = true
  }
}

Expected Behavior

Terraform should have informed the user not to end paths with /

Actual Behavior

Terraform stored the state in the path with /. Consul recognises this as a directory and refuses to show the content.
Terraform had problems with the state locking when there was a trailing /

Steps to Reproduce

Put a trailing / in your consul backend path and apply. The lock issue can already been seen during init.

  1. terraform apply

Important Factoids

Terraform had issues migrating from the path with / to one without /.
It also had problems migrating from a file state to the consul backend with /.

To achieve each, I deleted all state files and initialised from scratch.

@edevil
Copy link
Contributor

edevil commented May 14, 2020

Stepped on this same issue with Terraform 0.12.24.

remilapeyre added a commit to remilapeyre/terraform that referenced this issue Aug 13, 2020
When the path ends with / (e.g. `path = "tfstate/"), the lock
path used will contain two consecutive slashes (e.g. `tfstate//.lock`) which
Consul does not accept.

This change the lock path so it is sanitized to `tfstate/.lock`.

If the user has two different Terraform project, one with `path = "tfstate"` and
the other with `path = "tfstate/"`, the paths for the locks will be the same
which will be confusing as locking one project will lock both. I wish it were
possible to forbid ending slashes altogether but doing so would require all
users currently having an ending slash in the path to manually move their
Terraform state and would be a poor user experience.

Closes hashicorp#15747
@ghost
Copy link

ghost commented Oct 13, 2020

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@ghost ghost locked as resolved and limited conversation to collaborators Oct 13, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants