代码之家  ›  专栏  ›  技术社区  ›  woter324

引用其他资源组中的资源

  •  1
  • woter324  · 技术社区  · 6 年前

    在Azure中,我使用Terraform将基础设施部署到资源组02(rg02)。我在资源组01(rg01)中有一个VNet(nvn01)和子网(subnet-000),需要在中的资源中引用它 main.tf .

    我试过三种方法:

    提供子网id作为变量。子网id已从中复制和粘贴 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"
    

    我想知道是否有一个问题的情况下,作为RG和VNet出来的大写。我知道Azure有时会区分大小写。


    方法2

    有一个 bug #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}"

    这个错误在 初始化 在这个阶段,前面提到的bug很明显。我试着通过设置 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中是否有类似的函数。也许我得给子网id路径加前缀?

    不管怎么说,由于Azure提供商的例子很少,至少可以说,如果有人有任何建议,我将非常感谢您的分享,让1.17.0下载而不必自己构建或修复子网id。

    蒂亚。

    0 回复  |  直到 6 年前
    推荐文章