次の方法で共有


デプロイ グループを使用して Azure VM に Web アプリをデプロイする

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

以前のバージョンの Azure Pipelines では、アプリケーションを複数のサーバーにデプロイするには、重要な計画とメンテナンスが必要でした。 Windows PowerShell リモート処理を手動で有効にする必要があり、特定のポートを開く必要があり、展開エージェントを各サーバーにインストールする必要がありました。 ロールアウトデプロイの管理には、手動による介入も必要です。 これらの課題は、 展開グループの導入によって大幅に簡素化されました。

デプロイ グループは、グループ内の各ターゲット サーバーにデプロイ エージェントをインストールし、リリース パイプラインがそれらのサーバー間でアプリケーションを徐々にデプロイできるようにします。 展開用の複数のパイプラインを作成して、アプリケーションの更新を異なるユーザー グループに段階的に配信できます。

デプロイ グループは、クラシック パイプラインで使用されます。 YAML パイプラインを使用している場合は、「 環境」を参照してください。

[前提条件]

製品 必要条件
Azure DevOps - Azure DevOps 組織
- Azure DevOps プロジェクト
Azure DevOps デモ ジェネレーター - デモ ジェネレーターを設定します
- 新しい Azure DevOps プロジェクト を作成し、 DeploymentGroups テンプレート (一覧の番号 15) を選択します。
Azure - Azure サブスクリプション

Azure でリソースを設定する

このセクションでは、ARM テンプレートを使用して Azure リソースを設定する手順について説明します。 IIS が構成された 6 台の仮想マシン (VM) Web サーバー、SQL Server VM (DB サーバー)、Azure Load Balancer、および必要なすべてのネットワーク接続がプロビジョニングされます。

  1. [ Deploy to Azure]\(Azure へのデプロイ \) ボタンを選択して、Azure でのリソースのデプロイを開始します。

  2. 必要な情報を入力し、[ 確認と作成] を選択します。 ユーザー名とパスワードは、このチュートリアルでは再び使用されないため、許可されている任意の組み合わせを使用できます。 グローバル一意性を確保するために、 Env プレフィックス名 がすべてのリソース名に追加されます。 個人またはランダムなものを使用します。 検証または作成時に名前付けの競合が発生した場合は、この値を変更して再デプロイしてみてください。 通常、プロビジョニングには 10 ~ 15 分かかります。

    Azure で Azure リソースを設定する方法を示すスクリーンショット。

  3. 検証が完了したら、[ 作成 ] を選択してリソースをデプロイします。

  4. デプロイが完了したら、Azure portal でリソース グループに移動して、生成されたリソースを確認します。 名前に sqlSrv が含まれる DB サーバー VM を選択して、その詳細を表示します。

    Azure で新しく作成されたリソースを示すスクリーンショット。

  5. 後の手順で必要に応じて DNS をコピーします。

    Azure の DB サーバー VM を示すスクリーンショット。

配置グループを作成する

デプロイ グループはマシンのコレクションであり、それぞれにデプロイ エージェントがインストールされています。 これらのマシンは Azure Pipelines と通信して、アプリケーションのデプロイを調整します。

  1. デモ ジェネレーターを使用して、前に作成した Azure DevOps プロジェクトに移動します。

  2. [ パイプライン>デプロイ グループ] を選択します。

  3. [ デプロイ グループの追加] を選択します

  4. 展開グループ名として「リリース」と入力し、[作成] を選択します。 登録スクリプトが生成されます。 このスクリプトを使用して、ターゲット サーバーを登録し、デプロイ エージェントを手動でインストールできます。 ただし、このチュートリアルでは、ターゲット サーバーがリリース パイプラインの一部として自動的に登録されます。

個人用アクセス トークンを作成する

  1. Azure DevOps プロジェクトから、[ ユーザー設定] アイコンを選択し、[ 個人用アクセス トークン] を選択します。

  2. [ 新しいトークン] を選択し、PAT の名前を入力して、有効期限を選択します。

  3. [スコープ対して定義されたカスタム] を選択し、[すべてのスコープを表示] を選択して、次のスコープを確認します。

    1. プロジェクトとチーム ->読み書き
    2. エージェント プール ->Read > 管理
    3. 展開グループ ->Read > 管理
  4. 完了したら [作成] を選択し、次のセクションで必要に応じて PAT をコピーします。

リリース パイプラインを構成する

クラシック リリース パイプライン テンプレートには、エージェント プール内のエージェントでタスクを実行するエージェント フェーズという 1 つのエージェント ジョブが含まれています。 また、2 つの展開グループ ジョブ ( 展開グループ フェーズIIS 展開フェーズ) も含まれます。 展開グループ ジョブは、展開グループで定義されているマシンでタスクを実行します。 各ジョブを構成するには、次の手順に従います。

エージェント ジョブを構成する

  1. Azure DevOps プロジェクトに移動し、[ Pipelines>Releases] を選択します。

  2. 展開グループ リリース定義を選択し、[編集] を選択します。

  3. [ タスク ] タブを選択して、パイプライン内のデプロイ タスクを表示します。

  4. エージェント フェーズ ステージを選択し、Azure Pipelines プールと Windows 最新の仕様を選択します。

    クラシック リリース パイプラインのエージェント フェーズを示すスクリーンショット。

  5. Azure リソース グループのデプロイ タスクを選択し、前にリソースの作成に使用した Azure サブスクリプションを選択し、[承認] を選択して接続を承認します。 承認されたら、このチュートリアル用に作成した リソース グループ を選択します。

    デプロイ タスクでリソース グループを構成する方法を示すスクリーンショット。

  6. このタスクは Azure の仮想マシンで実行され、デプロイ グループの要件を完了するためにパイプラインに接続できる必要があります。 接続をセキュリティで保護するには、前に作成した個人用アクセス トークン (PAT) を使用してサービス接続を設定する必要があります。 同じタスク内で下にスクロールし、[Azure Pipelines サービス接続] で [新規] を選択します。

  7. [新しいサービス接続] パネルで、Azure DevOps 組織https://dev.azure.com/organizationName入力します。 前に作成した 個人用アクセス トークン を貼り付け、 サービス接続名を指定し、[ すべてのパイプラインにアクセス許可を付与 する] チェック ボックスをオンにします。 完了したら [確認して保存] を選択します。

    デプロイ タスクの新しいサービス接続を構成する方法を示すスクリーンショット。

  8. Azure リソース グループのデプロイ タスクを下にスクロールし、チーム プロジェクトと先ほど作成したデプロイ グループのドロップダウン メニューから選択します。

    展開タスクのチーム プロジェクトと配置グループを構成する方法を示すスクリーンショット。

デプロイ グループ ジョブを構成する

  1. 展開グループリリース定義から、展開グループフェーズジョブを選択します。 このジョブは、デプロイ グループで定義されているマシンでタスクを実行します。 このジョブでは、 SQL-Svr-DB タグを使用して、デプロイ グループ内のターゲットのサブセットにデプロイします。 [ 展開グループ ] ドロップダウンで、先ほど作成した リリース 展開グループを選択します。

    デプロイ グループ フェーズ ジョブを構成する方法を示すスクリーンショット。

  2. IIS 展開フェーズ ジョブを選択します。 このジョブでは、 WebSrv タグを使用して Web アプリケーションを Web サーバーのサブセットにデプロイします。 前に作成した デプロイ グループ をドロップダウンから選択します。

  3. Azure ネットワーク ロード バランサーの切断Azure ネットワーク ロード バランサーの接続タスクは非推奨です。 タスクを右クリックして[タスクの 選択を無効にする]を選択すると、それらを今のところ無効にすることができます。

  4. IIS Web アプリ管理タスクと IIS Web アプリ展開タスクは事前入力されており、変更は必要ありません。

  5. 左上隅の [ 変数 ] タブを選択し、[ パイプライン変数] を選択し、次の値を指定します。 DefaultConnectionString 変数のプレースホルダーを、前にコピーした SQL サーバーの DNS 名に置き換えます。

    変数名 変数値
    データベース名 PartsUnlimited-Dev
    DBPassword xxxxxxxx
    データベースユーザー名 xxxxxxxx
    DefaultConnectionString データ ソース=[YOUR_DNS_NAME]; 初期カタログ=PartsUnlimited-Dev; ユーザーID=xxxxxxxx; パスワード=xxxxxxxx; MultipleActiveResultSets=False; 接続タイムアウト=30;
    サーバー名 localhost
  6. [保存] を選択し、必要に応じてコメントを追加して、[OK] を選択します。

ヒント

DefaultConnectionString 変数をシークレットとして保存する必要があるというエラーが発生した場合は、その値の横にある南京錠アイコンを選択して保護します。

リリースを作成してアプリケーションをデプロイする

リリース定義が構成されて保存されたので、Web アプリを Azure にデプロイするためのリリースの作成に進むことができます。 ただし、リリースを開始する前に、ビルド パイプラインが少なくとも 1 回実行されていることを確認する必要があります。 これにより、デプロイに必要なパイプライン成果物が生成されます。 ビルド パイプラインの前にリリース パイプラインを実行しようとすると、リリース パネルの [成果物 ] セクションが空になります。 次の手順に従ってパイプラインを実行し、パイプライン成果物を生成してから、新しいリリースを作成します。

  1. Azure DevOps プロジェクトから[ パイプライン]、[ デプロイ グループ ] ビルド パイプラインの順に選択します。

  2. [パイプラインの実行] を選択します。 パイプライン実行パネルで、 エージェントの仕様を選択し、[ 実行] を選択します。

    パイプラインの実行を構成する方法を示すスクリーンショット。

  3. パイプラインが正常に完了すると、パイプライン成果物が生成されます。 パイプラインの概要ウィンドウから表示できます。

    生成されたパイプライン成果物を示すスクリーンショット。

  4. 次に、 Pipelines>Release に移動し、リリース定義を選択し、[リリースの 作成 ] を選択してデプロイ パイプラインを開始します。

    新しいリリースを作成する方法を示すスクリーンショット。

  5. 完了したら [作成] を選択し、パイプラインの実行を選択して概要を開きます。 パイプライン が進行中であることがわかります。 ステージをクリックして、詳細なデプロイ ログを表示します。

    リリース パイプラインの概要を示すスクリーンショット。

  6. 概要ウィンドウでは、デプロイの各フェーズの状態を確認できます。

    リリースの概要を示すスクリーンショット。

トラブルシューティング

  • マスター サーバーまたはターゲット サーバーに接続できないか、サーバーとの接続が正常に確立されましたが、ログイン プロセス中にエラーが発生しました。

Sql Dacpac Deployment On Machine Group タスクの実行中にこれらのエラーのいずれかが発生した場合は、次の手順に従います。

  1. データベースを確認します。

リソースのデプロイ中にデータベースが正常に作成されたことを確認します。 これは、Azure CLI または sqlcmd を使用して確認できます。

sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"

データベースが一覧に存在しない場合は、次のコマンドを使用して新しいデータベースを作成できます。

sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
  1. SQL Server 認証を確認します。

SQL Server 認証が有効になっていることを確認します。SQL Server は、SQL 認証と Windows 認証 (混合モード) の両方を許可するように構成する必要があります。 これを有効にするには、

a. SSMS または sqlcmd を使用して接続する

b。 次のクエリを実行します。

EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE',
    N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
    N'LoginMode',
    REG_DWORD,
    2;

c. 変更を有効にするには、SQL Server サービスを再起動します。

net stop MSSQLSERVER
net start MSSQLSERVER
  • エージェントが VM で実行されている場合でも、一部のエージェントがオフラインになっている

1 つ以上のエージェントがオフラインとして表示されている場合は、いくつかのことを試すことができます。 まず、エージェントが実行されている VM にログインし、次のコマンドを実行して、VM が同じ IP セットに解決されているかどうかを確認します。

nslookup dev.azure.com

すべての VM が同じ IP セットに解決される場合は、ロード バランサーが正しい送信規則で構成されていることを確認します。 Azure のロード バランサーにバックエンド プールを追加し、VM の NIC をバックエンド プールに追加し、それをロード バランサーの送信規則に関連付けることができます。 これを行うには:

  1. Azure に移動し、ロード バランサーを見つけます。

  2. [ バックエンド プール] を選択し、既存のプールを選択するか、新しいプールを作成して、 IP 構成の下に Web サーバーを追加します。

  3. [負荷分散規則] に移動し、負荷分散規則を選択し、[バックエンド プール] ドロップダウンからバックエンド プールを選択します。

リソースをクリーンアップする

このチュートリアルでは、Azure DevOps プロジェクトを作成し、Azure にリソースをデプロイしました。 不要になった場合は、次の手順に従ってクリーンアップします。

  1. Azure DevOps プロジェクトを削除します。 プロジェクト設定>Overview>Delete に移動します。

  2. Azure リソース グループを削除します。このチュートリアル中に作成されたすべての Azure リソースは、同じリソース グループに配置されました。 リソース グループを削除すると、関連付けられているすべてのリソースが削除されます。 これを行うには、Azure portal または CLI を使用します。

  • Azure CLI

    az group delete --name <RESOURCE_GROUP_NAME> --yes --no-wait
    
  • Azure Portal

  1. Azure portal >Resource グループに移動します。

  2. チュートリアルで使用したリソース グループを選択します。

  3. [ リソース グループの削除] を選択し、名前を確認して、[削除] を選択 します