Skip to content

Commit

Permalink
docs update
Browse files Browse the repository at this point in the history
  • Loading branch information
wyattfry committed Jan 31, 2025
1 parent d26df55 commit 14ae87f
Show file tree
Hide file tree
Showing 4 changed files with 402 additions and 58 deletions.
Empty file.
231 changes: 231 additions & 0 deletions examples/mssql/wyatt-config/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.108.0"
}
}
}

provider "azurerm" {
features {}
}

locals {
name = "acctestwyatt5qlmi"
primary_name = "${local.name}-primary"
primary_location = "West Europe"
failover_name = "${local.name}-failover"
failover_paired_location = "North Europe"
}

resource "azurerm_resource_group" "primary" {
name = local.primary_name
location = local.primary_location
}

## Primary Instance

resource "azurerm_virtual_network" "primary" {
name = local.primary_name
location = azurerm_resource_group.primary.location
resource_group_name = azurerm_resource_group.primary.name
address_space = ["10.0.0.0/16"]
}

resource "azurerm_subnet" "primary" {
name = local.primary_name
resource_group_name = azurerm_resource_group.primary.name
virtual_network_name = azurerm_virtual_network.primary.name
address_prefixes = ["10.0.1.0/24"]
delegation {
name = "delegation"
service_delegation {
actions = [
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action",
"Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action",
]
name = "Microsoft.Sql/managedInstances"
}
}
}

resource "azurerm_network_security_group" "primary" {
name = local.primary_name
location = azurerm_resource_group.primary.location
resource_group_name = azurerm_resource_group.primary.name
}

resource "azurerm_subnet_network_security_group_association" "primary" {
subnet_id = azurerm_subnet.primary.id
network_security_group_id = azurerm_network_security_group.primary.id
}

resource "azurerm_route_table" "primary" {
name = local.primary_name
location = azurerm_resource_group.primary.location
resource_group_name = azurerm_resource_group.primary.name
}

resource "azurerm_subnet_route_table_association" "primary" {
subnet_id = azurerm_subnet.primary.id
route_table_id = azurerm_route_table.primary.id
}

resource "azurerm_mssql_managed_instance" "primary" {
name = local.primary_name
resource_group_name = azurerm_resource_group.primary.name
location = azurerm_resource_group.primary.location
administrator_login = "mradministrator"
administrator_login_password = "thisIsDog11"
license_type = "BasePrice"
subnet_id = azurerm_subnet.primary.id
sku_name = "GP_Gen5"
vcores = 4
storage_size_in_gb = 32

depends_on = [
azurerm_subnet_network_security_group_association.primary,
azurerm_subnet_route_table_association.primary,
]

tags = {
environment = "prod"
}
}

## Secondary (Fail-over) Instance

resource "azurerm_resource_group" "failover" {
name = local.failover_name
location = local.failover_paired_location
}

resource "azurerm_virtual_network" "failover" {
name = local.failover_name
location = azurerm_resource_group.failover.location
resource_group_name = azurerm_resource_group.failover.name
address_space = ["10.1.0.0/16"]
}

resource "azurerm_subnet" "default" {
name = "default"
resource_group_name = azurerm_resource_group.failover.name
virtual_network_name = azurerm_virtual_network.failover.name
address_prefixes = ["10.1.0.0/24"]
}

resource "azurerm_subnet" "failover" {
name = "ManagedInstance"
resource_group_name = azurerm_resource_group.failover.name
virtual_network_name = azurerm_virtual_network.failover.name
address_prefixes = ["10.1.1.0/24"]
delegation {
name = "delegation"
service_delegation {
actions = [
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action",
"Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action",
]
name = "Microsoft.Sql/managedInstances"
}
}
}

resource "azurerm_network_security_group" "failover" {
name = local.failover_name
location = azurerm_resource_group.failover.location
resource_group_name = azurerm_resource_group.failover.name
}

resource "azurerm_subnet_network_security_group_association" "failover" {
subnet_id = azurerm_subnet.failover.id
network_security_group_id = azurerm_network_security_group.failover.id
}

resource "azurerm_route_table" "failover" {
name = local.failover_name
location = azurerm_resource_group.failover.location
resource_group_name = azurerm_resource_group.failover.name
}

resource "azurerm_subnet_route_table_association" "failover" {
subnet_id = azurerm_subnet.failover.id
route_table_id = azurerm_route_table.failover.id
}

resource "azurerm_mssql_managed_instance" "failover" {
name = local.failover_name
resource_group_name = azurerm_resource_group.failover.name
location = azurerm_resource_group.failover.location
administrator_login = "mradministrator"
administrator_login_password = "thisIsDog11"
license_type = "BasePrice"
subnet_id = azurerm_subnet.failover.id
sku_name = "GP_Gen5"
vcores = 4
storage_size_in_gb = 32
dns_zone_partner_id = azurerm_mssql_managed_instance.primary.id

depends_on = [
azurerm_subnet_network_security_group_association.failover,
azurerm_subnet_route_table_association.failover,
]
}

resource "azurerm_mssql_managed_instance_failover_group" "example" {
name = "example-failover-group"
location = azurerm_mssql_managed_instance.primary.location
managed_instance_id = azurerm_mssql_managed_instance.primary.id
partner_managed_instance_id = azurerm_mssql_managed_instance.failover.id
secondary_type = "Standby"

read_write_endpoint_failover_policy {
mode = "Automatic"
grace_minutes = 60
}

depends_on = [
azurerm_private_dns_zone_virtual_network_link.primary,
azurerm_private_dns_zone_virtual_network_link.failover,
]
}

resource "azurerm_virtual_network_peering" "failover_to_primary" {
name = "failover-to-primary"
remote_virtual_network_id = azurerm_virtual_network.primary.id
resource_group_name = azurerm_resource_group.failover.name
virtual_network_name = azurerm_virtual_network.failover.name
}

resource "azurerm_virtual_network_peering" "primary_to_failover" {
name = "primary-to-failover"
remote_virtual_network_id = azurerm_virtual_network.failover.id
resource_group_name = azurerm_resource_group.primary.name
virtual_network_name = azurerm_virtual_network.primary.name
}

resource "azurerm_private_dns_zone" "example" {
name = "${local.name}.private"
resource_group_name = azurerm_resource_group.primary.name
}

resource "azurerm_private_dns_zone_virtual_network_link" "primary" {
name = "primary-link"
resource_group_name = azurerm_resource_group.primary.name
private_dns_zone_name = azurerm_private_dns_zone.example.name
virtual_network_id = azurerm_virtual_network.primary.id
}

resource "azurerm_private_dns_zone_virtual_network_link" "failover" {
name = "failover-link"
resource_group_name = azurerm_private_dns_zone.example.resource_group_name
private_dns_zone_name = azurerm_private_dns_zone.example.name
virtual_network_id = azurerm_virtual_network.failover.id
}

output "debug" {
value = azurerm_private_dns_zone.example.id
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ func TestAccMsSqlManagedInstanceFailoverGroup_update(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_mssql_managed_instance_failover_group", "test")
r := MsSqlManagedInstanceFailoverGroupResource{}

fmt.Println(r.basic(data, "update"))

data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.basic(data, "update"),
Expand All @@ -51,7 +53,7 @@ func TestAccMsSqlManagedInstanceFailoverGroup_update(t *testing.T) {
Config: r.update(data),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("secondary_type").HasValue("Geo"),
check.That(data.ResourceName).Key("secondary_type").HasValue("Standby"),
),
},
data.ImportStep(),
Expand Down Expand Up @@ -106,7 +108,7 @@ resource "azurerm_mssql_managed_instance_failover_group" "test" {
location = "%[3]s"
managed_instance_id = azurerm_mssql_managed_instance.test.id
partner_managed_instance_id = azurerm_mssql_managed_instance.secondary.id
secondary_type = "Geo"
secondary_type = "Standby"
readonly_endpoint_failover_policy_enabled = true
Expand Down
Loading

0 comments on commit 14ae87f

Please sign in to comment.