Terraform создает массив/список из числа и переменной с несколькими элементами

У меня есть переменная с первыми 3 октетами диапазона IP-адресов, например «172.16.100», и 2 переменные с начальным IP-адресом (последний октет, например 2) и номером IP-адреса, например 3.

Как мне создать такой список, чтобы получить массив/список типа:

[ 172.16.100.2, 172.16.100.3, .....]

Или есть лучший способ создать диапазон IP-адресов из начального IP-адреса?

Спасибо!

Думаю, большего и не сделаешь, только это: stackoverflow.com/questions/54122560/…

KKI 24.05.2024 11:27

Вы не можете назначить IP addresses в диапазоне от «0» до «3» в лазурном языке. Azure резервирует первые четыре адреса в каждом диапазоне адресов подсети. Для получения более подробной информации обратитесь к этому MS Doc.

Venkat V 24.05.2024 13:06
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать функцию диапазона для создания списка чисел с использованием начального значения, предельного значения и значения шага:

range(max)
range(start, limit)
range(start, limit, step)

Пример

variable "start_ip_address" {
  type        = string
  description = "The starting IP address in format 'x.x.x' - example '172.16.100'"
  default     = "172.16.100"
}

variable "start_octet" {
  type        = number
  description = "The starting octet in the IP address."
  default     = 4
}

variable "ip_count" {
  type        = number
  description = "Number of IP addresses to generate."
  default     = 5
}

locals {
  ip_addresses = [
    for i in range(var.ip_count) :
    format("%s.%d", var.start_ip_address, i + var.start_octet)
  ]
}

output "ip_addresses" {
  value = local.ip_addresses
}

Бегу terraform plan:

Changes to Outputs:
  + ip_addresses = [
      + "172.16.100.4",
      + "172.16.100.5",
      + "172.16.100.6",
      + "172.16.100.7",
      + "172.16.100.8",
    ]

Другие вопросы по теме