首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅将公网IP添加到一个网卡(Azure)

仅将公网IP添加到一个网卡(Azure)
EN

Stack Overflow用户
提问于 2021-09-20 13:24:00
回答 1查看 50关注 0票数 1

我通过for_each创建了几个虚拟机,但只有一个必须具有公共IP地址。我该怎么做呢?可以理解如何使用count来做到这一点,但是for_each的方法是什么呢?

main.tf

代码语言:javascript
复制
variable "vms" {}

resource "azurerm_network_interface" "nics" {
  for_each            = var.vms
  name                = each.value.nic
  location            = var.resource_location
  resource_group_name = azurerm_resource_group.rg.name

  ip_configuration {
    name                          = "nic-${each.value.name}"
    subnet_id                     = lookup(azurerm_subnet.subnets, each.value["subnet_id"], null)["id"]
    private_ip_address_allocation = "Dynamic"
    public_ip_address_id          = azurerm_public_ip.ext_ip.id (BUT ONLY FOR THE FIRST VM IN LIST)
      }

}

terraform.tfvars

代码语言:javascript
复制
vms = {
  vm1 = {
    disk_size = "30"
    name      = "vm1"
    nic       = "nic-1"
    sku       = "7_9"
    subnet_id = "snet1"
    username  = "centos"
    vm_size   = "Standard_B1ms"
  }
  vm2 = {
    disk_size = "35"
    name      = "vm2"
    nic       = "nic-2"
    sku       = "7_9"
    subnet_id = "snet2"
    username  = "centos"
    vm_size   = "Standard_B1ls"
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 18:05:15

通过以下方法,您可以准备一个有条件的公网ip映射,然后在此基础上创建资源。

variables.tf

代码语言:javascript
复制
variable "vms" {
 type = map(object({
  #...
  public_ip  = optional(bool)
 }))
}

locals.tf

代码语言:javascript
复制
 pips = { for k, vm in var.vms : k => {
    # add required attributes to generate public ip resource
    } if vm.public_ip == true
  }

main.tf

代码语言:javascript
复制
 resource "azurerm_public_ip" "public_ip" {
    for_each = local.pips 

    # ...
  }

resource "azurerm_network_interface" "nics" {
   for_each = var.vms
  # ...

  ip_configuration {
  #...
  public_ip_address_id = try(azurerm_public_ip.public_ip[each.key].id,null)
 }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69255210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档