将GitLab CI变量注入Terraform变量

时间:2019-06-05 13:30:59

标签: amazon-web-services continuous-integration gitlab terraform

我有一组Terraform文件,尤其是一个variables.tf文件,其中包含aws访问密钥,aws访问令牌等变量。我现在想使用GitLab CI /在AWS上自动创建资源光盘。

我的计划如下:

  1. 编写一个.gitlab-ci-yml文件

  2. 在.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"
}

在我的.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脚本!

1 个答案:

答案 0 :(得分:1)

您要为GitLab运行程序使用哪个执行程序?

您不一定需要使用Docker执行程序,而是可以使用安装在裸机或VM中的运行程序。

如果也将gettext软件包安装在各自的机器/ VM上,则可以使用与Referencing gitlab secrets in Terraform中所述的Docker执行器相同的方法。

另一种可能是您设置了

job:
    stage: ...
    variables: 
        TF_VAR_SECRET1: ${GITLAB_SECRET}

job:
    stage: ...
    script:
        - export TF_VAR_SECRET1=${GITLAB_SECRET}

在您的CI作业配置中进行插值。也请参见Getting an Environment Variable in Terraform configuration?