我想使用 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 行: │(未提供源代码) │ │ 需要换行符或逗号来标记下一个属性的开始。
根据凭证和共享配置:
我们建议使用环境变量来提供凭据和其他敏感数据。如果您在配置中直接使用
或硬编码这些值,Terraform 会将这些值包含在-backend-config
子目录和计划文件中。.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