はじめに

AzureのPostgreSQLを触る機会があったので、アウトプットとしてTerraformのコードを記載していきます。

過去シリーズ記事

とりあえずTerraformでAzure Redis for Cacheを作ってみる
とりあえずTerraformでAzure SQL Databaseを作ってみる
とりあえずTerraformでAzure Load Balancerをつくってみる

コード

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_resource_group" "test" {
  name     = "postgresql-test-rg"
  location = "japaneast"
}

resource "azurerm_postgresql_server" "test" {
  for_each = local.sku_name

  name                              = "postgresql-server-${each.key}"
  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                        = 5120                                           # ストレージの容量(MB)
  backup_retention_days             = 7                                                 # バックアップ保持日数
  geo_redundant_backup_enabled      = false                                        # Geo 冗長サーバーのバックアップの有効化
  auto_grow_enabled                 = false                                        # ストレージの自動拡張の有効化
  administrator_login               = "test"                        # 管理者ID
  administrator_login_password      = "12345"                  # 管理者パスワード
  version                           = "11"                                          # PostgreSQL Serverのバージョン
  ssl_enforcement_enabled           = false                                        # SSL接続を強制するか
  ssl_minimal_tls_version_enforced  = "TLSEnforcementDisabled" # サポートするSSLの最小バージョン
  public_network_access_enabled     = true                     # パブリックアクセスの有効化
}

内容としては、
SKUがBasic, General Purpose, Memory Optimizedの3つのSKUで単一サーバーのPostgreSQLを作成しています。
(テスト目的で作成したものを流用しているのでSSL設定が無効化, パブリックアクセスが有効化されています。)

サンプルコードをGitHubに載せているので実際に立ち上げる場合はご参照ください。
https://github.com/tkhs1121/terraform-azure-sample/tree/master/postgresql

各パラメーターの説明

  • name
    PostgreSQLの名前。
  • location
    PostgreSQLを作成する場所。
  • resource_group_name
    PostgreSQLを作成するリソースグループの名前。
  • 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
    PostgreSQL Serverのバージョン
  • ssl_enforcement_enabled
    SSL接続を強制するか
  • ssl_minimal_tls_version_enforced
    サポートするSSLの最小バージョン
  • public_network_access_enabled
    パブリックアクセスの有効化

詳細については下記のドキュメントをご参照ください。
Terraform 公式ドキュメント
Azure 公式ドキュメント

手順

リソースを作成する際は以下のコマンドを実行してください。

terraform init
terraform plan -out main.tfplan
terraform apply main.tfplan

さいごに

誰かのお役に立てれば幸いです。