建立 單一資料庫 是在 Azure SQL Database 中建立資料庫的最快速且最簡單的選項。 本快速入門向您演示如何使用 Terraform 建立單一資料庫。
Terraform 可啟用雲端基礎結構的定義、預覽和部署。 使用 Terraform,您可以使用 HCL 語法建立組態檔。 HCL 語法可讓您指定雲端提供者 (例如 Azure) 和構成雲端基礎結構的元素。 建立組態檔之後,您會建立一個 執行計劃 ,讓您在部署基礎結構變更之前先預覽這些變更。 驗證變更之後,您可以套用執行計畫來部署基礎結構。
在本文中,您將學會如何:
- 使用 random_pet 建立 Azure 資源組名的隨機值。
- 使用 azurerm_resource_group 建立 Azure 資源群組。
- 使用 random_pet 為 Azure 中的邏輯伺服器建立隨機值。
- 使用 random_password 為 Azure 中的邏輯伺服器建立隨機密碼。
- 使用 azurerm_mssql_server在 Azure 中建立邏輯伺服器。
- 使用 azurerm_mssql_database 在 Azure SQL Database 中建立資料庫。
必要條件
權限
若要透過 Transact-SQL 建立資料庫: CREATE DATABASE 需要許可權。 若要建立資料庫,登入必須是伺服器管理員登入 (佈建 Azure SQL 資料庫邏輯伺服器時建立)、伺服器的 Microsoft Entra 管理員、 中 dbmanager 資料庫角色的成員、目前資料庫中 db_owner 資料庫角色的成員,或資料庫的 master。 如需詳細資訊,請參閱 CREATE DATABASE。
若要透過 Azure 入口網站、PowerShell、Azure CLI 或 REST API 建立資料庫:需要 Azure RBAC 許可權,特別是參與者、SQL DB 參與者或 SQL Server 參與者 Azure RBAC 角色。 如需詳細資訊,請參閱 Azure RBAC 內建角色。
實作 Terraform 程式碼
注意
本文的範例程式代碼位於 Azure Terraform GitHub 存放庫中。 您可以檢視包含 目前和舊版 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的檔案,並插入下列程式碼:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_pet" "azurerm_mssql_server_name" { prefix = "sql" } resource "random_password" "admin_password" { count = var.admin_password == null ? 1 : 0 length = 20 special = true min_numeric = 1 min_upper = 1 min_lower = 1 min_special = 1 } locals { admin_password = try(random_password.admin_password[0].result, var.admin_password) } resource "azurerm_mssql_server" "server" { name = random_pet.azurerm_mssql_server_name.id resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location administrator_login = var.admin_username administrator_login_password = local.admin_password version = "12.0" } resource "azurerm_mssql_database" "db" { name = var.sql_db_name server_id = azurerm_mssql_server.server.id }建立名為
variables.tf的檔案,並插入下列程式碼:variable "resource_group_location" { type = string description = "Location for all resources." default = "eastus" } variable "resource_group_name_prefix" { type = string description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." default = "rg" } variable "sql_db_name" { type = string description = "The name of the SQL Database." default = "SampleDB" } variable "admin_username" { type = string description = "The administrator username of the SQL logical server." default = "azureadmin" } variable "admin_password" { type = string description = "The administrator password of the SQL logical server." sensitive = true default = null }建立名為
outputs.tf的檔案,並插入下列程式碼:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "sql_server_name" { value = azurerm_mssql_server.server.name } output "admin_password" { sensitive = true value = local.admin_password }
初始化 Terraform
執行 terraform init 以初始化 Terraform 部署。 此命令會下載管理 Azure 資源所需的 Azure 提供者。
terraform init -upgrade
要點:
-
-upgrade參數會將必要的提供者外掛程式升級至符合設定版本條件約束的最新版本。
建立 Terraform 執行計畫
執行 terraform 計劃 以建立執行計劃。
terraform plan -out main.tfplan
要點:
-
terraform plan命令會建立執行計畫,但不會執行。 相反地,其會決定要在您指定的設定檔中建立設定所需的動作。 此模式可讓您在對實際資源進行任何變更之前,先確認執行方案是否符合您的預期。 - 選用的
-out參數可讓您指定計畫的輸出檔。 使用-out參數可確保您所檢閱的方案就是所套用的方案。
套用 Terraform 執行計畫
執行 terraform apply 將執行計劃套用至您的雲端基礎設施。
terraform apply main.tfplan
要點:
- 範例
terraform apply命令假設您之前已執行過terraform plan -out main.tfplan。 - 如果您為
-out參數指定了不同的檔案名稱,請在呼叫terraform apply時使用該檔案名稱。 - 若您未使用
-out參數,請呼叫terraform apply,不需要使用參數。
驗證結果
取得 Azure 資源群組名稱。
resource_group_name=$(terraform output -raw resource_group_name)取得新的邏輯伺服器名稱。
sql_server_name=$(terraform output -raw sql_server_name)執行 az sql db list 以顯示伺服器中所有資料庫的名稱。
az sql db list \ --resource-group $resource_group_name \ --server $sql_server_name \ --output table
清除資源
當您不再需要透過 Terraform 建立的資源時,請執行下列步驟:
執行 terraform 計劃 並指定
destroy旗標。terraform plan -destroy -out main.destroy.tfplan要點:
-
terraform plan命令會建立執行計畫,但不會執行。 相反地,其會決定要在您指定的設定檔中建立設定所需的動作。 此模式可讓您在對實際資源進行任何變更之前,先確認執行方案是否符合您的預期。 - 選用的
-out參數可讓您指定計畫的輸出檔。 使用-out參數可確保您所檢閱的方案就是所套用的方案。
-
執行 terraform apply 來應用執行計劃。
terraform apply main.destroy.tfplan
對 Azure 上的 Terraform 進行疑難排解
針對在 Azure 上使用 Terraform 時的常見問題進行疑難解答