我们在 Azure 上使用 Terraform CLI,我们为每个订阅创建了默认存储帐户、密钥库、带有子网的 VNet 等代码。然后我们获得这些服务的输出。在输出中,我们还有与 VNET 子网相关的信息。我们之前只有不到 10 个子网,我们通过引用子网的输出来创建 VM。在同一代码中添加更多子网后,我们观察到在创建更多子网后,VNet->subnets 的输出已被重新调整/打乱,如下所示:
对输出的更改:
~ msdn_eastus_aks01 = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_aks01" -> "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_webapp"
~ msdn_eastus_apimgt = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_apimgt" -> "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_utility"
~ msdn_eastus_app = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_app" -> "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_int_web"
~ msdn_eastus_appgw = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_appgw" -> "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_apimgt"
~ msdn_eastus_db = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_db" -> "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_app"
~ msdn_eastus_int_web = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_int_web" -> (known after apply)
~ msdn_eastus_utility = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_utility" -> "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_db"
~ msdn_eastus_webapp = "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_webapp" -> "/subscriptions/xxxxxxxx-xxxxxxxx-xxx-xxxxxxxxxxxf/resourceGroups/msdn-eastus-test-subdefault/providers/Microsoft.Network/virtualNetworks/vnet-eastus-test-msdn/subnets/msdn_eastus_appgw"
因此,如果我们重新运行相同 VM 的代码,则引用的子网将发生更改,因此 SAME VM 将从不同子网获取新 IP,如上所示