在Terraform代码中是否必须包含GitLab变量,以便识别我的凭据

80次阅读
没有评论

问题描述

在尝试设置一个流水线,该流水线应该将Terraform代码部署到AWS账户中。代码在本地运行正常,并且已经设置和导入了状态桶和DynamoDB表,以实现状态锁定。

然而,当用户在GitLab CI中运行代码时,出现以下错误消息:

Error: error configuring S3 Backend: no valid credential sources for S3 Backend found.
Please see https://www.terraform.io/docs/language/settings/backends/s3.html
for more information about providing credentials.
Error: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors

用户在before_script中将AWS凭据导出为变量,如下所示:

before_script:
  - rm -rf .terraform
  - terraform --version
  - export AWS_ACCESS_KEY_ID
  - export AWS_ROLE_ARN
  - export AWS_DEFAULT_REGION
  - export AWS_ROLE_ARN

用户想知道是否还有其他步骤遗漏,或者是否需要在Terraform代码中包含凭据变量。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

根据用户的描述,问题出在没有导出AWS_SECRET_ACCESS_KEY变量。因此,用户需要在before_script中导出该变量。

以下是解决方案的步骤:
1. 打开GitLab CI配置文件。
2. 在before_script部分,确保导出AWS_SECRET_ACCESS_KEY变量。
3. 保存并提交更改。

下面是一个示例的GitLab CI配置文件:

before_script:
  - rm -rf .terraform
  - terraform --version
  - export AWS_ACCESS_KEY_ID
  - export AWS_SECRET_ACCESS_KEY
  - export AWS_DEFAULT_REGION
  - export AWS_ROLE_ARN

通过在before_script中导出AWS_SECRET_ACCESS_KEY变量,Terraform将能够正确识别用户的凭据。

请注意,这只是解决问题的一种方法。根据用户的具体情况,可能还有其他解决方案可供选择。

希望这个解决方案对您有所帮助!如果您有任何其他问题,请随时提问。

正文完