Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 将GitLab CI变量注入Terraform变量_Amazon Web Services_Continuous Integration_Gitlab_Terraform - Fatal编程技术网

Amazon web services 将GitLab CI变量注入Terraform变量

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

我有一组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"
    }
    
    在我的.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}