2023-11-16 09:53:59 +08:00

97 lines
3.3 KiB
HCL

# TODO set the variables below either enter them in plain text after = sign, or change them in variables.tf
# (var.xyz will take the default value from variables.tf if you don't change it)
# Create resource group
resource "azurerm_resource_group" "example" {
name = "${random_pet.prefix.id}-rg"
location = var.location
}
# Create security group
resource "azurerm_network_security_group" "example" {
name = "${random_pet.prefix.id}-nsg"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
# Create a virtual network
resource "azurerm_virtual_network" "example" {
name = "${random_pet.prefix.id}-vnet"
resource_group_name = azurerm_resource_group.example.name
address_space = ["10.0.0.0/24"]
location = azurerm_resource_group.example.location
}
# Create a subnet
resource "azurerm_subnet" "example" {
name = "${random_pet.prefix.id}-subnet"
resource_group_name = azurerm_resource_group.example.name
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = ["10.0.0.0/27"]
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 = "${random_pet.prefix.id}-rt"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
disable_bgp_route_propagation = false
}
# 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
depends_on = [azurerm_subnet_network_security_group_association.example]
}
# Create managed instance
resource "azurerm_mssql_managed_instance" "main" {
name = "${random_pet.prefix.id}-mssql"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
subnet_id = azurerm_subnet.example.id
administrator_login = "${replace(random_pet.prefix.id, "-", "")}admin"
administrator_login_password = random_password.password.result
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_route_table_association.example]
}
resource "random_password" "password" {
length = 20
min_lower = 1
min_upper = 1
min_numeric = 1
min_special = 1
special = true
}
resource "random_pet" "prefix" {
prefix = var.prefix
length = 1
}