如何为Terraform S3后端资源传递变量?
是否不可能通过变量文件为上面的bucket和key提供值 因为当我尝试这样做时:如何为Terraform S3后端资源传递变量?,terraform,Terraform,是否不可能通过变量文件为上面的bucket和key提供值 因为当我尝试这样做时: terraform { backend "s3" { bucket = "mybucket" key = "path/to/my/key" region = "us-east-1" } } ,我得到以下错误: 错误:不允许使用变量 在main.tf 3号线,地形: 3:bucket=var.buc
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
,我得到以下错误:
错误:不允许使用变量
在main.tf 3号线,地形:
3:bucket=var.bucket
这里不能使用变量。
错误:不允许使用变量
在main.tf 4号线,地形:
4:键=键
这里不能使用变量。
创建一个名为backend.tfvars的文件,其内容如下:
terraform {
backend "s3" {
bucket = var.bucket
key = var.key
}
}
在terraform
命令的命令行选项中指定此文件名:
terraforminit-backend config=backend.tfvars
需要使用单独的后端配置文件而不是通常的tfvars文件的原因是,在设置后端时会使用这些值。这意味着当您运行terraforminit
时需要提供它们,而不是稍后您使用带有terraformapply
等命令的后端时
有关更多详细信息,请参阅上的terraform文档。非常感谢!我们不能通过variables.tf
或.tfvars
文件传递后端的bucket和key名称吗?我问这个问题的原因是——我们有几十个应用程序,每个应用程序有六个环境。所以我们总共需要将近100份州档案。使用100个环境变量-这是一个好的做法吗?请告知。当我给出后端bucket名称并输入.tfvars时,正如我在问题中所解释的,我得到了错误。我不确定我是否理解这个解决方案。因此,除了在tfvars中提供后端bucket名称和键之外,我还应该创建一个TF_CLI_ARGS_init环境变量?请帮忙!我编辑了我的答案,以显示如何从文件中读取后端配置。
bucket = "mybucket"
key = "path/to/my/key"