Události
31. 3. 23 - 2. 4. 23
Konečná událost vedoucí komunitou SQL, Power BI, Fabric a AI. 31. března – 2. dubna. Použijte kód MSCUST pro slevu ve výši 150 USD. Ceny jdou nahoru 11. února.
Zaregistrovat se ještě dnesTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Tento rychlý start byl testován pomocí následujících verzí zprostředkovatele Terraformu a Terraformu:
Flexibilní server Azure Database for MySQL je spravovaná služba, kterou používáte ke spouštění, správě a škálování vysoce dostupných databází MySQL v cloudu. Šablonu Azure Resource Manageru (šablona ARM) můžete použít ke zřízení flexibilního serveru Azure Database for MySQL pro nasazení více serverů nebo nasazení více databází na server.
V tomto článku se dozvíte, jak pomocí Terraformu nasadit instanci flexibilního serveru Azure Database for MySQL a databáze ve virtuální síti.
V tomto článku získáte informace o těchto tématech:
Poznámka
Ukázkový kód, který se zobrazí v tomto článku, se nachází v úložišti GitHubu Azure Terraformu.
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure, než začnete. V současné době můžete s bezplatným účtem Azure vyzkoušet flexibilní server Azure Database for MySQL zdarma po dobu 12 měsíců. Další informace najdete v tématu Použití bezplatného účtu Azure k vyzkoušení flexibilního serveru Azure Database for MySQL zdarma.
Vytvořte adresář, který můžete použít k otestování ukázkového kódu Terraformu. Nastavte adresář Terraformu jako aktuální adresář.
Vytvořte soubor s názvem providers.tf
a vložte následující kód:
terraform {
required_version = ">=1.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
random = {
source = "hashicorp/random"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {}
}
Vytvořte soubor s názvem main.tf
a vložte následující kód:
# Generate random resource group name
resource "random_pet" "rg_name" {
prefix = var.resource_group_name_prefix
}
resource "azurerm_resource_group" "rg" {
location = var.resource_group_location
name = random_pet.rg_name.id
}
# Generate random value for the name
resource "random_string" "name" {
length = 8
lower = true
numeric = false
special = false
upper = false
}
# Generate random value for the login password
resource "random_password" "password" {
length = 8
lower = true
min_lower = 1
min_numeric = 1
min_special = 1
min_upper = 1
numeric = true
override_special = "_"
special = true
upper = true
}
# Manages the Virtual Network
resource "azurerm_virtual_network" "default" {
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.rg.location
name = "vnet-${random_string.name.result}"
resource_group_name = azurerm_resource_group.rg.name
}
# Manages the Subnet
resource "azurerm_subnet" "default" {
address_prefixes = ["10.0.2.0/24"]
name = "subnet-${random_string.name.result}"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.default.name
service_endpoints = ["Microsoft.Storage"]
delegation {
name = "fs"
service_delegation {
name = "Microsoft.DBforMySQL/flexibleServers"
actions = [
"Microsoft.Network/virtualNetworks/subnets/join/action",
]
}
}
}
# Enables you to manage Private DNS zones within Azure DNS
resource "azurerm_private_dns_zone" "default" {
name = "${random_string.name.result}.mysql.database.azure.com"
resource_group_name = azurerm_resource_group.rg.name
}
# Enables you to manage Private DNS zone Virtual Network Links
resource "azurerm_private_dns_zone_virtual_network_link" "default" {
name = "mysqlfsVnetZone${random_string.name.result}.com"
private_dns_zone_name = azurerm_private_dns_zone.default.name
resource_group_name = azurerm_resource_group.rg.name
virtual_network_id = azurerm_virtual_network.default.id
depends_on = [azurerm_subnet.default]
}
# Manages the MySQL Flexible Server
resource "azurerm_mysql_flexible_server" "default" {
location = azurerm_resource_group.rg.location
name = "mysqlfs-${random_string.name.result}"
resource_group_name = azurerm_resource_group.rg.name
administrator_login = random_string.name.result
administrator_password = random_password.password.result
backup_retention_days = 7
delegated_subnet_id = azurerm_subnet.default.id
geo_redundant_backup_enabled = false
private_dns_zone_id = azurerm_private_dns_zone.default.id
sku_name = "GP_Standard_D2ds_v4"
version = "8.0.21"
high_availability {
mode = "SameZone"
}
maintenance_window {
day_of_week = 0
start_hour = 8
start_minute = 0
}
storage {
iops = 360
size_gb = 20
}
depends_on = [azurerm_private_dns_zone_virtual_network_link.default]
}
Vytvořte soubor s názvem mysql-fs-db.tf
a vložte následující kód:
# Manages the MySQL Flexible Server Database
resource "azurerm_mysql_flexible_database" "main" {
charset = "utf8mb4"
collation = "utf8mb4_unicode_ci"
name = "mysqlfsdb_${random_string.name.result}"
resource_group_name = azurerm_resource_group.rg.name
server_name = azurerm_mysql_flexible_server.default.name
}
Vytvořte soubor s názvem variables.tf
a vložte následující kód:
variable "resource_group_location" {
type = string
default = "westeurope"
description = "Location of the resource group."
}
variable "resource_group_name_prefix" {
type = string
default = "mysql-fs-db-rg"
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
}
Vytvořte soubor s názvem outputs.tf
a vložte následující kód:
output "azurerm_mysql_flexible_server" {
value = azurerm_mysql_flexible_server.default.name
}
output "admin_login" {
value = azurerm_mysql_flexible_server.default.administrator_login
}
output "admin_password" {
sensitive = true
value = azurerm_mysql_flexible_server.default.administrator_password
}
output "mysql_flexible_server_database_name" {
value = azurerm_mysql_flexible_database.main.name
}
output "resource_group_name" {
value = azurerm_resource_group.rg.name
}
Spuštěním inicializace nasazení Terraformu spusťte inicializaci terraformu. Tento příkaz stáhne poskytovatele Azure potřebného ke správě prostředků Azure.
terraform init -upgrade
Klíčové body:
-upgrade
upgraduje potřebné moduly plug-in zprostředkovatele na nejnovější verzi, která splňuje omezení verzí konfigurace.Spuštěním plánu terraformu vytvořte plán provádění.
terraform plan -out main.tfplan
Klíčové body:
terraform plan
vytvoří plán provádění, ale nespustí ho. Místo toho určuje, jaké akce jsou nezbytné k vytvoření konfigurace zadané v konfiguračních souborech. Tento model umožňuje ověřit, jestli plán provádění odpovídá vašim očekáváním, než provede jakékoli změny skutečných prostředků.-out
parametr umožňuje zadat výstupní soubor pro plán. Použití parametru -out
zajišťuje, že plán, který jste zkontrolovali, je přesně to, co se použije.Spuštění terraformu platí pro použití plánu provádění na cloudovou infrastrukturu.
terraform apply main.tfplan
Klíčové body:
terraform apply
Ukázkový příkaz předpokládá, že jste dříve spustili terraform plan -out main.tfplan
.-out
parametr zadali jiný název souboru, použijte stejný název souboru při volání terraform apply
.-out
, zavolejte terraform apply
bez parametrů.Pokud chcete zobrazit databázi flexibilního serveru Azure Database for MySQL, spusťte příkaz az mysql flexible-server db show:
az mysql flexible-server db show \
--resource-group <resource_group_name> \
--server-name <azurerm_mysql_flexible_server> \
--database-name <mysql_flexible_server_database_name>
Vezměte v úvahu následující klíčové body:
Pokud už prostředky vytvořené přes Terraform nepotřebujete, proveďte následující kroky:
Spusťte plán terraformu destroy
a zadejte příznak.
terraform plan -destroy -out main.destroy.tfplan
Klíčové body:
terraform plan
vytvoří plán provádění, ale nespustí ho. Místo toho určuje, jaké akce jsou nezbytné k vytvoření konfigurace zadané v konfiguračních souborech. Tento model umožňuje ověřit, jestli plán provádění odpovídá vašim očekáváním, než provede jakékoli změny skutečných prostředků.-out
parametr umožňuje zadat výstupní soubor pro plán. Použití parametru -out
zajišťuje, že plán, který jste zkontrolovali, je přesně to, co se použije.Spuštění terraformu platí pro použití plánu provádění.
terraform apply main.destroy.tfplan
Prozkoumejte, jak řešit běžné problémy s používáním Terraformu v Azure.
Události
31. 3. 23 - 2. 4. 23
Konečná událost vedoucí komunitou SQL, Power BI, Fabric a AI. 31. března – 2. dubna. Použijte kód MSCUST pro slevu ve výši 150 USD. Ceny jdou nahoru 11. února.
Zaregistrovat se ještě dnes