Azure でリソースを作成および管理する方法

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
  • 構成可能なダッシュボードを作成する機能
  • サブスクリプション設定と課金情報へのアクセス

Azure portal を示すスクリーンショット。

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 Tools 拡張機能パックがインストールされた Visual Studio 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 リソースを管理できます。