首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Terraform中插值计数?

如何在Terraform中插值计数?
EN

Stack Overflow用户
提问于 2017-08-19 04:27:18
回答 3查看 1.2K关注 0票数 0

我正在Azure中创建多个具有腐蚀响应NIC和PublicIP的虚拟机。

我可以为虚拟机创建唯一的名称,没有问题:

代码语言:javascript
复制
resource "azurerm_virtual_machine" "workernode" {
    count = "${var.nodeCount}"
    name = "workernode-${count.index +1}"

外网IP:

代码语言:javascript
复制
resource "azurerm_public_ip" "AliasworkerPubIP" {
    count = "${var.nodeCount}"
    name = "workerpubip${count.index +1}"

和NIC:

代码语言:javascript
复制
resource "azurerm_network_interface" "workerNIC" {
    count = "${var.nodeCount}"
    name = "workerNIC.${count.index +1}"  

但我不知道如何让它工作,然后连接网卡到刚刚创建的PublicIP…

我已经尝试了各种不同的方法,但没有任何东西点击...我知道我错过了一些东西,或者没有正确理解插值解析,但是什么?!

下面是我尝试过的例子:

代码语言:javascript
复制
public_ip_address_id = "${azurerm_public_ip}.${format("Alias_WorkerIP%d.id", count.index +1)}" 

public_ip_address_id = "${format("Alias_WorkerIP%d.id", count.index +1)}"

public_ip_address_id = "${format("azurerm_public_ip.workerpubip.%s.id", count.index +1)}" 

你知道我哪里错了吗?

EN

回答 3

Stack Overflow用户

发布于 2017-08-22 02:58:42

目前推荐的表达方式是:

代码语言:javascript
复制
public_ip_address_id = "${azurerm_public_ip.workerpubip.*.id[count.index]}"

使用此索引运算符([ ... ])允许Terraform更好地理解这意味着的依赖性,因此如果只需要替换一个公共IP实例,它可以理解只需要更新一个对应的azurerm_network_interface

当使用element函数Terraform时,它只“看到”azurerm_public_ip.workerpubip.*.id表达式,并且保守地假设存在对所有azurerm_public_ip ids的依赖。

票数 3
EN

Stack Overflow用户

发布于 2017-08-20 03:20:19

我是这样解决这个问题的:

public_ip_address_id = "${element(azurerm_public_ip.workerpubip.*.id,count.index)}“

票数 2
EN

Stack Overflow用户

发布于 2019-09-03 10:03:22

在azurerm_network_interface模块中尝试此功能

代码语言:javascript
复制
 public_ip_address_id          = "${element(azurerm_public_ip.main-rg__vm-ip.*.id, count.index)}"

在azurerm_public_ip模块中

代码语言:javascript
复制
resource azurerm_public_ip main-rg__vm-ip {
  count               = "${var.vm_count}"
  name                = "${var.environment}-vm${count.index+1}-ip"
  location            = "${var.location}"
  resource_group_name = "${azurerm_resource_group.main-rg.name}"
  sku                 = "Basic"
  allocation_method   = "Dynamic"


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45764606

复制
相关文章

相似问题

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