如何在 Terraform 中使用机密的环境变量



我正在尝试配置 Terraform,以便它使用 AWS Secrets 的环境变量。

terraform.tfvars:

access_key = "${var.TF_VAR_AWS_AK}"
secret_key = "${var.TF_VAR_AWS_SK}"
aws_region = "eu-north-1"

main.tf:

provider "aws" {
region     = "${var.aws_region}"
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}

在控制台中(在 Windows 10 上(:

set TF_VAR_AWS_AK = asd12345asd12345
set TF_VAR_AWS_SK = asd12345asd12345
terraform plan

错误消息:

Error: Variables not allowed
on terraform.tfvars line 1:
1: access_key = "${var.TF_VAR_AWS_AK}"
Variables may not be used here.
Error: Variables not allowed
on terraform.tfvars line 2:
2: secret_key = "${var.TF_VAR_AWS_SK}"
Variables may not be used here.

不知道问题出在哪里。TF文档说可以使用env vars来获取机密。

要使用环境变量配置提供程序后端,根本不需要在配置中编写任何特殊内容。相反,您可以只设置与相关提供程序相关的常规环境变量。

例如,您似乎正在使用 AWS,在这种情况下,您可以使用AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量,也可以填充凭证文件,与 AWS 开发工具包相同。然后,您可以跳过所有变量声明,只需减少提供程序块,如下所示:

provider "aws" {
region = "${var.aws_region}"
}

Terraform 的 AWS提供商支持与 AWS CLI 相同的凭证源集,无需任何特定于 Terraform 的配置。这是为 AWS 提供商配置凭证的推荐方法,因为这样您只需设置 AWS 凭证一次,就可以同时使用 AWS 开发工具包、Terraform 以及与 AWS 交互并支持其约定的任何其他软件。

有关 AWS 提供商身份验证选项的更多信息,请参阅 AWS 提供商文档。

如文档中所述: https://www.terraform.io/docs/configuration/variables.html#environment-variables

环境变量名称必须TF_VAR_<yourtfvariablename>

使用这样的地形变量:

variable "aws_region" {
type = string
}

您的环境变量名称必须TF_VARS_aws_region


实际上,没有办法直接在地形中使用环境变量。(例如:region = env.AWS_REGION(您必须使用TF_VAR才能使用 env 变量。

相关内容

  • 没有找到相关文章

最新更新