GitLab、Terraform和字符串插值
我想使用GitLab Runner部署到带有Terraform的AWS。我在GitLab“Variables”中设置了AWS凭据(GitLab、Terraform和字符串插值,gitlab,terraform,Gitlab,Terraform,我想使用GitLab Runner部署到带有Terraform的AWS。我在GitLab“Variables”中设置了AWS凭据(AWS\u ACCESS\u KEY\u ID和AWS\u SECRET\u ACCESS\u KEY)。我一定是误解了.gitlab-cy.yml如何执行字符串插值,因为我无法获取要填充的凭据 所讨论的阶段如下所示: validate: stage: validate dependencies: - lint - unit image:
AWS\u ACCESS\u KEY\u ID
和AWS\u SECRET\u ACCESS\u KEY
)。我一定是误解了.gitlab-cy.yml
如何执行字符串插值,因为我无法获取要填充的凭据
所讨论的阶段如下所示:
validate:
stage: validate
dependencies:
- lint
- unit
image:
name: hashicorp/terraform:light
entrypoint:
- "/usr/bin/env"
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}"
- "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"
before_script:
- rm -rf terraform/test/.terraform
- terraform --version
- terraform init -input=false -backend-config="access_key=${AWS_ACCESS_KEY_ID}" -backend-config="secret_key=${AWS_SECRET_ACCESS_KEY}" terraform/test
script:
- terraform validate
管道在terraform init
命令中失败。然而,为了证实我并没有发疯,我确实尝试了一个管道运行,并使用了硬编码的凭证,它成功了(我还立即学会了如何永久地和管道连接)
从表面上看,我没有看到任何明显的错误
错误消息:
Initializing the backend...
Error: error using credentials to get account ID: error calling sts:GetCallerIdentity: InvalidClientTokenId: The security token included in the request is invalid.
问题原来是受保护的分支。如果您“保护”一个变量,那么该变量对未指定为受保护的分支不可用。我很确定您不应该在Docker入口点中设置环境变量。@MattSchuchard很公平,但您有推荐的替代方案吗?我是从这些示例开始工作的:您是否尝试过使用
环境
Gitlab键呢?我看不出与我在这里所做的有什么不同