Amazon web services 将GitLab CI变量注入Terraform变量
我有一组Terraform文件,特别是一个variables.tf文件,它保存了我的变量,如aws访问密钥、aws访问令牌等。我现在想使用GitLab CI/CD在aws上自动创建资源 我的计划如下:Amazon web services 将GitLab CI变量注入Terraform变量,amazon-web-services,continuous-integration,gitlab,terraform,Amazon Web Services,Continuous Integration,Gitlab,Terraform,我有一组Terraform文件,特别是一个variables.tf文件,它保存了我的变量,如aws访问密钥、aws访问令牌等。我现在想使用GitLab CI/CD在aws上自动创建资源 我的计划如下: 编写一个.gitlab ci yml文件 在.gitlab-ci.yml文件中具有terraform调用 我知道我可以在GitLab中使用秘密环境变量,但我不确定如何将这些变量推送到Terraform variables.tf文件中,该文件现在是这样的 # AWS Config variable
# AWS Config
variable "aws_access_key" {
default = "YOUR_ADMIN_ACCESS_KEY"
}
variable "aws_secret_key" {
default = "YOUR_ADMIN_SECRET_KEY"
}
variable "aws_region" {
default = "us-west-2"
}
在我的.gitlab-ci.yml中,我可以获得如下秘密:
- 'AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}'
- 'AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}'
- 'AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}'
我如何将它传输到我的Terraform脚本?有什么想法吗?我需要阅读GitLab环境中的秘密,并将其传递给Terraform脚本 您使用哪个执行器来运行GitLab 您不一定需要使用Docker executor,但可以使用安装在裸机或VM中的runner 如果您也在相应的机器/VM上安装了
gettext
包,那么您可以使用与我在Docker executor中描述的相同方法
另一种可能是你设置了
job:
stage: ...
variables:
TF_VAR_SECRET1: ${GITLAB_SECRET}
或
在CI作业配置中,插入这些。请参阅可能的重复端口。您可以使用SDK的自然方式,通过使用
AWS\u ACCESS\u KEY\u ID
等环境变量加载凭据。该端口可能的重复端口无法回答我的问题。它需要使用另一个图像,它有一些工具,如gettext,可以在Docker图像上使用,我不希望这样!我从Terraform文档中了解到,我可以用TF_VAR_作为ma变量的前缀,但无论如何,感谢您发布解决方案!
job:
stage: ...
script:
- export TF_VAR_SECRET1=${GITLAB_SECRET}