问题描述
我正在为基础架构部署构建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数据库”。我具有全局管理员角色,所以我认为它与权限无关。
解决方法
关键是那个
对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。
部署需要几分钟。