Nor*_*sic 7 terraform terraform-provider-azure
好的,所以我有三个.tf文件:main.tf我将 azure 声明为提供者,resources.tf声明我的所有资源的位置,以及variables.tf.
我variables.tf用来存储resources.tf.
但是,我想使用存储在我的变量文件中的变量来填充后端范围中的字段,如下所示:
main.tf:
provider "azurerm" {
version = "=1.5.0"
}
terraform {
backend "azurerm" {
storage_account_name = "${var.sa_name}"
container_name = "${var.c_name}"
key = "${var.key}"
access_key = "${var.access_key}"
}
}
Run Code Online (Sandbox Code Playgroud)
变量存储variables.tf如下:
variable "sa_name" {
default = "myStorageAccount"
}
variable "c_name" {
default = "tfstate"
}
variable "key" {
default = "codelab.microsoft.tfstate"
}
variable "access_key" {
default = "weoghwoep489ug40gu ... "
}
Run Code Online (Sandbox Code Playgroud)
我在运行时得到了这个terraform init:
terraform.backend:配置不能包含插值
在 Terraform 的核心可以初始化之前,Terraform 非常早地加载了后端配置。这是必要的,因为后端决定了该核心的行为。核心是处理插值处理。因此,不能在后端配置中使用插值。
如果您想参数化后端配置,我们建议使用带有“-backend-config”标志的部分配置到“terraform init”。
有没有办法解决这个问题?我真的希望我的所有密钥/秘密都在同一个文件中......而不是主文件中的一个我最好推到 git 的密钥。
Yev*_*man 10
Terraform 不太关心文件名:它只是加载.tf当前目录中的所有文件并处理它们。名称,如main.tf,variables.tf和outputs.tf是有用的约定,使开发人员更容易导航代码,但它们不会对Terraform的行为产生太大影响。
您看到错误的原因是您尝试在backend配置中使用变量。不幸的是,Terraform 不允许${...}在后端进行任何插值(任何)。从文档中引用:
只能指定一个后端,并且配置不能包含插值。Terraform 将验证这一点。
因此,您必须对 中的所有值进行硬编码backend,或者提供部分配置并使用外部工具(例如Terragrunt)通过 CLI 参数填写其余配置。
| 归档时间: |
|
| 查看次数: |
6085 次 |
| 最近记录: |