Rövid útmutató: Azure Database for MySQL-példány létrehozása – Rugalmas kiszolgáló létrehozása a Terraform használatával
A következőkre vonatkozik: Azure Database for MySQL – rugalmas kiszolgáló
Ezt a rövid útmutatót a Terraform és a Terraform szolgáltató alábbi verzióival teszteltük:
A rugalmas Azure Database for MySQL-kiszolgáló egy felügyelt szolgáltatás, amellyel magas rendelkezésre állású MySQL-adatbázisokat futtathat, kezelhet és skálázhat a felhőben. Az Azure Resource Manager-sablon (ARM-sablon) használatával kiépítheti a rugalmas Azure Database for MySQL-kiszolgálót több kiszolgáló üzembe helyezésére vagy több adatbázis üzembe helyezésére egy kiszolgálón.
Ez a cikk bemutatja, hogyan helyezhet üzembe egy Rugalmas Azure Database for MySQL-kiszolgálót és egy adatbázist egy virtuális hálózaton a Terraform használatával.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- Azure-erőforráscsoport létrehozása azurerm_resource_group használatával.
- Azure-beli virtuális hálózat létrehozása azurerm_virtual_network használatával.
- Azure-alhálózat létrehozása azurerm_subnet használatával.
- Definiáljon egy privát DNS-zónát az Azure DNS egy példányán belül azurerm_private_dns_zone használatával.
- Privát DNS-zóna virtuális hálózati kapcsolatának definiálása azurerm_private_dns_zone_virtual_network_link használatával.
- Az Azure Database for MySQL rugalmas kiszolgálójának üzembe helyezése azurerm_mysql_flexible_server használatával.
- Adatbázis üzembe helyezése azurerm_mysql_flexible_database használatával.
Feljegyzés
A cikkben szereplő példakód az Azure Terraform GitHub-adattárban található.
Előfeltételek
-
Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes Azure-fiókot . Jelenleg ingyenes Azure-fiókkal 12 hónapig ingyenesen kipróbálhatja a Rugalmas Azure Database for MySQL-kiszolgálót. További információ: Azure Database for MySQL – Rugalmas kiszolgáló ingyenes kipróbálás.
A Terraform-kód implementálása
Hozzon létre egy könyvtárat, amellyel tesztelheti a Terraform-mintakódot. Állítsa a Terraform könyvtárat az aktuális könyvtárra.
Hozzon létre egy elnevezett
providers.tf
fájlt, és szúrja be a következő kódot:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
Hozzon létre egy elnevezett
main.tf
fájlt, és szúrja be a következő kódot:# 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] }
Hozzon létre egy elnevezett
mysql-fs-db.tf
fájlt, és szúrja be a következő kódot:# 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 }
Hozzon létre egy elnevezett
variables.tf
fájlt, és szúrja be a következő kódot: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." }
Hozzon létre egy elnevezett
outputs.tf
fájlt, és szúrja be a következő kódot: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 }
A Terraform inicializálása
Futtassa a Terraform init parancsot a Terraform üzembe helyezésének inicializálásához. Ez a parancs letölti az Azure-erőforrások kezeléséhez szükséges Azure-szolgáltatót.
terraform init -upgrade
Főbb pontok:
- A
-upgrade
paraméter frissíti a szükséges szolgáltatói beépülő modulokat a legújabb verzióra, amely megfelel a konfiguráció verziókorlátozásainak.
Terraform végrehajtási terv létrehozása
Végrehajtási terv létrehozásához futtassa a Terraform-tervet .
terraform plan -out main.tfplan
Főbb pontok:
- A
terraform plan
parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-out
paraméter lehetővé teszi a terv kimeneti fájljának megadását.-out
A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.
Terraform végrehajtási terv alkalmazása
A terraform futtatásával alkalmazza a végrehajtási tervet a felhőinfrastruktúrára.
terraform apply main.tfplan
Főbb pontok:
- A példaparancs
terraform apply
feltételezi, hogy korábban futtatottterraform plan -out main.tfplan
. - Ha másik fájlnevet adott meg a
-out
paraméterhez, használja ugyanazt a fájlnevet a hívásbanterraform apply
. - Ha nem használta a paramétert
-out
, hívjonterraform apply
paraméterek nélkül.
Az eredmények ellenőrzése
A rugalmas Azure Database for MySQL-adatbázis megjelenítéséhez futtassa az az mysql flexible-server db show-t:
az mysql flexible-server db show \
--resource-group <resource_group_name> \
--server-name <azurerm_mysql_flexible_server> \
--database-name <mysql_flexible_server_database_name>
Vegye figyelembe a következő főbb pontokat:
- A ,
<mysql_flexible_server_database_name>
<azurerm_mysql_flexible_server>
értékeket<resource_group_name>
a kimenetbenterraform apply
jeleníti meg. Ezeket az értékeket a terraform kimeneti parancs futtatásával is megtekintheti.
Az erőforrások eltávolítása
Ha már nincs szüksége a Terraformon keresztül létrehozott erőforrásokra, hajtsa végre az alábbi lépéseket:
Futtassa a Terraform-tervet , és adja meg a jelölőt
destroy
.terraform plan -destroy -out main.destroy.tfplan
Főbb pontok:
- A
terraform plan
parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-out
paraméter lehetővé teszi a terv kimeneti fájljának megadását.-out
A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.
- A
A végrehajtási terv alkalmazásához futtassa a terraformát .
terraform apply main.destroy.tfplan
A Terraform hibaelhárítása az Azure-ban
Megtudhatja, hogyan háríthatja el a Terraform azure-beli használatával kapcsolatos gyakori problémákat.