From 75c6fa2455da04c8452eb6910c0719c83fb3a952 Mon Sep 17 00:00:00 2001 From: Michael Bender Date: Thu, 16 Nov 2023 12:03:20 -0600 Subject: [PATCH 1/4] update terraform --- .../main.tf | 166 ++++++++++++++++++ .../outputs.tf | 7 + .../providers.tf | 16 ++ .../readme.md | 29 +++ .../variables.tf | 11 ++ 5 files changed, 229 insertions(+) create mode 100644 quickstart/101-virtual-network-manager-create-management-group-scope/main.tf create mode 100644 quickstart/101-virtual-network-manager-create-management-group-scope/outputs.tf create mode 100644 quickstart/101-virtual-network-manager-create-management-group-scope/providers.tf create mode 100644 quickstart/101-virtual-network-manager-create-management-group-scope/readme.md create mode 100644 quickstart/101-virtual-network-manager-create-management-group-scope/variables.tf diff --git a/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf b/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf new file mode 100644 index 00000000..ee33b209 --- /dev/null +++ b/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf @@ -0,0 +1,166 @@ +# Create the Resource Group + +resource "random_pet" "rg_name" { + prefix = var.resource_group_name_prefix +} + +resource "azurerm_resource_group" "rg" { + location = var.resource_group_location + name = random_pet.rg_name.id +} + +# Create three virtual networks +resource "random_string" "prefix" { + length = 4 + special = false + upper = false +} + +resource "random_pet" "virtual_network_name" { + prefix = "vnet-${random_string.prefix.result}" +} +resource "azurerm_virtual_network" "vnet" { + count = 3 + + name = "${random_pet.virtual_network_name.id}-0${count.index}" + resource_group_name = azurerm_resource_group.rg.name + location = azurerm_resource_group.rg.location + address_space = ["10.${count.index}.0.0/16"] +} + +# Add a subnet to each virtual network + +resource "azurerm_subnet" "subnet_vnet" { + count = 3 + + name = "default" + virtual_network_name = azurerm_virtual_network.vnet[count.index].name + resource_group_name = azurerm_resource_group.rg.name + address_prefixes = ["10.${count.index}.0.0/24"] +} + +data "azurerm_subscription" "current" { +} + +# Create a Management Group + +resource "random_pet" "management_group_name" { + prefix = "AVNM-management-group" +} +resource "azurerm_management_group" "mg" { + display_name = random_pet.management_group_name.id + + subscription_ids = [ + data.azurerm_subscription.current.subscription_id, + ] +} + +# register Microsoft.Network to the Management Group + +resource "null_resource" "register_rp_to_mg" { + provisioner "local-exec" { + command = < Date: Thu, 16 Nov 2023 13:27:21 -0600 Subject: [PATCH 2/4] finished testing --- .../main.tf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf b/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf index ee33b209..57069266 100644 --- a/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf +++ b/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf @@ -11,9 +11,9 @@ resource "azurerm_resource_group" "rg" { # Create three virtual networks resource "random_string" "prefix" { - length = 4 + length = 4 special = false - upper = false + upper = false } resource "random_pet" "virtual_network_name" { @@ -65,9 +65,9 @@ resource "null_resource" "register_rp_to_mg" { } } -resource "time_sleep" "wait_5_seconds" { +resource "time_sleep" "wait_5_seconds" { create_duration = "5s" - depends_on = [null_resource.register_rp_to_mg] + depends_on = [null_resource.register_rp_to_mg] } # Create a Virtual Network Manager instance @@ -98,7 +98,7 @@ resource "random_pet" "network_group_policy_name" { } resource "azurerm_policy_definition" "network_group_policy" { - name = "${random_pet.network_group_policy_name.id}" + name = random_pet.network_group_policy_name.id policy_type = "Custom" mode = "Microsoft.Network.Data" display_name = "Policy Definition for Network Group" From 5895b4f1c47b43e075ef437a04d3c6484357b8ed Mon Sep 17 00:00:00 2001 From: Michael Bender Date: Fri, 17 Nov 2023 09:33:04 -0600 Subject: [PATCH 3/4] updates from Review --- .../providers.tf | 2 +- .../readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/quickstart/101-virtual-network-manager-create-management-group-scope/providers.tf b/quickstart/101-virtual-network-manager-create-management-group-scope/providers.tf index fac66bf7..d6b429cc 100644 --- a/quickstart/101-virtual-network-manager-create-management-group-scope/providers.tf +++ b/quickstart/101-virtual-network-manager-create-management-group-scope/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { azurerm = { source = "hashicorp/azurerm" - version = ">= 3.56.0" + version = "~> 3.56.0, < 4.0" } random = { source = "hashicorp/random" diff --git a/quickstart/101-virtual-network-manager-create-management-group-scope/readme.md b/quickstart/101-virtual-network-manager-create-management-group-scope/readme.md index 60996245..eb76db5e 100644 --- a/quickstart/101-virtual-network-manager-create-management-group-scope/readme.md +++ b/quickstart/101-virtual-network-manager-create-management-group-scope/readme.md @@ -1,4 +1,4 @@ -# Azure resource group +# Azure Virtual Network Manager with management group scope This template deploys an Azure Virtual Network Manager instance with a connectivity configuration for a Mesh topology using a management group scope. It includes resources including virtual networks, subnets, and more. From 99037bb0e53780825dffb6d82d3fb31f5e11b520 Mon Sep 17 00:00:00 2001 From: hezijie Date: Tue, 21 Nov 2023 16:31:26 +0800 Subject: [PATCH 4/4] fix example and e2e test --- .../main.tf | 14 ++++++-- .../variables.tf | 6 ++++ test/e2e/discard_writer.go | 11 ++++++ test/e2e/quickstart_test.go | 34 ++++++++++++++++++- 4 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 test/e2e/discard_writer.go diff --git a/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf b/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf index 57069266..5ff10534 100644 --- a/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf +++ b/quickstart/101-virtual-network-manager-create-management-group-scope/main.tf @@ -47,6 +47,7 @@ data "azurerm_subscription" "current" { resource "random_pet" "management_group_name" { prefix = "AVNM-management-group" } + resource "azurerm_management_group" "mg" { display_name = random_pet.management_group_name.id @@ -55,14 +56,21 @@ resource "azurerm_management_group" "mg" { ] } +data "azurerm_client_config" "this" {} + +resource "azurerm_role_assignment" "management_group_owner" { + principal_id = coalesce(var.msi_id, data.azurerm_client_config.this.object_id) + scope = azurerm_management_group.mg.id + role_definition_name = "Contributor" +} + # register Microsoft.Network to the Management Group resource "null_resource" "register_rp_to_mg" { provisioner "local-exec" { - command = <