updates
This commit is contained in:
180
quickstart/101-virtual-network-manager-create/101-full/main.tf
Normal file
180
quickstart/101-virtual-network-manager-create/101-full/main.tf
Normal file
@@ -0,0 +1,180 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
azurerm = {
|
||||
source = "hashicorp/azurerm"
|
||||
version = "3.56.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "azurerm" {
|
||||
features {}
|
||||
}
|
||||
|
||||
# Define variables
|
||||
|
||||
variable "region" {
|
||||
type = string
|
||||
default = "eastus"
|
||||
}
|
||||
|
||||
variable "subscriptionID" {
|
||||
type = string
|
||||
default = "6a5f35e9-6951-499d-a36b-83c6c6eed44a"
|
||||
}
|
||||
variable "resourceGroup" {
|
||||
type = string
|
||||
default = "rg-learn-eastus-001"
|
||||
}
|
||||
|
||||
variable "networkManager" {
|
||||
type = string
|
||||
default = "nm-learn-eastus-001"
|
||||
}
|
||||
|
||||
variable "networkGroup" {
|
||||
type = string
|
||||
default = "ng-learn-eastus-001"
|
||||
}
|
||||
|
||||
variable "configurationName" {
|
||||
type = string
|
||||
default = "connectivityconfig"
|
||||
}
|
||||
|
||||
variable "connectivityTopology" {
|
||||
type = string
|
||||
default = "Mesh"
|
||||
}
|
||||
|
||||
variable "targetRegion" {
|
||||
type = string
|
||||
default = "eastus"
|
||||
}
|
||||
|
||||
variable "commitType"{
|
||||
type = string
|
||||
default = "connectivity"
|
||||
}
|
||||
|
||||
# Create the Resource Group
|
||||
|
||||
resource "azurerm_resource_group" "rg" {
|
||||
name = var.resourceGroup
|
||||
location = var.region
|
||||
}
|
||||
|
||||
# Create a Virtual Network Manager instance
|
||||
|
||||
data "azurerm_subscription" "current" {
|
||||
}
|
||||
|
||||
resource "azurerm_network_manager" "networkManager" {
|
||||
name = var.networkManager
|
||||
location = var.region
|
||||
resource_group_name = var.resourceGroup
|
||||
scope {
|
||||
subscription_ids = [data.azurerm_subscription.current.id]
|
||||
}
|
||||
scope_accesses = ["Connectivity", "SecurityAdmin"]
|
||||
description = "example network manager"
|
||||
tags = {
|
||||
foo = "bar"
|
||||
}
|
||||
}
|
||||
|
||||
# Create three virtual networks
|
||||
resource "azurerm_virtual_network" "vnet_001" {
|
||||
name = "vnet-learn-prod-eastus-001"
|
||||
resource_group_name = var.resourceGroup
|
||||
location = var.region
|
||||
address_space = ["10.0.0.0/16"]
|
||||
depends_on = [azurerm_resource_group.rg]
|
||||
}
|
||||
|
||||
resource "azurerm_virtual_network" "vnet_002" {
|
||||
name = "vnet-learn-prod-eastus-002"
|
||||
resource_group_name = var.resourceGroup
|
||||
location = var.region
|
||||
address_space = ["10.1.0.0/16"]
|
||||
depends_on = [azurerm_resource_group.rg]
|
||||
}
|
||||
|
||||
resource "azurerm_virtual_network" "vnet_003" {
|
||||
name = "vnet-learn-test-eastus-003"
|
||||
resource_group_name = var.resourceGroup
|
||||
location = var.region
|
||||
address_space = ["10.2.0.0/16"]
|
||||
depends_on = [azurerm_resource_group.rg]
|
||||
}
|
||||
|
||||
# Add a subnet to each virtual network
|
||||
|
||||
resource "azurerm_subnet" "subnet_vnet_001" {
|
||||
name = "default"
|
||||
virtual_network_name = azurerm_virtual_network.vnet_001.name
|
||||
resource_group_name = var.resourceGroup
|
||||
address_prefixes = ["10.0.0.0/24"]
|
||||
depends_on = [azurerm_virtual_network.vnet_001]
|
||||
}
|
||||
|
||||
resource "azurerm_subnet" "subnet_vnet_002" {
|
||||
name = "default"
|
||||
virtual_network_name = azurerm_virtual_network.vnet_002.name
|
||||
resource_group_name = var.resourceGroup
|
||||
address_prefixes = ["10.1.0.0/24"]
|
||||
depends_on = [azurerm_virtual_network.vnet_002]
|
||||
}
|
||||
|
||||
resource "azurerm_subnet" "subnet_vnet_003" {
|
||||
name = "default"
|
||||
virtual_network_name = azurerm_virtual_network.vnet_003.name
|
||||
resource_group_name = var.resourceGroup
|
||||
address_prefixes = ["10.2.0.0/24"]
|
||||
depends_on = [azurerm_virtual_network.vnet_003]
|
||||
}
|
||||
|
||||
# Create a network group
|
||||
|
||||
resource "null_resource" "ng_create" {
|
||||
provisioner "local-exec" {
|
||||
command = "az network manager group create --name ${var.networkGroup} --network-manager-name ${var.networkManager} --resource-group ${var.resourceGroup}"
|
||||
}
|
||||
depends_on = [azurerm_network_manager.networkManager]
|
||||
}
|
||||
|
||||
# Define membership for a mesh configuration
|
||||
|
||||
resource "null_resource" "static_members"{
|
||||
provisioner "local-exec"{
|
||||
command="az network manager group static-member create --name vnet-02 --network-group ${var.networkGroup} --network-manager-name ${var.networkManager} --resource-group ${var.resourceGroup} --resource-id /subscriptions/${var.subscriptionID}/resourceGroups/${var.resourceGroup}/providers/Microsoft.Network/virtualnetworks/vnet-learn-prod-eastus-002"
|
||||
}
|
||||
depends_on=[null_resource.ng_create]
|
||||
}
|
||||
|
||||
resource "null_resource" "static_members01"{
|
||||
provisioner "local-exec"{
|
||||
command="az network manager group static-member create --name vnet-01 --network-group ${var.networkGroup} --network-manager-name ${var.networkManager} --resource-group ${var.resourceGroup} --resource-id /subscriptions/${var.subscriptionID}/resourceGroups/${var.resourceGroup}/providers/Microsoft.Network/virtualnetworks/vnet-learn-prod-eastus-001"
|
||||
}
|
||||
depends_on=[null_resource.ng_create]
|
||||
}
|
||||
|
||||
# Create a connectivity configuration
|
||||
resource "null_resource" "connectivityConfig"{
|
||||
provisioner "local-exec"{
|
||||
command="az network manager connect-config create --configuration-name ${var.configurationName} --applies-to-groups network-group-id=/subscriptions/${var.subscriptionID}/resourceGroups/${var.resourceGroup}/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/${var.networkGroup} --connectivity-topology ${var.connectivityTopology} --network-manager-name ${var.networkManager} --resource-group ${var.resourceGroup}"
|
||||
}
|
||||
depends_on=[null_resource.ng_create]
|
||||
}
|
||||
|
||||
# Commit deployment
|
||||
resource "null_resource" "commitDeployment"{
|
||||
provisioner "local-exec"{
|
||||
command="az network manager post-commit --network-manager-name ${var.networkManager} --commit-type ${var.commitType} --configuration-ids /subscriptions/${var.subscriptionID}/resourceGroups/${var.resourceGroup}/providers/Microsoft.Network/networkManagers/${var.networkManager}/connectivityConfigurations/${var.configurationName} --target-locations ${var.targetRegion} --resource-group ${var.resourceGroup}"
|
||||
}
|
||||
depends_on=[null_resource.ng_create]
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user