无法覆盖 terraform init 上的端点.s3

问题描述 投票:0回答:1

我想使用 Azure DevOps powershell 任务覆盖 terraform init 上的 aws 后端配置,但 s3 端点配置出现语法错误

它曾经是这样工作的:

- pwsh: |
    terraform init -backend=true -force-copy -get=true -input=false -backend-config='endpoints={s3="$(S3_ENDPOINT)"}' -backend-config="bucket=$(S3_BUCKET)" -backend-config="key=$(S3_KEY)" -backend-config="region=$(S3_REGION)" -backend-config="access_key=$(OVH_ACCESS_KEY)" -backend-config="secret_key=$(OVH_SECRET_KEY)"
  name: tf_init
  displayName: 'Terraform : init'
  workingDirectory: '$(System.DefaultWorkingDirectory)/${{ parameters.root_directory }}'

哪里

$(S3_ENDPOINT) = "https://s3.gra.io.cloud.ovh.net/"

出现此错误:

正在初始化后端... ╷ │ 错误:缺少属性分隔符 │ │ 在 -backend-config="endpoints={s3=https://s3.gra.io.cloud.ovh.net/}" 第 1 行: │(未提供源代码) │ │ 需要换行符或逗号来标记下一个属性的开始。

powershell azure-devops terraform azure-pipelines
1个回答
0
投票

根据凭证和共享配置

我们建议使用环境变量来提供凭据和其他敏感数据。如果您在配置中直接使用

-backend-config
或硬编码这些值,Terraform 会将这些值包含在
.terraform
子目录和计划文件中。

所以我建议你像这样重写你的任务:

- pwsh: |
    terraform init -backend=true -force-copy -get=true -input=false -backend-config="bucket=$(S3_BUCKET)" -backend-config="key=$(S3_KEY)" 
  name: tf_init
  displayName: 'Terraform : init'
  workingDirectory: '$(System.DefaultWorkingDirectory)/${{ parameters.root_directory }}'
  env:
    AWS_S3_ENDPOINT: $(S3_ENDPOINT)
    AWS_REGION: $(S3_REGION)
    AWS_ACCESS_KEY_ID: $(OVH_ACCESS_KEY)
    AWS_SECRET_ACCESS_KEY: $(OVH_SECRET_KEY)

注:

  • 这是未经测试的代码,因此请在文档中仔细检查每个设置的正确环境变量是什么
  • 不确定是否可以使用环境变量覆盖
    bucket
    key
© www.soinside.com 2019 - 2024. All rights reserved.