spa*_*rkr 12 continuous-integration amazon-web-services 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_access_key" {
default = "YOUR_ADMIN_ACCESS_KEY"
}
variable "aws_secret_key" {
default = "YOUR_ADMIN_SECRET_KEY"
}
variable "aws_region" {
default = "us-west-2"
}
Run Code Online (Sandbox Code Playgroud)
在我的 .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}'
Run Code Online (Sandbox Code Playgroud)
如何将其传送到我的 Terraform 脚本?有任何想法吗?我需要从 GitLab 环境中读取秘密并将其传递给 Terraform 脚本!
rfl*_*ume 10
您的 GitLab 运行程序使用哪个执行器?
您不一定需要使用 Docker 执行器,但可以使用安装在裸机或虚拟机上的运行器。
如果您gettext也在相应的计算机/VM 上安装该软件包,则可以使用我在为 Docker 执行器引用 Terraform 中的 gitlab 机密中描述的相同方法。
另一种可能性可能是你设置
job:
stage: ...
variables:
TF_VAR_SECRET1: ${GITLAB_SECRET}
Run Code Online (Sandbox Code Playgroud)
或者
job:
stage: ...
script:
- export TF_VAR_SECRET1=${GITLAB_SECRET}
Run Code Online (Sandbox Code Playgroud)
在您的 CI 作业配置中并插入这些。请参阅在 Terraform 配置中获取环境变量?还有
请记住,terraform 需要环境变量的 TF_VAR_ 前缀。所以实际上你需要在 .gitlab-ci.yml 中这样的东西
- 'TF_VAR_AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}'
- 'TF_VAR_AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}'
- 'TF_VAR_AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}'
Run Code Online (Sandbox Code Playgroud)
这也意味着您也可以在管道中设置带有该前缀的变量,而不需要这个额外的映射步骤。
我看到你确实根据你的评论发现了这一点——我仍然发布这个答案,因为我第一次错过了你的评论,这会节省我一个小时的工作。
| 归档时间: |
|
| 查看次数: |
28986 次 |
| 最近记录: |