2018年12月にリリースされたPowerShell Az moduleを使う

# Az モジュール

現時点（2019年2月）最新の[Azureリソースをマネージするためのコマンドラインパッケージ](https://docs.microsoft.com/en-us/powershell/azure/new-azureps-module-az?view=azps-1.2.0)です。呼び名は「Azure PowerShell Az Module」とか「Az PowerShell 1.2」とか統一感がないんですが、「Az」というのが目立ちます。

# ローカルPowerShellに導入

[ドキュメンテーションでは旧バージョンのAzureRMをまずアンインストール](https://docs.microsoft.com/en-us/powershell/azure/uninstall-az-ps?view=azps-1.2.0#uninstall-the-azurerm-module)することを推奨しています。

PowerShellコマンドプロンプトを管理者権限で開いてから：

```
Install-Module -Name Az -AllowClobber
```

もしくは、管理者権限なしのコマンドからPowerShellコマンドプロンプトから

```
Install-Module -Name Az -AllowClobber -Scope CurrentUser
```

でインストールします。

警告が出るけど「Yes」でオッケーです（詳細は上のリンクからドキュメンテーションを参照）

Azure につなげるには

```
Connect-AzAccount
```

おなじみのログインウィンドウがポップアップするので認証手続きを完了します。これでAzureリソースをマネージする準備が出来ました。

# サブスクリプション選び

とりあえずは何をするにしろ「話はサブスクリプションを選んでから」ですね。

この[ドキュメンテーション](https://docs.microsoft.com/en-us/powershell/azure/manage-subscriptions-azureps?view=azps-1.2.0)にこじんまりとまとまってました。使うコマンドは：

```
Get-AzSubsctiption // 自分がアクセスできるサブスクリプションを一覧表示
Select-AzSubscription　// 特定のサブスクリプションを選択
Get-AzContext // 目的のサブスクリプションが選択されているかを確認
```
この流れを覚えておけばOK。

# Cloudで導入（Azure Cloud Shellを使うだけ）

[Azure Cloud Shell](https://docs.microsoft.com/en-us/azure/cloud-shell/overview?view=azps-1.2.0)を使えばすぐにAzを使えます。リソースをブラウズしたり確認するだけならこっちの方が手っ取り早いですね。自分もこれからはAzureポータルのUI以外にもCloud Shellを使えるようになろうと思います。リソースの種類や確認したい内容によってはCloud Shellの方が効率がよい場合があると見た。

# Cosmos DB アカウントでも作って見ましょう

ARMテンプレートで作ります。通常、**テンプレートファイル**と**パラメーターファイル**の二つのファイルを書いて、コマンドラインで実行します。

```json:MyCosmosDb.Template.json
{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "DatabaseAccountName": {
        "type": "string",
        "metadata": {
          "description": "The Azure Cosmos DB account name."
        }
      },
      "Location": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "metadata": {
          "description": "Location for all resources."
        }
      }
    },
    "resources": [
      {
        "apiVersion": "2015-04-08",
        "type": "Microsoft.DocumentDB/databaseAccounts",
        "kind": "GlobalDocumentDB",
        "name": "[parameters('DatabaseAccountName')]",
        "location": "[parameters('Location')]",
        "properties": {
          "databaseAccountOfferType": "Standard",
          "locations": [
            {
              "locationName": "[parameters('Location')]",
              "failoverPriority": 0
            }
          ],
          "capabilities": []
        },
        "tags": {
          "defaultExperience": "Core SQL API"
        }
      }
    ]
  }
```

ちなみに「Core SQL」のAPIを使う際は上記のように```capabilities```パラメーターに空の配列を指定します。そうすると、デフォルトで「Core SQL」になります。SQL以外のものを使いたい場合は、例えば['EnableGremlin']のように指定します。

```json:MyCosmosDb.Parameters.json
{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "DatabaseAccountName": {
            "value": "my-cosmos-db-acount"
        },
        "Location": {
            "value": "East US"
        }
    }
}
```

PowerShell Az moduleを使って、ARMテンプレートを元にCosmosDBアカウントを作成します。

```
New-AzResourceGroupDeployment -Name TestDeployment -ResourceGroupName <your-resource-group> -TemplateFile .\MyCosmosDb.Template.json -TemplateParameterFile .MyCosmosDb.Parameters.json
```

４，５分ぐらい待ったら成功するはずです。

# まとめ

また新しいコマンドラインパッケージが出ましたね。Azureもどんどん成熟してきてるので名前や手順のコンベンションも統一感が出てきました。この新しいAzモジュールも、より簡単になったというのが売りのようです。