我想做的是:我已经设置了一个自托管的gitlab实例,并且我正在使用GitLab CI自动执行terraform过程,为此我必须设置一个terraform后端。我遵循了官方文档中的步骤,但不幸的是,我在运行管道时遇到了错误。这段代码可以在我的.gitlab-ci.yml文件中找到,所以它可以在我的GitLab运行器上运行,该运行器使用基于python:3.9-buster (Debian)的docker镜像。
这是有问题的代码,当然我编辑掉了IP地址:
- terraform init \
-backend-config="address=http://ipaddress//api/v4/projects/3/terraform/state/terraform-state/" \
-backend-config="lock_address=http://ipaddress//api/v4/projects/3/terraform/state/terraform-state/lock" \
-backend-config="unlock_address=http://ipaddress//api/v4/projects/3/terraform/state/terraform-state/lock" \
-backend-config="username=root" \
-backend-config="password=$ACCESSTOKEN" \
-backend-config="lock_method=POST" \
-backend-config="unlock_method=DELETE" \
-backend-config="retry_wait_min=5"不幸的是,当上面的命令被执行时,我得到了这个错误:
Too many command line arguments. Did you mean to use -chdir?发布于 2021-07-07 16:47:25
为了防止任何人被类似的问题卡住,碰巧发现了这篇文章,将我的脚本更改为这种格式解决了问题:
- export TF_ADDRESS=http://ipaddress//api/v4/projects/3/terraform/state/terraform-state/
- export TF_HTTP_ADDRESS=${TF_ADDRESS}
- export TF_HTTP_LOCK_ADDRESS=${TF_ADDRESS}/lock
- export TF_HTTP_LOCK_METHOD=POST
- export TF_HTTP_UNLOCK_ADDRESS=${TF_ADDRESS}/lock
- export TF_HTTP_UNLOCK_METHOD=DELETE
- export TF_HTTP_USERNAME=root
- export TF_HTTP_PASSWORD=$ACCESSTOKEN
- export TF_HTTP_RETRY_WAIT_MIN=5
- terraform init -reconfigure发布于 2021-09-16 21:22:12
- >-
terraform init
-backend-config="address=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${TF_STATE_NAME}"
-backend-config="lock_address=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${TF_STATE_NAME}/lock"
-backend-config="unlock_address=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/terraform/state/${TF_STATE_NAME}/lock"
-backend-config="username=${USERNAME}"
-backend-config="password=${TF_BOT_GLPAT}"
-backend-config="lock_method=POST"
-backend-config="unlock_method=DELETE"
-backend-config="retry_wait_min=5"
-backend-config="skip_cert_verification=true" https://stackoverflow.com/questions/68282110
复制相似问题