我正在尝试配置 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 变量。