В 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.