获取针对azurerm_mariadb_virtual_network_rule

问题描述

我正在为基础架构部署构建terraform配置,并尝试根据documentation使用azurerm_mariadb_virtual_network_rule将azurerm_mariadb_server资源连接到azurerm_subnet

vnet,子网,mariadb-server等都已创建,但是在尝试创建vnet_rule时得到以下提示

Error: Error waiting for MariaDb Virtual Network Rule "vnet-rule" (MariaDb Server: "server",Resource Group: "rg") 
to be created or updated: Couldn't find resource (21 retries)

  on main.tf line 86,in resource "azurerm_mariadb_virtual_network_rule" "vnet_rule":
  86: resource "azurerm_mariadb_virtual_network_rule" "mariadb_vnet_rule" {

我无法确定找不到哪个资源-根据bash shell输出和Azure门户,创建了除了azurerm_mariadb_virtual_network_rule之外的所有资源。

我的配置在下面-为简洁起见,省略了一些资源的详细信息。

provider "azurerm" {
  version = "~> 2.27.0"
  features {}
}

resource "azurerm_resource_group" "rg" {
  name = "${var.resource_group_name}-rg"
  location = var.location
}

resource "azurerm_virtual_network" "vnet" {
  resource_group_name = azurerm_resource_group.rg.name
  name = "${var.prefix}Vnet"
  address_space = ["10.0.0.0/16"]
  location = var.location
}

resource "azurerm_subnet" "backend" {
  resource_group_name = azurerm_resource_group.rg.name
  name = "${var.prefix}backendsubnet"
  virtual_network_name = azurerm_virtual_network.vnet.name
  address_prefixes = ["10.0.1.0/24"]
  service_endpoints = ["Microsoft.sql"]
}

resource "azurerm_mariadb_server" "server" {
  # DB server name can contain lower-case letters,numbers and dashes,nothing ELSE
  resource_group_name = azurerm_resource_group.rg.name
  name = "${var.prefix}-mariadb-server"
  location = var.location
  sku_name = "B_Gen5_2"
  version = "10.3"
  ssl_enforcement_enabled = true
}

resource "azurerm_mariadb_database" "mariadb_database" {
  resource_group_name = azurerm_resource_group.rg.name
  name = "${var.prefix}_mariadb_database"
  server_name = azurerm_mariadb_server.server.name
  charset = "utf8"
  collation = "utf8_general_ci"
}

##  Network Service Endpoint (add DB to subnet)  

resource "azurerm_mariadb_virtual_network_rule" "vnet_rule" {
  resource_group_name = azurerm_resource_group.rg.name
  name = "${var.prefix}-mariadb-vnet-rule"
  server_name = azurerm_mariadb_server.server.name
  subnet_id = azurerm_subnet.backend.id
}

该问题似乎在'func resourceArmMariaDbVirtualNetworkRuleCreateUpdate'中出现,但我不知道Go,因此无法完全追究其原因。 如果有人可以看到问题,或者知道如何解决此问题,请告诉我!

此外,我无法通过门户网站进行操作-步骤3 here显示了用于配置VNET规则的部分,该页面在我的页面上没有显示“用于mariaDB服务器的Azure数据库”。我具有全局管理员角色,所以我认为它与权限无关。

解决方法

来自creating and manage Azure Database for MariaDB VNet service endpoints and VNet rules by using the Azure portal

关键是那个

对VNet服务端点的支持仅用于通用和 内存优化服务器

因此,将代码sku_name = "B_Gen5_2"更改为sku_name = "GP_Gen5_2"或其他符合条件的sku_name

sku_name-(必需)指定此MariaDB服务器的SKU名称。 SKU的名称遵循“层+系列+核心”模式(例如 B_Gen4_1,GP_Gen5_8)。有关更多信息,请参见product documentation

部署需要几分钟。

enter image description here