Terraform IP 范围

Terraform ip range

我正在尝试结合使用 for 循环和范围函数来创建一个 ip 列表。我试图让循环遍历数字范围并将该数字附加为 ip 地址中的最后一位数字。

locals {
  windows_ip_list = [for i in range(var.Number) : format("%s%02d", "10.16.0.1", i)]
}

给变量 var.Number 一个值 5 创建一个 5 元素的元组,但会出现以下错误。

│    9:   private_ip = local.windows_ip_list  #var.win_ip[count.index]
│     ├────────────────
│     │ local.windows_ip_list is tuple with 5 elements
│ 
│ Inappropriate value for attribute "private_ip": string required.
resource "aws_instance" "Windows" {
  ami = "ami-02c1f4de3809f0050"
  instance_type   = "t2.large"
  #subnet_id       = aws_subnet.Engineering[count.index].id 
  subnet_id = aws_subnet.windows.id 
  security_groups = [aws_security_group.Engineering.id]
  key_name = aws_key_pair.ENG-DEV.id
  count    = var.Number
  private_ip = local.windows_ip_list  #var.win_ip[count.index]
  associate_public_ip_address = false

如果您能帮助创建所需的列表,我们将不胜感激。

提前致谢。

您应该使用 local.windows_ip_list[count.index] 而不是 local.windows_ip_list 在 windows_ip_list 元组中引用私有 ip 的索引,因为 private_ip 属性需要字符串值而不是列表

要获得清晰的视图,请尝试回显 local.windows_ip_list 包含的值:

terraform console

然后键入 local.windows_ip_list 并按回车键

调用变量并使用 count.index 是固定的方式。

private_ip = local.windows_ip_list[count.index]