التشغيل السريع: إنشاء مثيل لقاعدة بيانات Azure ل MySQL - خادم مرن باستخدام Terraform
ينطبق على: قاعدة بيانات Azure ل MySQL - خادم مرن
تم اختبار هذا التشغيل السريع باستخدام إصدارات موفر Terraform وTerraform التالية:
قاعدة بيانات Azure لخادم MySQL - Flexible Server هي خدمة مدارة تستخدمها لتشغيل قواعد بيانات MySQL عالية التوافر وإدارتها وتوسيع نطاقها في السحابة. يمكنك استخدام قالب Azure Resource Manager (قالب ARM) لتوفير قاعدة بيانات Azure ل MySQL - خادم مرن لنشر خوادم متعددة أو لنشر قواعد بيانات متعددة على خادم.
توضح لك هذه المقالة كيفية استخدام Terraform لنشر مثيل لقاعدة بيانات Azure ل MySQL - خادم مرن وقاعدة بيانات في شبكة ظاهرية.
في هذه المقالة، ستتعرف على كيفية:
- إنشاء مجموعة موارد Azure باستخدام azurerm_resource_group.
- إنشاء شبكة Azure ظاهرية باستخدام azurerm_virtual_network.
- إنشاء شبكة فرعية Azure باستخدام azurerm_subnet.
- تعريف منطقة DNS خاصة داخل مثيل Azure DNS باستخدام azurerm_private_dns_zone.
- تعريف ارتباط شبكة ظاهرية لمنطقة DNS خاصة باستخدام azurerm_private_dns_zone_virtual_network_link.
- نشر Azure Database for MySQL - Flexible Server باستخدام azurerm_mysql_flexible_server.
- نشر قاعدة بيانات باستخدام azurerm_mysql_flexible_database.
إشعار
يوجد مثال التعليمات البرمجية التي تظهر في هذه المقالة في مستودع Azure Terraform GitHub.
المتطلبات الأساسية
-
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ. حاليا، باستخدام حساب Azure المجاني، يمكنك تجربة Azure Database for MySQL - Flexible Server مجانا لمدة 12 شهرا. لمزيد من المعلومات، راجع تجربة Azure Database for MySQL - Flexible Server مجانا.
تنفيذ كود Terraform
إنشاء دليل يمكنك استخدامه لاختبار نموذج التعليمات البرمجية ل Terraform. جعل دليل Terraform هو الدليل الحالي.
قم بإنشاء ملف باسم
providers.tf
وأدخل التعليمة البرمجية التالية:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
قم بإنشاء ملف باسم
main.tf
وأدخل التعليمة البرمجية التالية:# 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] }
قم بإنشاء ملف باسم
mysql-fs-db.tf
وأدخل التعليمة البرمجية التالية:# 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 }
قم بإنشاء ملف باسم
variables.tf
وأدخل التعليمة البرمجية التالية: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." }
قم بإنشاء ملف باسم
outputs.tf
وأدخل التعليمة البرمجية التالية: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 }
تهيئة Terraform
قم بتشغيل terraform init لتهيئة توزيع Terraform. يقوم هذا الأمر بتنزيل موفر Azure المطلوب لإدارة موارد Azure.
terraform init -upgrade
النقاط الرئيسية:
- تقوم
-upgrade
المعلمة بترقية مكونات الموفر الإضافية الضرورية إلى أحدث إصدار يتوافق مع قيود إصدار التكوين.
إنشاء خطة تنفيذ Terraform
قم بتشغيل خطة terraform لإنشاء خطة تنفيذ.
terraform plan -out main.tfplan
النقاط الرئيسية:
- ينشئ الأمر
terraform plan
خطة تنفيذ، لكنه لا ينفذها. بدلًا من ذلك، يحدد الإجراءات الضرورية لإنشاء التكوين المحدد في ملفات التكوين الخاصة بك. يسمح لك هذا النمط بالتحقق مما إذا كانت خطة التنفيذ تتطابق مع توقعاتك قبل إجراء أي تغييرات على الموارد الفعلية. - تسمح المعلمة
-out
الاختيارية بتحديد ملف الإخراج للخطة. يضمن استخدام-out
المعلمة أن الخطة التي راجعتها هي بالضبط ما يتم تطبيقها.
تطبيق خطة تنفيذ Terraform
قم بتشغيل تطبيق terraform لتطبيق خطة التنفيذ على البنية الأساسية السحابية الخاصة بك.
terraform apply main.tfplan
النقاط الرئيسية:
- يفترض الأمر المثال
terraform apply
أنك قمت بتشغيلterraform plan -out main.tfplan
مسبقا . - إذا قمت بتحديد اسم ملف مختلف للمعلمة
-out
، فاستخدم نفس اسم الملف في الاستدعاءterraform apply
. - إذا لم تستخدم المعلمة
-out
، استدعterraform apply
دون أي معلمات.
تحقق من النتائج
لعرض قاعدة بيانات Azure Database for MySQL - قاعدة بيانات الخادم المرن، قم بتشغيل 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>
ضع في اعتبارك النقاط الرئيسية التالية:
- يتم عرض قيم
<resource_group_name>
و<azurerm_mysql_flexible_server>
و<mysql_flexible_server_database_name>
في الإخراجterraform apply
. يمكنك أيضا تشغيل أمر إخراج terraform لعرض هذه القيم.
تنظيف الموارد
عندما لم تعد بحاجة إلى الموارد التي تم إنشاؤها عبر Terraform، قم بالخطوات التالية:
قم بتشغيل خطة terraform وحدد العلامة
destroy
.terraform plan -destroy -out main.destroy.tfplan
النقاط الرئيسية:
- ينشئ الأمر
terraform plan
خطة تنفيذ، لكنه لا ينفذها. بدلًا من ذلك، يحدد الإجراءات الضرورية لإنشاء التكوين المحدد في ملفات التكوين الخاصة بك. يسمح لك هذا النمط بالتحقق مما إذا كانت خطة التنفيذ تتطابق مع توقعاتك قبل إجراء أي تغييرات على الموارد الفعلية. - تسمح المعلمة
-out
الاختيارية بتحديد ملف الإخراج للخطة. يضمن استخدام-out
المعلمة أن الخطة التي راجعتها هي بالضبط ما يتم تطبيقها.
- ينشئ الأمر
قم بتشغيل تطبيق terraform لتطبيق خطة التنفيذ.
terraform apply main.destroy.tfplan
استكشاف أخطاء Terraform على Azure وإصلاحها
استكشف كيفية استكشاف المشكلات الشائعة وإصلاحها لاستخدام Terraform على Azure.
الخطوة التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ