Ссылки на ресурсы в других группах ресурсов - PullRequest
0 голосов
/ 10 октября 2018

В Azure я развертываю инфраструктуру в Resource Group 02 (rg02) с помощью Terraform.У меня есть VNet (nvn01) и подсеть (subnet-000) в группе ресурсов 01 (rg01), и мне нужно сослаться на это в ресурсе в main.tf.

Я пробовал три способа:

Метод 1

Предоставление идентификатора подсети в качестве переменной.Идентификатор подсети был скопирован и вставлен из Resource Explorer .init не выдает никакой ошибки, однако, plan генерирует:

1 error(s) occurred:

* module.app_gateway.azurerm_application_gateway.network: 1 error(s) occurred:

* azurerm_application_gateway.network: Error Creating/Updating ApplicationGateway "appgw01" (Resource Group "rg02"): network.ApplicationGatewaysClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=404 Code="NotFound" Message="Resource /subscriptions/mySubscriptionGuid/resourceGroups/RG01/providers/Microsoft.Network/virtualNetworks/NVN01 not found." Details=[]

.tfvars содержит строку:

subnet_id = "/subscriptions/mySubscriptionGuid/resourceGroups/rg01/providers/Microsoft.Network/virtualNetworks/nvn01/subnets/subnet-000"

Интересно, существует ли проблема с CaSeкак RG и VNet выходят в верхнем регистре.Я знаю, что Azure может иногда вызывать SeSsItIvE.


Метод 2

В этом методе есть ошибка # 2016 , исправленная в невыпущенной версии 1.17.0.Используя data{}, я ссылаюсь на подсеть следующим образом:

data "azurerm_subnet" "shared" {
  name                      = "$(var.shared_virtual_network_subnet_name)"   
  virtual_network_name      = "$(var.shared_virtual_network_name)"
  resource_group_name       = "$(var.shared_resource_group_name)"
}

и в моем ресурсе называю это subnet_id = "${data.azurerm_subnet.shared.id}"

Это ошибки на этапе init, где вышеупомянутая ошибкаочевидный.Я пытался сказать TF использовать 1.17.0, установив version = "1.17.0" в объявлении provider{}, но он игнорируется, и я получаю 1.16.0.


Метод 3

Я также попробовал метод 2, но вместо использования azurerm_subnet;выбрал azurerm_virtual_network и вызвал его с помощью:

subnet_id = "${data.azurerm_virtual_network.shared.id}/subnets/${var.shared_virtual_network_subnet_name}"

Однако ошибка такая же, как и в методе 2, и я отмечаю, что группа ресурсов находится не в том месте.Я надеюсь, что 1.17.0 исправит обе ошибки.

В шаблонах ARM, я помню, в этом сценарии нужно было использовать ResourceId('subnetId'), поэтому мне интересно, есть ли подобная функция в TF.Может быть, мне нужно добавить префикс к пути к идентификатору подсети?

В любом случае, поскольку примеры провайдеров Azure невелики, по меньшей мере, если у кого-то есть указатели, я был бы признателен, если бы вы поделились, при загрузке 1.17.0 без необходимости его сборки или исправления идентификатора подсети.

TIA.

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