terraform - 如何为 Terraform S3 后端资源传递变量?
问题描述
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
不能通过变量文件为上面的bucket和key提供值吗?
因为当我尝试这样做时:
terraform {
backend "s3" {
bucket = var.bucket
key = var.key
}
}
,我收到以下错误:
Error: Variables not allowed
on main.tf line 3, in terraform:
3: bucket = var.bucket
Variables may not be used here.
Error: Variables not allowed
on main.tf line 4, in terraform:
4: key = key
Variables may not be used here.
解决方案
创建一个以backend.tfvars
内容命名的文件:
bucket = "mybucket"
key = "path/to/my/key"
在命令的命令行选项中指定此文件名terraform
:
terraform init -backend-config=backend.tfvars
您需要使用单独的后端配置文件而不是通常的 tfvars 文件的原因是在设置后端时会使用这些值。这意味着它们需要在您运行时提供terraform init
,而不是稍后在您将后端与terraform apply
.
有关更多详细信息,请参阅有关部分配置的 terraform 文档。
推荐阅读
- python-3.x - 调用show后如何将matplotlib图形保存为pickle文件?
- python - ModuleNotFoundError:没有名为“rest-framework”的模块与 virtualenv 和 python3.7.4
- sharepoint - 命令失败:wmic os get Caption
- php - 基于用户偏好的区域设置
- java - 从 Firebase Realtimedatabase 中删除用户时,Android 应用程序崩溃
- vba - 使用 VBA 从 Outlook 电子邮件中删除保留策略
- c# - 如何在不指定泛型参数的情况下将实现实例转换为接口(实现知道它)?
- python - selenium.common.exceptions.WebDriverException:消息:无效参数:无法识别的功能:带有 Selenium 和 ChromeDriver 77.0 的 chromeOptions
- angular - Angular 6 - 声明两个具有多个模块的组件
- java - Spark/scala 中的 SQL 查询