在尝试迁移我的后端配置以在gitlab中使用新的状态存储时,我遇到了一个光荣的问题:我的状态已锁定。
Error: Error copying state from the previous "local" backend to the newly configured
"http" backend:
Failed to upload state: POST http://internal.host/api/v4/projects/14/terraform/state/project-name giving up after 3 attempts
我已经忍耐了。我确实尝试检查/var/log/gitlab/gitlab-rails/production_json.log中的聊天记录是否提供了相关的信息,并且不再确定并且对此保持了理智。
是否有一个sudo pretty-please-with-sugar-on-top-clean-the-fn-lock
命令没有任何看门功能?
答案 0 :(得分:0)
将terraform状态文件从s3迁移到gitlab时遇到了相同的问题。 我造成了这个问题,因为在backend_config unlock_address中输入错误,并且在初始化仍在运行时插入了Control + C。 terraform初始化没有要求我将状态从s3迁移到gitlab,但是我被锁定了,强制解锁无法以任何方式进行。
我附带的解决方案:
例如,这是我在所需地址为
terraform init \
-backend-config="address=https://<gitlab_url>/api/v4/projects/<ProjectID>/terraform/state/<TF_State_Name>" \
-backend-config="lock_address=https://<gitlab_url>/api/v4/projects/<ProjectID>/terraform/state/<TF_State_Name>/lock" \
-backend-config="unlock_address=https://<gitlab_url>/api/v4/projects/<ProjectID>/terraform/state/<TF_State_Name_B>/lock" \
-backend-config="username=<user>" \
-backend-config="password=<password>" \
-backend-config="lock_method=POST" \
-backend-config="unlock_method=DELETE" \
-backend-config="retry_wait_min=5"
这就是我重新配置terraform init以绕过锁的方式。
terraform init \
-backend-config="address=https://<gitlab_url>/api/v4/projects/<ProjectID>/terraform/state/<TF_State_Name_B>" \
-backend-config="lock_address=https://<gitlab_url>/api/v4/projects/<ProjectID>/terraform/state/<TF_State_Name_B>/lock" \
-backend-config="unlock_address=https://<gitlab_url>/api/v4/projects/<ProjectID>/terraform/state/<TF_State_Name_B>/lock" \
-backend-config="username=<user>" \
-backend-config="password=<password>" \
-backend-config="lock_method=POST" \
-backend-config="unlock_method=DELETE" \
-backend-config="retry_wait_min=5"
最后,您应该重新配置为所需的地址。