Terraform - создать список объектов из списка значений - PullRequest
0 голосов
/ 04 ноября 2019

Я столкнулся со странной проблемой в Terraform v 0.11.8. Мы пытаемся закрыть порты ACR и сделать их доступными только в сети, а также для доступа к ним сервисов приложений.

Документация по правилам terraform IP_restriction показывает что-то вроде этого.

network_rule_set {
    default_action = "Deny"
    **ip_rule = [{
      action = "Allow"
      ip_range = "x.x.x.x"
    },
    {
      action = "Allow"
      ip_range = "y.y.y.y"
    }...]**
  }

У меня есть список IP-адресов в моей переменной / local

variable "myIps" {
   type="list"
   default="[x.x.x.x, y.y.y.y, z.z.z.z, ....]"
}

Как преобразовать список элементов [xxxx] в список объектов с помощью [{action = "Allow" ip_range = "xxxx"}]. Первое свойство action = "Allow" всегда статично. Я должен передать IP из моей переменной в свойство объекта.

Я пытался использовать шаблон регулярных выражений, например

variable "test2" {
  type="string"
  default = "{action=\"Allow\", ip_range=\"%s\"}"
}

, но это возвращает строку, а не список объектов.

Спасибо!

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете использовать цикл for для итерации записей ip_rule.

Вот мой рабочий пример с Terraform v0.12.9 + provider.azurerm v1.36.1.

resource "azurerm_resource_group" "test" {
  name     = "example-test"
  location = "East US"
}


variable "ips" {
   type= "list"
   default= ["8.8.8.8", "1.1.1.1","2.2.2.2"]

}

resource "azurerm_container_registry" "acr" {
    name                =   "mytestacr123"
    resource_group_name =   "${azurerm_resource_group.test.name}"
    location            =   "${azurerm_resource_group.test.location}"
    admin_enabled       =   false
    sku                 =   "Premium"


   # georeplication_locations    =   ["East US"]

    network_rule_set        {
        default_action  =   "Deny"
        # ip_rule block
          ip_rule =  [
              for ip in var.ips: {
              action  = "Allow"
              ip_range = ip
                     }
              ] 
          }
}

Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...