Azure PowerShell を使用して Azure Resource Manager リソース グループを管理する

Azure Resource Manager で Azure PowerShell を使用して Azure リソースグループを管理する方法について説明します。 Azure リソースの管理については、Manage Azure resources by using Azure PowerShell (Azure PowerShell を使用して Azure リソースを管理する) を参照してください。

リソース グループの管理に関するその他の記事は次のとおりです。

リソース グループとは

リソース グループは、Azure ソリューションの関連するリソースを保持するコンテナーです。 リソース グループには、ソリューションのすべてのリソースか、グループとして管理したいリソースのみを含めることができます。 組織のニーズに合わせてリソースをリソース グループに割り当てる方法を指定してください。 通常は、同じライフサイクルを共有するリソースを同じリソース グループに追加して、グループとして簡単にデプロイ、更新、および削除できるようにします。

リソース グループには、リソースについてのメタデータが格納されます。 そのため、リソース グループの場所を指定するとき、このメタデータが格納される場所を指定することになります。 コンプライアンス上の理由から、データは特定のリージョンに格納されるようにする必要があります。

リソース グループには、リソースについてのメタデータが格納されます。 リソース グループの場所を指定するとき、このメタデータが格納される場所を指定することになります。

リソース グループを作成する

次の PowerShell スクリプトでは、リソース グループを作成します。

New-AzResourceGroup -Name demoResourceGroup -Location westus

リソース グループの一覧を表示する

次の PowerShell スクリプトでは、サブスクリプションの下にリソース グループを一覧表示します。

Get-AzResourceGroup

1 つのリソース グループを取得するには、次のスクリプトを使用します。

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"

Get-AzResourceGroup -Name $resourceGroupName

リソース グループを削除する

次の PowerShell スクリプトはリソース グループを削除します。

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"

Remove-AzResourceGroup -Name $resourceGroupName

Azure Resource Manager によってリソースの削除の順序が決定される方法の詳細については、「Azure Resource Manager によるリソース グループの削除」を参照してください。

リソースを既存のリソース グループにデプロイする

Deploy resources to an existing resource group (リソースを既存のリソース グループにデプロイする)」をご覧ください。

リソース グループのデプロイを検証するには、Test-AzResourceGroupDeployment をご覧ください。

リソース グループとリソースをデプロイする

Resource Manager テンプレートを使用して、リソース グループを作成し、そのグループにリソースをデプロイできます。 詳しくは、「リソース グループを作成してリソースをデプロイする」をご覧ください。

デプロイに失敗したときに再デプロイする

この機能は、"エラー時のロールバック" とも呼ばれます。 詳細については、「デプロイに失敗したときに再デプロイする」を参照してください。

別のリソース グループまたはサブスクリプションに移動する

グループ内のリソースを別のリソース グループに移動できます。 詳細については、「 新しいリソース グループまたはサブスクリプションへのリソースの移動」を参照してください。

リソース グループをロックする

ロックすることで、組織内の他のユーザーが重要なリソース (Azure サブスクリプション、リソース グループ、リソースなど) を誤って削除または変更することを防ぎます。

次のスクリプトでは、リソース グループをロックして、そのリソース グループを削除できないようにします。

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"

New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName $resourceGroupName 

次のスクリプトでは、リソース グループのすべてのロックを取得します。

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"

Get-AzResourceLock -ResourceGroupName $resourceGroupName 

詳細については、「Azure Resource Manager によるリソースのロック」を参照してください。

リソース グループにタグを適用する

リソース グループやリソースにタグを適用して、アセットを論理的に整理できます。 詳細については、タグを使用した Azure リソースの整理 に関する記事をご覧ください。

リソース グループをテンプレートにエクスポートする

リソース グループを設定したら、リソース グループの Resource Manager テンプレートを表示できます。 テンプレートのエクスポートには、2 つの利点があります。

  • テンプレートに完全なインフラストラクチャが含まれているため、ソリューションの将来のデプロイを自動化します。
  • ソリューションを表す JavaScript Object Notation (JSON) を調べることで、テンプレートの構文を確認できます。

リソース グループ内のすべてのリソースをエクスポートするには、Export-AzResourceGroup コマンドレットを使用して、リソース グループ名を指定します。

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"

Export-AzResourceGroup -ResourceGroupName $resourceGroupName

これでテンプレートはローカル ファイルとして保存されます。

リソース グループ内のすべてのリソースをエクスポートする代わりに、どのリソースをエクスポートするかを選択できます。

1 つのリソースをエクスポートするには、そのリソースの ID を渡します。

$resource = Get-AzResource `
  -ResourceGroupName <resource-group-name> `
  -ResourceName <resource-name> `
  -ResourceType <resource-type>
Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource $resource.ResourceId

複数のリソースをエクスポートするには、リソース ID を配列で渡します。

Export-AzResourceGroup `
  -ResourceGroupName <resource-group-name> `
  -Resource @($resource1.ResourceId, $resource2.ResourceId)

テンプレートをエクスポートするときには、テンプレート内でパラメーターを使用するかどうかを指定できます。 既定では、リソース名用のパラメーターが含められますが、既定値はありません。 そのパラメーターの値は、デプロイ時に渡す必要があります。

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": null,
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": null,
    "type": "String"
  }
}

リソース内では、パラメーターは名前用に使用されます。

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2016-09-01",
    "name": "[parameters('serverfarms_demoHostPlan_name')]",
    ...
  }
]

テンプレートをエクスポートするときに -IncludeParameterDefaultValue パラメーターを使用する場合、テンプレート パラメーターには、現在の値に設定される既定値が含められます。 その既定値を使用することも、異なる値を渡して既定値を上書きすることもできます。

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

テンプレートをエクスポートするときに -SkipResourceNameParameterization パラメーターを使用する場合、リソース名用のパラメーターはテンプレートに含められません。 代わりに、リソース名はリソースに対して直接、現在の値に設定されます。 この名前はデプロイ時にカスタマイズすることはできません。

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2016-09-01",
    "name": "demoHostPlan",
    ...
  }
]

テンプレートのエクスポート機能は、Azure Data Factory リソースのエクスポートをサポートしていません。 Data Factory リソースをエクスポートする方法については、「Azure Data Factory のデータ ファクトリをコピーまたは複製する」を参照してください。

クラシック デプロイ モデルを使用して作成されたリソースをエクスポートするには、Resource Manager デプロイ モデルに移行する必要があります。

詳細については、「Azure portal のテンプレートへの単一および複数リソースのエクスポート」を参照してください。

リソース グループへのアクセスを管理する

Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure のリソースへのアクセスを管理する方法です。 詳細については、「Azure PowerShell を使用して Azure ロールの割り当てを追加または削除する」を参照してください。

次のステップ