# Create resource group resource "azurerm_resource_group" "example" { name = var.azurerm_resource_group_name location = var.location } # Create security group resource "azurerm_network_security_group" "example" { name = var.azurerm_network_security_group_name location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name } # Create a virtual network resource "azurerm_virtual_network" "example" { name = var.azurerm_virtual_network_name resource_group_name = azurerm_resource_group.example.name address_space = ["10.0.0.0/16"] location = azurerm_resource_group.example.location } # Create a subnet resource "azurerm_subnet" "example" { name = var.azurerm_subnet_name resource_group_name = azurerm_resource_group.example.name virtual_network_name = azurerm_virtual_network.example.name address_prefixes = ["10.0.0.0/24"] delegation { name = "managedinstancedelegation" service_delegation { name = "Microsoft.Sql/managedInstances" actions = [ "Microsoft.Network/virtualNetworks/subnets/join/action", "Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action", "Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action" ] } } } # Associate subnet and the security group resource "azurerm_subnet_network_security_group_association" "example" { subnet_id = azurerm_subnet.example.id network_security_group_id = azurerm_network_security_group.example.id } # Create a route table resource "azurerm_route_table" "example" { name = "routetable-mi-terraform" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name disable_bgp_route_propagation = false depends_on = [ azurerm_subnet.example, ] } # Associate subnet and the route table resource "azurerm_subnet_route_table_association" "example" { subnet_id = azurerm_subnet.example.id route_table_id = azurerm_route_table.example.id } # Create managed instance resource "azurerm_mssql_managed_instance" "example" { name = var.database_name resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location subnet_id = azurerm_subnet.example.id # TODO set the options below either in plain text or in variables.tf # (var.xyz will prompt you to enter the value when creating the plan) administrator_login = var.administrator_login administrator_login_password = var.administrator_login_password license_type = var.license_type sku_name = var.sku_name vcores = var.vcores storage_size_in_gb = var.storage_size_in_gb depends_on = [ azurerm_subnet_network_security_group_association.example, azurerm_subnet_route_table_association.example, ] }