Azure Database for MariaDBを作ってみた

 

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

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

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

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

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

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

https://github.com/Tama-negi/Li-akb-branch-office/tree/PowerShell_Azure/AzureDatabase_MariaDB_Tempalte_20200530

1 .Azure Portal上でAzure Database for MariaDBを新規作成する

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

手順はマイクロソフト様のサイトに記載されていますので、その通り実施してみました。

https://docs.microsoft.com/en-us/azure/mariadb/quickstart-create-mariadb-server-database-using-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が作成されます。

 

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

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

https://docs.microsoft.com/en-us/azure/mariadb/quickstart-create-mariadb-server-database-arm-template?tabs=azure-portal

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

    • デフォルト値を設定しています。今回は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”
        }
    ]
}

 

3.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

4.Azure Database for MariaDBをARMテンプレート+Power Shellでデプロイする

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

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

#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 `
}

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

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

Azure Database for MariaDBに接続してみた