从 CICD 中的环境变量中获取存储桶和键值
Sourcing bucket and key values from environment variables in CICD
我正在尝试为 terraform 更改设置 CICD。我们的支持是 S3,虽然 init
我收到以下错误,因为当然提供了这些值的 none:
terraform {
backend "s3" {
}
}
.
│ Error: "region": required field is not set
│ Error: "bucket": required field is not set
│ Error: "key": required field is not set
指定的 region
值 here 可以来自 AWS_DEFAULT_REGION
和 AWS_REGION
环境变量。
但是,没有关于如何将 bucket
和 key
信息存储为存储库机密或环境变量以及如何从那里获取信息的可用信息?
由于某些其他限制,我无法在 backend.tf
文件中指定它们,并且它们必须存储为环境变量。知道如何解决这个问题吗?
backend
块的所有必需值都可以使用命令行选项 [1] 配置。具体来说,你应该对这部分感兴趣:
Command-line key/value pairs: Key/value pairs can be specified via the init command line. Note that many shells retain command-line flags in a history file, so this isn't recommended for secrets. To specify a single key/value pair, use the -backend-config="KEY=VALUE" option when running terraform init.
这是我使用的 GitHub 操作的示例:
terraform init -backend-config="bucket=${{ secrets.STATE_BUCKET_NAME }}" \
-backend-config="key=${{ secrets.STATE_KEY }}" \
-backend-config="region=${{ secrets.AWS_REGION }}" \
-backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID }}" \
-backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY }}" \
-input=false -no-color
我对 GitLab 没有太多经验 CI,但我认为您可以将这些变量设置为受保护的,然后在命令中引用它们:
terraform init -backend-config="bucket=${STATE_BUCKET_NAME}" \
-backend-config="key=${STATE_KEY}" \
-backend-config="region=${AWS_REGION}" \
-backend-config="access_key=${AWS_ACCESS_KEY_ID}" \
-backend-config="secret_key=${AWS_SECRET_ACCESS_KEY}" \
-input=false -no-color
[1] https://www.terraform.io/language/settings/backends/configuration
我正在尝试为 terraform 更改设置 CICD。我们的支持是 S3,虽然 init
我收到以下错误,因为当然提供了这些值的 none:
terraform {
backend "s3" {
}
}
.
│ Error: "region": required field is not set
│ Error: "bucket": required field is not set
│ Error: "key": required field is not set
指定的 region
值 here 可以来自 AWS_DEFAULT_REGION
和 AWS_REGION
环境变量。
但是,没有关于如何将 bucket
和 key
信息存储为存储库机密或环境变量以及如何从那里获取信息的可用信息?
由于某些其他限制,我无法在 backend.tf
文件中指定它们,并且它们必须存储为环境变量。知道如何解决这个问题吗?
backend
块的所有必需值都可以使用命令行选项 [1] 配置。具体来说,你应该对这部分感兴趣:
Command-line key/value pairs: Key/value pairs can be specified via the init command line. Note that many shells retain command-line flags in a history file, so this isn't recommended for secrets. To specify a single key/value pair, use the -backend-config="KEY=VALUE" option when running terraform init.
这是我使用的 GitHub 操作的示例:
terraform init -backend-config="bucket=${{ secrets.STATE_BUCKET_NAME }}" \
-backend-config="key=${{ secrets.STATE_KEY }}" \
-backend-config="region=${{ secrets.AWS_REGION }}" \
-backend-config="access_key=${{ secrets.AWS_ACCESS_KEY_ID }}" \
-backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY }}" \
-input=false -no-color
我对 GitLab 没有太多经验 CI,但我认为您可以将这些变量设置为受保护的,然后在命令中引用它们:
terraform init -backend-config="bucket=${STATE_BUCKET_NAME}" \
-backend-config="key=${STATE_KEY}" \
-backend-config="region=${AWS_REGION}" \
-backend-config="access_key=${AWS_ACCESS_KEY_ID}" \
-backend-config="secret_key=${AWS_SECRET_ACCESS_KEY}" \
-input=false -no-color
[1] https://www.terraform.io/language/settings/backends/configuration