はじめに
Azure Database for MySQLを触る機会があったので、アウトプットとしてTerraformのコードを記載していきます。
過去シリーズ記事
とりあえずTerraformでAzure Redis for Cacheを作ってみる
とりあえずTerraformでAzure SQL Databaseを作ってみる
とりあえずTerraformでAzure Load Balancerをつくってみる
とりあえずTerraformでAzure Database for PostgreSQLをつくってみる
コード
resource "azurerm_resource_group" "test" {
name = "mysql-test-rg"
location = "japaneast"
}
resource "random_integer" "test" {
min = 1
max = 100
}
resource "random_pet" "server" {
length = 1
separator = ""
}
resource "random_password" "password" {
length = 16
special = true
override_special = "!#%"
min_upper = 5
min_lower = 5
min_numeric = 5
min_special = 1
}
locals {
sku_name = {
"basic" = "B_Gen5_2" # Basic、Gen 5、および 2 個の仮想コア
"generalpurpose" = "GP_Gen5_2" # General Purpose、Gen 5、および 2 個の仮想コア
"memoryoptimized" = "MO_Gen5_2" # Memory Optimized 5、Gen 5、および 2 個の仮想コア
}
}
resource "azurerm_mysql_server" "master" {
for_each = local.sku_name
name = "mysql-server-${each.key}-${random_integer.test.result}"
location = azurerm_resource_group.test.location
resource_group_name = azurerm_resource_group.test.name
sku_name = each.value # SKU (Basic, General Purpose, Memory Optimized)
storage_mb = 102400 # ストレージの容量(MB)
backup_retention_days = 7 # バックアップ保持日数
geo_redundant_backup_enabled = false # Geo 冗長サーバーのバックアップの有効化
auto_grow_enabled = false # ストレージの自動拡張の有効化
administrator_login = random_pet.server.id # 管理者ID
administrator_login_password = random_password.password.result # 管理者パスワード
version = "8.0" # MySQL Serverのバージョン
ssl_enforcement_enabled = false # SSL接続を強制するか
ssl_minimal_tls_version_enforced = "TLSEnforcementDisabled" # サポートするSSLの最小バージョン
public_network_access_enabled = true # パブリックアクセスの有効化
}
内容としては、
SKUがBasic, General Purpose, Memory Optimizedの単一サーバーのMySQLを1つずつ作成しています。
(テスト目的で作成したものを流用しているのでSSL設定が無効化, パブリックアクセスが有効化されています。)
サンプルコードをGitHubに載せているので実際に立ち上げる場合はご参照ください。
https://github.com/tkhs1121/terraform-azure-sample/tree/master/mysql
各パラメーターの説明
- name
MySQLの名前。 - location
MySQLを作成する場所。 - resource_group_name
MySQLを作成するリソースグループの名前。 - sku_name
SKU (Basic, General Purpose, Memory Optimized) - storage_mb
ストレージの容量(MB) - backup_retention_days
バックアップ保持日数 - geo_redundant_backup_enabled
Geo 冗長サーバーのバックアップの有効化 - auto_grow_enabled
ストレージの自動拡張の有効化 - administrator_login
管理者ID - administrator_login_password
管理者パスワード - version
MySQL Serverのバージョン - ssl_enforcement_enabled
SSL接続を強制するか - ssl_minimal_tls_version_enforced
サポートするSSLの最小バージョン - public_network_access_enabled
パブリックアクセスの有効化
詳細については下記のドキュメントをご参照ください。
Terraform 公式ドキュメント
Azure Database for MySQL とは
手順
リソースを作成する際は以下のコマンドを実行してください。
terraform init terraform plan -out main.tfplan terraform apply main.tfplan
さいごに
誰かのお役に立てれば幸いです。