はじめに
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
さいごに
誰かのお役に立てれば幸いです。