Azure でリソースを作成および管理する方法
これは、開発者が Azure を使い始める際に役立つ 7 部構成の記事のパート 5 です。
- パート1: 開発者向けの Azure の概要
- パート 2: 開発者向けの主要な Azure サービス
- パート 3: Azure でアプリケーションをホストする
- パート 4: アプリを Azure サービスに接続する
- パート 5: Azure でリソースを作成および管理する方法
- パート 6: Azure アプリを構築するための主要な概念
- パート 7: 請求方法
Azure には、アプリケーションで使用される Azure リソースを作成および管理するためのさまざまなツールが用意されています。
さまざまなツールが異なるユース ケースをサポートするように設計されており、ほとんどの Azure 開発者は、実行する必要があるジョブに応じて、さまざまなツールの組み合わせを使用します。 たとえば、次のような場合が考えられます。
新しいアプリケーションの Azure リソースのプロトタイプを作成するときは、Azure portal や VS Code 用の Azure Tools 拡張機能を使用します。 GUI ツールは、新しいサービスを作成するプロセスを導き、ドロップダウン メニューやその他のグラフィカル要素を使用してサービスのオプションを確認して選択できるようにします。
Azure CLI またはAzure PowerShell を使用してスクリプトを記述して、一般的なタスクを自動化します。 たとえば、Azure App Service、データベース、BLOB ストレージで構成される新しい Web アプリの基本的な開発環境を作成するスクリプトを作成できます。 スクリプトを記述すると、毎回同じ方法でリソースが作成され、UI 介してクリックするよりも実行が高速になります。
コードとしてのインフラストラクチャ (IaC) ツールを使用して、宣言によって Azure リソースをデプロイおよび管理できます。 Terraform、Ansible、Bicep などのツールを使用すると、ソリューションに必要な Azure リソースを宣言構文で体系化し、環境間での Azure リソースの一貫したデプロイを確保し、環境のドリフトを防ぐことができます。
Azure portal
Azure portal は、Azure リソースを管理するために設計された Web ベースのインターフェイスです。 Azure porta の機能:
- Azure リソースを作成および管理するための使い易い Web ベースの UI
- 構成可能なダッシュボードを作成する機能
- サブスクリプション設定と課金情報へのアクセス
VS Code Azure Tools 拡張機能パック
Visual Studio Code を使用する開発者は、VS Code 用の Azure Tools 拡張機能パックを使用して、VS Code から直接 Azure リソースを管理できます。 Azure Tools 拡張機能パックを使用して、次のことを実行できます。
- Azure App Service を使用して、コードを作成、管理、および Web サイトにデプロイする。
- Azure データベースを作成、参照、およびクエリする
- VS Code から直接 Azure Functions を作成、デバッグ、デプロイする
- VS Code からコンテナー化されたアプリケーションをデプロイする
コマンド ライン ツール
コマンド ライン ツールには、効率性、再現性、および繰り返し発生するタスクをスクリプト化できるという利点があります。 Azure には、選択できる 2 つの異なるコマンド ライン ツールが用意されています。 Azure CLI と Azure PowerShell は機能的に同等です。 個々のワークフローに最適なツールを選択して使用する必要があるだけです。
Azure CLI
Azure CLI は、Windows、Linux、macOS で実行されるクロスプラットフォームのコマンド ライン ツールです。 Azure CLI:
- Azure リソースを管理するための簡潔で効率的な構文を備えています。
- 結果を JSON として出力します (既定)。 結果は、YAML、ASCII テーブル、またはキーのないタブ区切りの値として形式化することもできます。
- JMESPath クエリを使用して、出力を照会および整形する機能が提供されています。
Azure CLI コマンドは Bash などの一般的なスクリプト言語に簡単に組み込まれ、一般的なタスクをスクリプト化できます。
LOCATION='eastus'
RESOURCE_GROUP_NAME='msdocs-expressjs-mongodb-tutorial'
WEB_APP_NAME='msdocs-expressjs-mongodb-123'
APP_SERVICE_PLAN_NAME='msdocs-expressjs-mongodb-plan-123'
RUNTIME='NODE|14-lts'
# Create a resource group
az group create \
--location $LOCATION \
--name $RESOURCE_GROUP_NAME
# Create an app service plan
az appservice plan create \
--name $APP_SERVICE_PLAN_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--sku B1 \
--is-linux
# Create the web app in the app service
az webapp create \
--name $WEB_APP_NAME \
--runtime $RUNTIME \
--plan $APP_SERVICE_PLAN_NAME \
--resource-group $RESOURCE_GROUP_NAME
Azure PowerShell
Azure PowerShell は、PowerShell から Azure リソースを直接管理するためのコマンドレットのセットです。 Azure PowerShell は PowerShell モジュールとしてインストールされ、Windows、macOS、Linux を含むすべてのプラットフォームで PowerShell 7.0.6 LTS および PowerShell 7.1.3 以降で動作します。 また Windows PowerShell 5.1 と互換性があります
Azure PowerShell は PowerShell 言語と緊密に統合されています。 コマンドは動詞-名詞形式に従い、データは PowerShell オブジェクトとして返されます。 PowerShell スクリプトに既に慣れている場合は、Azure PowerShell が自然な選択です。
$location = 'eastus'
$resourceGroupName = 'msdocs-blob-storage-demo-azps'
$storageAccountName = 'stblobstoragedemo999'
# Create a resource group
New-AzResourceGroup `
-Location $location `
-Name $resourceGroupName
# Create the storage account
New-AzStorageAccount `
-Name $storageAccountName `
-ResourceGroupName $resourceGroupName `
-Location $location `
-SkuName Standard_LRS
Azure CLI または Azure PowerShell の選択方法の詳細については、「適切なコマンド ライン ツールを選択する」の記事を参照してください。
コードとしてのインフラストラクチャ ツール
コードとしてのインフラストラクチャは、宣言型構成ファイルを介してリソースを管理およびプロビジョニングするプロセスです。 コードとしてのインフラストラクチャ ツールでは、宣言型の終了状態仕様を使用して、リソースのセットが毎回同じ方法で作成および構成されるように保証します。 さらに、コードとしてのインフラストラクチャ ツールのほとんどがリソースをモニターし、継続的に目的の状態で構成されていることを確認します。
自動化され、繰り返される、信頼性の高いインフラストラクチャ デプロイの場合、Azure はさまざまなコードとしてのインフラストラクチャ ツールをサポートします。
Bicep
Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語 (DSL) です。 簡潔な構文、信頼性の高いタイプ セーフ、およびコードの再利用のサポートが提供されます。
param location string = resourceGroup().location
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Terraform
Hashicorp Terraform は、クラウド インフラストラクチャのプロビジョニングおよび管理を行うためのオープン ソース ツールです。 クラウド リソースのトポロジを説明する構成ファイルでインフラストラクチャを体系化します。 Terraform CLI は、Azure に構成ファイルをデプロイし、そのバージョンを管理するための簡単なメカニズムを提供します。
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "main" {
name = "${var.prefix}-resources"
location = var.location
}
resource "azurerm_app_service_plan" "main" {
name = "${var.prefix}-asp"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
kind = "Linux"
reserved = true
sku {
tier = "Standard"
size = "S1"
}
}
resource "azurerm_app_service" "main" {
name = "${var.prefix}-appservice"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
app_service_plan_id = azurerm_app_service_plan.main.id
site_config {
linux_fx_version = "NODE|10.14"
}
}
Ansible
Ansible は、クラウド プロビジョニング、構成管理、およびアプリケーションのデプロイを自動化するオープンソース製品です。 Ansible を使用すると、仮想マシン、コンテナー、およびネットワークをプロビジョニングし、クラウド インフラストラクチャを完成させることができます。 また、Ansible を使用すると、環境でのリソースの展開と構成を自動化することもできます。
- hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
webapp_name: myfirstWebApp
plan_name: myAppServicePlan
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create App Service on Linux with Java Runtime
azure_rm_webapp:
resource_group: "{{ resource_group }}"
name: "{{ webapp_name }}"
plan:
resource_group: "{{ resource_group }}"
name: "{{ plan_name }}"
is_linux: true
sku: S1
number_of_workers: 1
frameworks:
- name: "java"
version: "8"
settings:
java_container: tomcat
java_container_version: 8.5
Azure SDK と REST API
Azure リソースは、コードからプログラムを使用して作成することもできます。 これにより、ユーザーの要求に応じて Azure リソースを動的にプロビジョニングするアプリケーションを記述できます。 Azure SDK には、.NET、Go、Java、JavaScript、Python のリソース管理パッケージが用意されています。これにより、Azure リソースをコードで直接作成および管理できます。 代替として、Azure REST API を使用すると、RESTful エンドポイントへの HTTP 要求を介して Azure リソースを管理できます。