Мы используем count для просмотра списка карт для создания нескольких ресурсов в terraform.Случайное удаление и вставка в список является проблемой - PullRequest
0 голосов
/ 25 апреля 2019

У нас есть много подсетей, которые создаются точно так же, как в terraform. Мы используем переменную count и list of maps для создания нескольких подсетей в одном цикле. Ввод переменной списка карт из файла terraform.tfvars. Код в основном выглядит следующим образом:

Terraform version : 0.11
Provider : azurerm

Ввод списка переменных из файла terraform.tfvars

"subnet_vnet_mapping"       =[
    {subnet_name    =   "sa100-monitoring"           rg_name="sa100-network"     vnet_name="sa100-vnet" subnet_address_prefix="10.140.144.124/28"},

    {subnet_name    =   "sa100-tools"              rg_name="sa100-network"     vnet_name="sa100-vnet" subnet_address_prefix="10.140.145.124/28"},

    {subnet_name    =   "sa100-core"                       rg_name="sa100-network"     vnet_name="sa100-vnet" subnet_address_prefix="10.140.146.124/28"}

]

variable "subnet_vnet_mapping"{
    type="list"
 }

Код перебирает переменную List для создания подсетей

resource "azurerm_subnet" "create-subnet" {

  count                 =   "length(var.subnet_vnet_mapping)"

  name                  =     "${lookup(var.subnet_vnet_mapping[count.index],"subnet_name")}

virtual_network_name  =     "${lookup(var.subnet_vnet_mapping[count.index],"vnet_name")}

address_prefix        =   "${lookup(var.subnet_vnet_mapping[count.index],"subnet_address_prefix")}"

resource_group_name   =   "${lookup(var.subnet_vnet_mapping[count.index],"rg_name")}

}

Проблема в том, что Terraform ссылается на ресурсы, используя числовой идентификатор в файле tfstate, например create-subnet [0], create-subnet [1] и create-subnet [2] для каждого значения подсети в переменной списка Таким образом, если мы удалим элемент из середины списка, Terraform захочет воссоздать все ресурсы с большим числовым индексом.

Чтобы быть более понятным, и, например, если ресурс подсети Azure «sa100-tools», на который ссылается индекс create-subnet [1], удаляется из переменной списка, Terraform уничтожает и воссоздает все более крупные индексы, которые превышают или равно create-subnet [1]. В нашем случае это уничтожение подсетей, на которые ссылаются create-subnet [1] и create-subnet [2].

Кто-нибудь сталкивался с этой проблемой? Пожалуйста, предложите свой вклад и мысли.

Спасибо!

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