terraform - Terraform 根据条件在不同的提供者之间进行选择
问题描述
我正在尝试使用 Terraform 来自动部署环境,但是设置有些棘手:
我需要提供 DNS CNAME 记录,但我的问题是,根据环境,我需要在Dyn DNS或 Azure DNS 中提供该记录(它们是互斥的)
而且,出于同样的原因,例如,Dyn
当我想在 Azure 中进行预配时,初始化 Terraform 提供程序对我来说是没有意义的。
我认为可行的是包括两个providers
:
provider azurerm {
version = "=1.44.0"
client_id = var.dns_provider_client_id
client_secret = var.dns_provider_client_secret
subscription_id = var.dns_provider_subscription_id
tenant_id = var.dns_provider_tenant_id
}
provider dyn {
version = "=1.2.0"
customer_name = var.dyn_customer_name
password = var.dyn_password
username = var.dyn_username
}
然后,在运行时tf plan
,我会将与我不使用的提供程序相关的变量设置为空字符串,然后,在提供记录时,在此处的帮助下,我认为我可以有条件地提供资源:
resource azurerm_dns_cname_record dns_name {
count = var.dyn_dns_zone.name == "" ? 1 : 0
name = "..."
record = "..."
resource_group_name = "..."
ttl = 60
zone_name = "..."
}
resource dyn_record dyn {
count = var.dyn_dns_zone.name == "" ? 0 : 1
zone = "..."
name = "..."
value = "..."
type = "..."
ttl = 60
}
但我的问题是,无论我创建什么记录,我都需要初始化两个提供程序,所以即使我不需要Dyn
环境提供程序,使用现有逻辑,我仍然需要传递正确的值(而不是空字符串)到其所需的变量。
有没有办法解决这个问题?也许类似于“仅在我真正需要时才使用提供程序”
解决方案
推荐阅读
- reactjs - 在 React Native 自定义功能组件中访问 refs
- eclipse - macOS Big Sur 上的 Jaspersoft Studio 6.16.0 似乎已损坏
- visual-studio-2019 - VS2019 不允许我将数据源添加到列表框
- python - 使用 readline() 读取一整行,然后移动到 .txt 文件中的下一行,随后每次使用 Python 运行
- java - 插入两个实体并加入主键
- python - GridSearchCV 评分
- storybook - 如何以编程方式设置故事书背景
- android - 用于增强现实的 Android SDK,允许单击虚拟对象
- windows - 有没有办法从用户那里删除管理员权限并立即在 powershell 中应用它而不重新登录用户?
- nginx - https 请求将发送到 80 端口