Azure CLI を使用して Azure のリソースとリソース グループを管理する

Azure コマンド ライン インターフェイス (Azure CLI) は、Resource Manager を使用したリソースのデプロイと管理に使用できるツールの 1 つです。 この記事では、Resource Manager モードで Azure CLI を使用して、Azure のリソースとリソース グループを管理する一般的な方法を紹介します。 CLI を使用したリソースのデプロイの詳細については、「Resource Manager テンプレートと Azure CLI を使用したリソースのデプロイ」を参照してください。 Azure リソースと Resource Manager に関する背景については、「Azure Resource Manager の概要」を参照してください。

注意

Azure CLI を使用して Azure リソースを管理するには、Azure CLI をインストールし、azure login コマンドを使用して Azure にログインする必要があります。 CLI が Resource Manager モードになっていることを確認します (azure config mode arm を実行します)。 これらの操作が完了したら、準備は OK です。

リソース グループとリソースの取得

リソース グループ

サブスクリプションのすべてのリソース グループとその場所の一覧を取得するには、次のコマンドを実行します。

azure group list

リソース

グループ内 (この例では testRG という名前のグループ) のすべてのリソースの一覧を表示するには、次のコマンドを使用します。

azure resource list testRG

MyUbuntuVM という名前の VM など、グループ内の個別のリソースを表示するには、次のコマンドを使用します。

azure resource show testRG MyUbuntuVM Microsoft.Compute/virtualMachines -o "2015-06-15"

Microsoft.Compute/virtualMachines パラメーターに注意してください。 このパラメーターは、情報要求の対象となるリソースの種類を示します。

注意

list コマンド以外の azure resource コマンドを使用する場合、リソースの API バージョンを -o パラメーターで指定する必要があります。 API バージョンが不明な場合は、テンプレート ファイルでリソースの apiVersion フィールドを確認してください。 Resource Manager の API バージョンの詳細については、「リソース プロバイダーと種類」を参照してください。

リソースの詳細を表示するとき、多くの場合、--json パラメーターを使用すると便利です。 このパラメーターを使用すると、一部の値が入れ子構造やコレクションになるので、出力が読みやすくなります。 次の入力例は、show コマンドの結果を JSON ドキュメントとして返す場合を示しています。

azure resource show testRG MyUbuntuVM Microsoft.Compute/virtualMachines -o "2015-06-15" --json
注意

> 文字を使用して出力をファイルに転送することで、JSON データをファイルに保存できます。 次に例を示します。

azure resource show testRG MyUbuntuVM Microsoft.Compute/virtualMachines -o "2015-06-15" --json > myfile.json

タグ

リソース グループにタグを追加するには、azure group set を使用します。 リソース グループにタグがない場合には、追加するタグを渡します。

azure group set -n tag-demo-group -t Dept=Finance

タグは全体として更新されます。 タグが既に存在するリソース グループにタグを追加する場合には、タグをすべて渡します。

azure group set -n tag-demo-group -t Dept=Finance;Environment=Production;Project=Upgrade

リソース グループ内のリソースがタグを継承することはありません。 リソースにタグを追加するには、azure resource set を使用します。 タグの追加先となるリソースの種類について、API のバージョン番号を渡します。 API のバージョンを取得する必要がある場合には、設定しようとしているリソースの種類のリソース プロバイダーで以下のコマンドを使用します。

azure provider show -n Microsoft.Storage --json

結果で、タグの追加先のリソースの種類を探します。

"resourceTypes": [
{
  "resourceType": "storageAccounts",
  ...
  "apiVersions": [
    "2016-01-01",
    "2015-06-15",
    "2015-05-01-preview"
  ]
}
...

以上が終わったら、API のバージョン、リソース グループ名、リソース名、リソースの種類、タグ値をパラメーターとして指定します。

azure resource set -g tag-demo-group -n storagetagdemo -r Microsoft.Storage/storageAccounts -t Dept=Finance -o 2016-01-01

タグはリソースやリソース グループ上に直接存在します。 既存のタグを表示するには、 azure group show を使用してリソース グループとそのリソースを取得します。

azure group show -n tag-demo-group --json

これにより、リソース グループに関するメタデータが、適用されているすべてのタグと共に返されます。

{
  "id": "/subscriptions/4705409c-9372-42f0-914c-64a504530837/resourceGroups/tag-demo-group",
  "name": "tag-demo-group",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "location": "southcentralus",
  "tags": {
    "Dept": "Finance",
    "Environment": "Production",
    "Project": "Upgrade"
  },
  ...
}

特定のリソースのタグを表示するには、 azure resource showを使用します。

azure resource show -g tag-demo-group -n storagetagdemo -r Microsoft.Storage/storageAccounts -o 2016-01-01 --json

タグ値が設定されているすべてのリソースを取得するには、以下を使用します。

azure resource list -t Dept=Finance --json

タグ値が設定されているすべてのリソース グループを取得するには、以下を使用します。

azure group list -t Dept=Finance

サブスクリプション内の既存のタグを表示するには、以下のコマンドを使用します。

azure tag list

リソースの管理

ストレージ アカウントなどのリソースをリソース グループに追加するには、次のようなコマンドを実行します。

azure resource create testRG MyStorageAccount "Microsoft.Storage/storageAccounts" "westus" -o "2015-06-15" -p "{\"accountType\": \"Standard_LRS\"}"

-o パラメーターでリソースの API バージョンを指定するほか、-p パラメーターで必須または追加のプロパティを指定して JSON で書式設定された文字列を渡します。

仮想マシンのリソースなど、既存のリソースを削除するには、次のようなコマンドを使用します。

azure resource delete testRG MyUbuntuVM Microsoft.Compute/virtualMachines -o "2015-06-15"

既存のリソースを別のリソース グループまたはサブスクリプションに移動するには、 azure resource move コマンドを使用します。 次の例は、Redis Cache を新しいリソース グループに移動する方法を示しています。 -i パラメーターには、移動するリソース ID のコンマ区切りリストを指定します。

azure resource move -i "/subscriptions/{guid}/resourceGroups/OldRG/providers/Microsoft.Cache/Redis/examplecache" -d "NewRG"

リソースへのアクセスの制御

Azure CLI を使用して、Azure リソースへのアクセスを制御するポリシーを作成し、管理することができます。 ポリシーの定義とリソースへのポリシーの割り当てに関する背景については、「ポリシーを使用したリソース管理とアクセス制御」を参照してください。

たとえば、米国西部または米国中北部以外の場所からのすべての要求を拒否する次のポリシーを定義し、ポリシー定義ファイル policy.json に保存してみます。

{
"if" : {
    "not" : {
    "field" : "location",
    "in" : ["westus" ,  "northcentralus"]
    }
},
"then" : {
    "effect" : "deny"
}
}

次に、policy definition create コマンドを実行します。

azure policy definition create MyPolicy -p c:\temp\policy.json

このコマンドの出力は次のようになります。

+ Creating policy definition MyPolicy data:    PolicyName:             MyPolicy data:    PolicyDefinitionId:     /subscriptions/########-####-####-####-############/providers/Microsoft.Authorization/policyDefinitions/MyPolicy

data:    PolicyType:             Custom data:    DisplayName:            undefined data:    Description:            undefined data:    PolicyRule:             field=location, in=[westus, northcentralus], effect=deny

目的のスコープにポリシーを割り当てるには、前のコマンドで返された PolicyDefinitionId を使用します。 次の例では、スコープはサブスクリプションになっていますが、リソース グループや個々のリソースをスコープにすることもできます。

azure policy assignment create MyPolicyAssignment -p /subscriptions/########-####-####-####-############/providers/Microsoft.Authorization/policyDefinitions/MyPolicy -s /subscriptions/########-####-####-####-############/

policy definition showpolicy definition setpolicy definition delete の各コマンドを使用して、ポリシー定義を取得、変更、削除することができます。

同様に、policy assignment showpolicy assignment setpolicy assignment delete の各コマンドを使用して、ポリシーの割り当てを取得、変更、削除することができます。

テンプレートとしてのリソース グループのエクスポート

既存のリソース グループがある場合は、そのリソース グループの Resource Manager テンプレートを表示できます。 テンプレートのエクスポートには、2 つの利点があります。

  1. ソリューションの将来のデプロイを簡単に自動化できます。すべてのインフラストラクチャがテンプレートに定義されているためです。
  2. ソリューションを表す JSON を見ることでテンプレートの構文について理解を深めることができます。

Azure CLI を使用して、リソース グループの現在の状態を表すテンプレートをエクスポートするか、特定のデプロイに使用されたテンプレートをダウンロードできます。

  • リソース グループのテンプレートのエクスポート - これは、リソース グループを変更した後で、現在の状態の JSON 表現を取得する必要があるときに便利です。 しかしながら、生成されたテンプレートには、最小数のパラメーターのみが含まれ、変数はありません。 テンプレートの大半の値はハードコーディングされています。 生成されたテンプレートをデプロイする前に、さまざまな環境に合わせてデプロイをカスタマイズできるように、多くの値をパラメーターに変換しておくと便利です。

    リソース グループのテンプレートをローカル ディレクトリにエクスポートするには、次の例に示すように、azure group export コマンドを実行します (ローカル ディレクトリはお使いのオペレーティング システム環境に合わせて置き換えてください)。

      azure group export testRG ~/azure/templates/
    
  • 特定のデプロイのテンプレートのダウンロード -- これは、リソースのデプロイに使用された実際のテンプレートを表示する必要があるときに便利です。 テンプレートには、元のデプロイに定義されていたすべてのパラメーターと変数が含まれます。 ただし、組織のだれかがテンプレートに定義されている以外のリソース グループを変更した場合、そのテンプレートはそのリソース グループの現在の状態を表しません。

    特定のデプロイに使用されたテンプレートをローカル ディレクトリにダウンロードするには、azure group deployment template download コマンドを実行します。 次に例を示します。

      azure group deployment template download TestRG testRGDeploy ~/azure/templates/downloads/
    
注意

テンプレートのエクスポート機能はプレビューの段階にあり、現在のところ、一部の種類のリソースでは、テンプレートをエクスポートできません。 テンプレートのエクスポートを試行したとき、一部のリソースがエクスポートされなかったというエラーが表示されることがあります。 必要に応じて、ダウンロード後、エクスポートされなかったリソースをテンプレート内で手動で定義します。

次のステップ