azure - 如何为 Azure 可用性集中的虚拟机数量创建 Terraform for_each 循环
问题描述
我们可以使用“计数”循环在可用性集中创建多个 azure vm。
我们如何使用“for_each”循环创建相同的主机名和网络接口 ID 将是动态和循环的。(地形 > 0.12.6)
resource "azurerm_virtual_machine" "test" {
# user provides inputs only for the number of vms to be created in the Azure avaialibility set
count = var.count
name = "acctvm${count.index}"
location = azurerm_resource_group.test.location
availability_set_id = azurerm_availability_set.avset.id
resource_group_name = azurerm_resource_group.test.name
network_interface_ids = [element(azurerm_network_interface.test.*.id, count.index)]
vm_size = "Standard_DS1_v2"
tags = var.tags
解决方案
For-each 需要一个集合来循环。我假设您使用变量作为输入,所以
variable "vms" {
type = list(string)
default = ["alpha", "beta"]
}
variable "vms_data" {
type = map(map(string))
default = {
alpha = {
hostname = "alpha"
interfaceid = "01"
}
alpha = {
hostname = "beta"
interfaceid = "02"
}
}
}
resource "azurerm_virtual_machine" "test" {
for_each = toset(var.vms)
name = var.vms_data[each.value].hostname
location = azurerm_resource_group.test.location
availability_set_id = azurerm_availability_set.avset.id
resource_group_name = azurerm_resource_group.test.name
network_interface_ids = [
element(azurerm_network_interface.test.*.id, var.vms_data[each.value].interfaceid)]
vm_size = "Standard_DS1_v2"
tags = var.tags
}
但它尚未在 Azure 中实现(v. 12.23)。我有一个错误The name "for_each" is reserved for use in a future version of Terraform.
推荐阅读
- electron - 电子实例通信
- dax - 计算选定成熟度的 2 个位置之间的矩阵视觉价格差异 - PowerBI Dektop
- javascript - React 的前端滞后。是抢吗?
- function - 如何从另一个 StatefulWidget 调用 Stateful Widget 中的函数?
- reactjs - 反应:无法读取 null 的属性“innerText”
- sql - 在另一个表中查找具有所有值的列
- windows - 清除 cmd 和 windows-terminal 的键盘快捷键
- reactjs - React:渲染传入 Websocket 消息的数组
- android - 类型不匹配。必需:找到的上下文:在片段中
- c++ - 使用大型稀疏矩阵乘法的 Rcpp Armadillo 加速