Young Leaves

Azure Developer CLI を各環境で使用する

今回はコマンド操作でAzure の開発に必要な環境やリソースのファイルを作成してくれるツール・Azure Developer CLI を各環境で利用する方法について説明します。本記事はAzure Developer CLI がGA となる前の記事のため、最新の情報と異なる可能性があるため注意をお願いします。

実施環境

Azure Developer CLI

0.5.0-beta.3

Azure Developer CLI とは

Azure Developer CLI はコマンド操作でテンプレートからAzure の開発に必要な各種環境のファイルを作成できるツールです。Azure Developer CLI を使用することで、開発に必要な各種環境のベースを素早く作成でき、開発効率を向上させることができます。Azure Developer CLI は2023/1/27 現在、プレビュー機能となっております。

Azure Developer CLI はGo 言語で開発されているツールです。コードの内容につきましては、以下GitHub を参照してください。

azure-dev

Azure Developer CLI で作成できるもの

Azure Developer CLI は事前に用意されたazd テンプレートを使用して環境を構築します。azd テンプレートには以下の内容が含まれます。

  • サンプルアプリケーションのコード
  • Azure リソースのプロビジョニング用のBicep またはTerraform ファイル
  • GitHub Actions またはAzure Pipeline のCI/CD ファイル
  • ローカル開発用のDev Container 設定ファイル
  • モニタリング用の共有ダッシュボード
  • Azure Developer CLI の設定ファイル

実行環境

現在、Azure Developer CLI を実行できる環境は以下の通りです。

  • ベアメタル (ローカルPC に直接インストール)
  • Visual Studio Code 拡張機能
  • Dev Containers
  • GitHub Codespaces

サポートされているAzure コンピューティングサービス

現在、Azure Developer CLI のテンプレートでサポートしているコンピューティングサービスは以下の通りです。

  • Azure App Service
  • Azure Functions
  • Azure Container Apps
  • Azure Static Web Apps

サポートされているプログラム言語

現在、Azure Developer CLI でサポートされているプログラム言語は以下の通りです。

  • Node.js
  • Python
  • .NET
  • Java

ベアメタル環境 (ローカルPC 上)でAzure Developer CLI をインストール、実行する

前提条件

ベアメタル環境(ローカルPC 上)でAzure Developer CLI を利用するには、以下ソフトウェアが必要となります。インストールされていない場合はリンク先よりインストールしてください。

Windows OS

Windows OS の場合、PowerShell よりAzure Developer CLI をインストールできます。アンインストール時もPowerShell よりアンインストールできます。

# Azure Developer CLIをインストールする
powershell -ex AllSigned -c "Invoke-RestMethod 'https://aka.ms/install-azd.ps1' | Invoke-Expression"

# Azure Developer CLIをアンインストールする
powershell -ex AllSigned -c "Invoke-RestMethod 'https://aka.ms/uninstall-azd.ps1' | Invoke-Expression"

インストール完了後、ターミナルの再起動を求められるため、ターミナルを再起動します。再起動後にバージョン確認のコマンドを実行しバージョンが表示されることを確認します。

# Azure Developer CLIのバージョンを確認する
azd version

macOS/Linux

macOS ではcurl コマンドを使用しインストールできます。アンインストール時もcurl コマンドを使用しアンインストールします。バージョンを確認し、Azure Developer CLI のバージョンが表示されることを確認します。

# Azure Developer CLIをインストールする
curl -fsSL https://aka.ms/install-azd.sh | bash

# Azure Developer CLIをアンインストールする
curl -fsSL https://aka.ms/uninstall-azd.sh | bash

# Azure Developer CLIのバージョンを確認する
azd version

ベアメタル環境の動作確認

Azure Developer CLI を使用するためには、初めにAzure へのログインが必要となります。Azure のアカウントにログインするには、以下コマンドを実行しブラウザからAzure のアカウントを選択します。ログイン後、サンプルのNode.js テンプレートを使用します。azd テンプレートは実行したパスにテンプレートを作成するため、特定のディレクトリにテンプレートを作成したい場合は事前にディレクトリを作成後、指定したパスに移動しコマンドを実行してください。

# Azure Developer CLIでAzure CLIの認証情報を使うように変更しAzureにログインする
# 以下Issueの回避策としてコマンドを実施
# https://github.com/Azure/azure-dev/issues/1430
azd config set auth.useAzCliAuth true
az login --tenant <テナントID>
azd config unset defaults.subscription

# Node.jsのTodoサンプルをデプロイする
azd up --template todo-node-js-mongo

「azd up --template todo-node-js-mongo」実行後、以下内容を問われるため入力します。

環境名

azd で使用するリソースグループのプレフィックス

Azure Subscription

使用するサブスクリプション

Location

使用するリージョン

azd up コマンドは、アプリケーションの初期化、プロビジョニング、デプロイまでを一括するため、実行後20分程度時間がかかります。デプロイ後、「rg-<入力したプレフィックス>」のリソースグループが作成されるため、以下リソースが作成されたことを確認します。

  • App Service (Web アプリ用)
  • App Service (API 用)
  • Application Insights
  • Cosmos DB
  • 共有ダッシュボード
  • Azure Key Vault
  • Log Analytics ワークスペース
  • App Service プラン

リソースグループ確認後、App Service のWeb アプリからURL に接続しToDo アプリが表示されることを確認します。

また、テンプレートを実行すると共有ダッシュボードも同時に作成されます。アプリケーションのモニタリングを行うため便利です。

作成したリソースをクリーンアップするには以下コマンドを実行します。

# azdテンプレートのリソースをクリーンアップする
azd down

Visual Studio Code の拡張機能を使用してAzure Developer CLI を使用する

Azure Developer CLI はVisual Studio Code の拡張機能にもあります。

Azure Developer CLI

拡張機能をインストールすると、Visual Studio Code 上でAzure Developer CLI を使用できます。インストール後、コマンドパレットから「Azure Developer: XX」を選択すると、各種azd コマンドと同じ内容が実行されます。以下画面では、「Azure Developer: up ~」を選択肢ベアメタル環境のテンプレート取得とプロビジョニング、デプロイを実行しています。

Dev Container からAzure Developer CLI を使用する

azd テンプレートを取得すると、「.devcontainer」ディレクトリ配下にAzure Developer CLI 用のDev Containers 設定ファイルとDockerfile が自動的に作成されます。Visual Studio Code の拡張機能「Dev Containers」を使用し、「.devcontainer」の設定ファイルを基にDev Container を起動すると、コンテナ内でAzure Developer CLI の操作ができます。

ただ、Azure Developer CLI のテンプレートでは、Azure CLI がインストールされていません。そのため、Dev Container 内でAuzre CLI のログインを実行する場合はdevcontainer.json に以下内容を追記しAzure CLI をインストールします。

{
  "name": "Azure Developer CLI",
  "build": {
    "dockerfile": "Dockerfile",
    "args": {
      "VARIANT": "bullseye"
    }
  },
  "features": {
    <省略>
    "ghcr.io/devcontainers/features/azure-cli:1": {}
  },

以下画像はVisual Studio Code の拡張機能を使用し、Dev Container 内からAzure Developer CLI で実行したものとなります。

GitHub Codespaces でazd テンプレートを実行する

2023/1/11 のMicrosoft のDevBlogs にてAzure Developer CLI がGitHub Codespaces で利用可能となったとありました。

Azure Developer CLI (`azd`) – January 2023 Release

内容を見る限り、「.devcontainer」内のDockerfile にAzure Developer CLI をインストールする内容に修正されたため、GitHub Codespaces を使用する際に修正したとのことです。

GitHub Codespaces で使用するには以下の2つの方法があります。

  • Codespaces のテンプレートにAzure Developer CLI をインストールするかVisual Studio Code の拡張機能をインストールし、azd コマンドを使用する。
  • ローカル上でazd テンプレートを作成しGitHub のリポジトリにPush 後、リポジトリからCodespaces を起動する。

Codespaces テンプレートにAzure Developer CLI をインストールする場合、インスタンス上でコマンドを実行するかVisual Studio Code の拡張機能を追加することで、Azure Developer CLI のコマンドを使用することができます。また、事前に「azd init」で作成したテンプレートをGitHub 上にPush し、リポジトリからGitHub Codespaces を起動することで、Azure Developer CLI が導入されたインスタンスを作成することができます。以下画面では、GitHub Codespaces のコマンドを実行しています。

まとめ

  • Azure Developer CLI を使用することで、開発に必要な各種環境のベースを作成できる。
  • azd コマンドでAzure リソースのプロビジョニング、アプリケーションのデプロイなどを行うことができる。
  • Azure Developer CLI はベアメタル環境、Visual Studio Code、Dev Container、GitHub Codespaces で使用できる。

参考資料