Azure Database for MariaDBを作ってみた

ARM Template,Azure,Database for MariaDB

Azure Database for MariaDBのデプロイをAzure PortalとARM(Azure Resource Manager)テンプレートの2つパターンで実施してみました。

ARMテンプレートでは、少し利用しやすいように直してみました。

      • デフォルト値の設定を追加しています。
      • PowerShellを使ってデプロイする場合に、ARMテンプレートのパラメータをCSVから読み込むようにしてみた。

ARMテンプレートを使ってデプロイするにあたっては、以下の3つのファイルを作成しています。

      • Azure Database for MariaDBを定義するARMテンプレート(JSONファイル)
      • Azure Database for MariaDBプランのパラメータを指定するCSV
      • ARMテンプレートをデプロイするPowerShell

作成したものはGitHub上にも公開しております。

スポンサーリンク

Azure PortalでAzure Database for MariaDBを新規作成

Azure Portalを利用して、Azure Database for MariaDBを作成してみました。

マイクロソフト公式サイトを参考に進めてみました。

Create an Azure Database for MariaDB server by using the Azure portal

Azure Portalを利用して作成する場合、以下の内容を選択します。実際に利用するリソースに合わせて設定します。

      • リソースグループ
      • サーバ名
      • データソース(新規に作成する場合はなしを選択します。バックアップからリカバリする際にはバックアップを選択します。)
      • 場所(リージョン)
      • バージョン(MariaDBのバージョンを選択します。2020年5月現在では10.2か10.3になります。)
      • コンピューティングとストレージ(価格レベルです。MariaDBを利用する為のリソースになります。)
      • 管理者ユーザー名(MariaDBにアクセスする管理者ユーザーになります。)
      • パスワード(管理者ユーザーのパスワードになります。)
      • タグ

1)すべてのサービスでMariaと入力します。Azure Database for MariaDBが表示されますので選択します。

2)下記画面が表示されますので、+追加をクリックします。

3)基本設定の画面が表示されますので、適時入力します。

コンピューティングとリソースにあるサーバの構成をクリックします。なお、場所(リージョン)を変更すると、サーバの構成が初期値に戻るので要注意です。

5)価格レベルやvCore、ストレージ容量を選択します。

今回は下記記載の設定で作ってみました。(一番お安い構成にしています。)

    • 価格レベルはBasicを選択
    • vCore:1
    • ストレージ:5GB
    • 自動拡張:いいえ
    • バックアップ保持期間:7日間

一度作成しまうと、後からBasicから汎用目的への変更はできません。注意が必要となります。

6)OKを選択すると、基本のページに戻ります。

タグを設定しない場合はそのまま確認および作成を選択します。

7)確認画面が表示されますので、問題がなければそのまま作成します。

完了すると、Azure Database for MariaDBが作成されます。

Azure Database for MariaDBのARM(Azure Resource Manager)テンプレート

マイクロソフト公式サイトを参考に、Azure Database for MariaDBのARMテンプレートを作成してみました。

Use an ARM template to create an Azure Database for MariaDB server

サンプルを使いやすくする為に、少しだけシンプルにしてみました。

    • デフォルト値を設定しています。今回はAzure Portalを利用して作成した場合の値をデフォルト値としています。
    • パラメータをAzure Portalを利用して作成した場合+SSLの有効化指定の設定のみに変更(サンプルからvirtualNetwork関連の情報を抜きました。)
    • コンピューティング世代(SkuFamily)が現時点ではGen5のみなので、variablesで固定値にしています。

Azure Database for MariaDBのARMテンプレートはこういう形になりました。

{

    “$schema": “https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    “contentVersion": “1.0.0.0",
    “parameters": {
        “serverName": {
            “type": “string",
            “minLength":3,
            “maxLength":63
        },
        “administratorLogin": {
            “type": “string",
            “minLength":1,
            “maxLength":16
        },
        “administratorLoginPassword": {
            “type": “securestring"
        },
        “location": {
            “type": “string",
            “defaultValue": “japaneast"
        },
        “skuCapacity": {
            “type": “int",
            “defaultValue": 1
        },
        “skuName": {
            “type": “string",
            “defaultValue": “B_Gen5_1"
        },
        “skuSizeMB": {
            “type": “int",
            “defaultValue": 5120
        },
        “skuTier": {
            “type": “string",
            “defaultValue": “Basic",
            “allowedValues": [
                “Basic",
                “GeneralPurpose",
                “MemoryOptimize"
            ]
        },
        “version": {
            “type": “string",
            “defaultValue": “10.3",
            “allowedValues": [
                “10.2",
                “10.3"
            ]
        },
        “backupRetentionDays": {
            “type": “int",
            “defaultValue": 7
        },
        “geoRedundantBackup": {
            “type": “string",
            “defaultValue": “Disabled",
           “allowedValues": [
                “Disabled",
                “Enabled"
            ]
        },
        “storageAutoGrow": {
            “type": “string",
            “defaultValue": “Disabled",
           “allowedValues": [
                “Disabled",
                “Enabled"
            ]
        },
        “sslEnforcement": {
            “type": “string",
            “defaultValue": “Disabled",
            “allowedValues": [
                “Disabled",
                “Enabled"
            ]
        },
        “infrastructureEncryption": {
            “type": “string",
            “defaultValue": “Disabled",
            “allowedValues": [
                “Disabled",
                “Enabled"
            ]
        }
    },
    “variables": {
        “skuFamily":"Gen5″
    },    
    “resources": [
        {
            “apiVersion": “2018-06-01-preview",
            “kind": “",
            “location": “[parameters('location’)]",
            “name": “[parameters('serverName’)]",
            “properties": {
                “version": “[parameters('version’)]",
                “administratorLogin": “[parameters('administratorLogin’)]",
                “administratorLoginPassword": “[parameters('administratorLoginPassword’)]",
                “storageProfile": {
                    “storageMB": “[parameters('skuSizeMB’)]",
                    “backupRetentionDays": “[parameters('backupRetentionDays’)]",
                    “geoRedundantBackup": “[parameters('geoRedundantBackup’)]",
                    “storageAutoGrow": “[parameters('storageAutoGrow’)]"
                },
                “sslEnforcemen": “[parameters('sslEnforcement’)]",
                “infrastructureEncryption": “[parameters('infrastructureEncryption’)]"
            },
            “sku": {
                “name": “[parameters('skuName’)]",
                “tier": “[parameters('skuTier’)]",
                “capacity": “[parameters('skuCapacity’)]",
                “size": “[parameters('skuSizeMB’)]",
                “family": “[variables('skuFamily’)]"
            },
            “tags": {},
            “type": “Microsoft.DBforMariaDB/servers"
        }
    ]
}

Azure Database for MariaDBのパラメータ設定CSV作成する

Azure Database for MariaDB を作成する為にCSVから読み込むパラメータは以下の通りになります。
リソースグループ名はデプロイ先のリソースグループ名になります。

    • リソースグループ(ResourceGroupName)
    • DBサーバ名(serverName)(小文字のみです)
    • 管理者ユーザ名(AppServicePlanName)
    • 管理者ユーザーパスワード(administratorLoginPassword)
    • リージョン名(location)
    • SKU名(skuName)
    • ストレージサイズ(skuSizeMB)
    • 価格レベル(skuTier)
    • MariaDBのバージョン(version)
    • バックアップ保存日数(backupRetentionDays)
    • バックアップ冗長(geoRedundantBackup)
    • ストレージの自動拡張(storageAutoGrow)
    • SSKの強制(sslEnforcement)
    • DB暗号化(infrastructureEncryption)

CSVのサンプルは以下のようになりました。(CSVが長くなっためPart1、Part2、Part3の3行に分割しています。)

#Part1
ResourceGroupName,location,serverName,administratorLogin,administratorLoginPassword,skuName,
RG1,japaneast,mariadb-01,mariadatabaseadmin,mariadbadminpassword,B_Gen5_1,5120,
 
#Part2
skuSizeMB,skuTier,version,backupRetentionDays,geoRedundantBackup,
5120,Basic,10.3,7,Disabled,Disabled,Enabled,Disabled
 
#Part3

storageAutoGrow,sslEnforcement,infrastructureEncryption

Disabled,Enabled,Disabled

Azure Database for MariaDBをARMテンプレート+PowerShell使ってデプロイ

ARMテンプレートのパス、CSVのパスを指定してARMテンプレートをデプロイするPowerShellを実行します。MariaDBがデプロイされます。

Azure Database for MariaDBのARMテンプレートをデプロイするPowerShellはこんな感じになりました。

#Azure Database for MariaDB ARMTemplate Deploy

 
#基本設定
#serverName DBサーバ名
#administratorLogin 管理者ユーザー名
#administratorLoginPassword 管理者ユーザーパスワード
#location リージョン名
#skuName SKU名(skuTier略称(B,GP,MO)+Gen5+vCore数)
#skuSizeMB ストレージサイズ
#skuTier 価格レベル(Basic,GeneralPurpose,MemoryOptimize))
#version MariaDBのバージョン(10.2,10.3))
#backupRetentionDays バックアップ保存日数(最低7日)
#geoRedundantBackup バックアップでGeo冗長を利用するか
#storageAutoGrow ストレージの自動拡張
#sslEnforcement MariaDBへアクセスする際にSSLを強制するか
#infrastructureEncryption DB暗号化

$TemplateFilePath = “ARMテンプレートファイルのパス"
$ImportCSVPath = “CSVファイルのパス"

# Inclued Configure Entries
$csv = Import-Csv -path $ImportCSVPath 

# Template Deploy
foreach( $c in $csv ){

$secureadminpass = ConvertTo-SecureString $c.administratorLoginPassword -AsPlainText -Force

New-AzResourceGroupDeployment `
  -ResourceGroupName $c.ResourceGroupName `
  -TemplateFile $TemplateFilePath `
  -serverName $c.serverName `
  -administratorLogin $c.administratorLogin `
  -administratorLoginPassword $secureadminpass `
  -location $c.location `
  -skuName $c.skuName `
  -skuSizeMB $c.skuSizeMB `
  -skuTier $c.skuTier `
  -version $c.version `
  -backupRetentionDays $c.backupRetentionDays `
  -geoRedundantBackup $c.geoRedundantBackup `
  -storageAutoGrow $c.storageAutoGrow `
  -sslEnforcement $c.sslEnforcement `
  -infrastructureEncryption $c.infrastructureEncryption `
}

デプロイが成功すると、PowerShellの実行ログにProvisioningState : Succeededと表示され、実際にPortal上で確認するとPortalを利用した場合と同じ設定通り出来ている事が確認できます。

なお、接続方法については、以下の記事に記載しておりますので、こちらも参考ください。

スポンサーリンク