次の方法で共有


配置グループのエージェントをプロビジョニングする

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

デプロイ グループは、Azure Pipelines のクラシック リリース パイプラインのデプロイ ターゲット マシンの論理グループです。 展開グループ内のすべてのターゲット サーバーには、デプロイ エージェントがインストールされている必要があります。 この記事では、デプロイ グループ内の各物理マシンまたは仮想マシン (VM) にデプロイ エージェントをインストールしてプロビジョニングする方法について説明します。

次のいずれかの方法で、ターゲット コンピューターにエージェントをインストールできます。

  • デプロイ グループの作成時に生成されるスクリプトを実行します。
  • Azure Pipelines Agent Azure VM 拡張機能を VM にインストールします。
  • リリース パイプラインの AzureResourceGroupDeploymentV2 タスク を使用して、デプロイ グループを作成し、エージェントを動的にプロビジョニングします。

次のセクションでは、各メソッドを実装する手順について説明します。

前提条件

ターゲット サーバーでインストール スクリプトを実行する

デプロイ グループを作成すると、各ターゲット コンピューターで実行してサーバーを登録し、エージェントをインストールできるスクリプトが生成されます。 生成された登録スクリプトを使用してエージェントをインストールするには:

  1. Azure DevOps プロジェクトから、 Pipelines>Deployment グループを選択します。

  2. 展開グループ画面で、New を選択するか、展開グループの追加を選択しますこのデプロイ グループがプロジェクトの最初のグループである場合は選択します。

  3. Deployment グループ名オプションの Description を入力し、Create を選択します。

  4. 次の画面で、 Windows または Linux を選択して、登録するターゲットの Type。 登録スクリプトが生成されます。

  5. [認証用にスクリプト内の個人用アクセス トークンを使用する] を選択します。 詳細については、「個人用アクセス トークンの使用」を参照してください。

  6. [スクリプトをクリップボードにコピー] を選びます。

  7. 各ターゲット コンピューターで、管理アクセス許可を持つアカウントを使用してサインインします。

  8. コピーしたスクリプトを実行してマシンを登録し、エージェントをインストールします。 Windows マシンの場合は、管理者特権の PowerShell コマンド プロンプトを使用します。

    スクリプトが実行されると、次のようになります。

    Note

    セキュリティで保護されたチャネルを作成できなかったスクリプトの実行時にエラーが発生した場合は、管理者 PowerShell プロンプトで次のコマンドを実行します。

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

各ターゲット サーバーを設定した後、スクリプトはメッセージ Service vstsagent.{organization-name}.{computer-name} started successfullyを返します。

[Azure Pipelines Deployment groups] ページの [Targets タブで、エージェントが実行されていることを確認できます。 必要に応じてページを更新します。

Azure Pipelines エージェント Azure VM 拡張機能をインストールする

デプロイ マシンとして Azure VM を使用する場合は、各 VM に Azure Pipelines Agent 拡張機能をインストールできます。 拡張機能は、Azure DevOps プロジェクト内の指定されたデプロイ グループにエージェントを自動的に登録します。

拡張機能を使用してエージェントをインストールするには、まずデプロイ グループを作成します。

  1. Azure DevOps プロジェクトから、 Pipelines>Deployment グループを選択します。
  2. 展開グループ画面で、New を選択するか、展開グループの追加を選択しますこのデプロイ グループがプロジェクトの最初のグループである場合は選択します。
  3. Deployment グループ名オプションの Description を入力し、Create を選択します。

Azure ポータルで各ターゲット VM に Azure Pipelines Agent 拡張機能をインストールします。

  1. VM ページで、左側のナビゲーションで Settings>Extensions + Applications を選択します。

  2. [ Extension タブで、 Add を選択します。

  3. 拡張機能のインストール ページで、Azure Pipelines Agent を検索して選択し、Next を選択します。

    Azure Pipelines Agent 拡張機能の選択を示すスクリーンショット。

  4. Azure Pipelines Agent 拡張機能の構成画面で、次の情報を指定します。

    • Azure DevOps 組織の URL: https://dev.azure.com/contosoなど、Azure DevOps 組織の URL を入力します。
    • チーム プロジェクト: プロジェクト名 ( myProject などを入力します。
    • 展開グループ: 作成した展開グループの名前を入力します。
    • エージェント名: 必要に応じて、エージェントの名前を入力します。 何も入力しない場合、エージェントには VM 名に -DG が付加されます。
    • 個人用アクセス トークン: Azure Pipelines への認証に使用する 個人用アクセス トークン (PAT) を入力します。
    • タグ: 必要に応じて、エージェントで構成するタグのコンマ区切りのリストを指定します。 タグはそれぞれ 256 文字に制限され、大文字と小文字は区別されず、使用できるタグの数に制限はありません。
  5. [確認および作成] を選択し、検証に成功したら [作成] を選択します。

AzureResourceGroupDeploymentV2 タスクを使用する

AzureResourceGroupDeploymentV2 タスクを使用して、Azure Resource Manager (ARM) テンプレートをデプロイできます。 テンプレートは、Azure VM の作成時に Azure Pipelines Agent 拡張機能をインストールすることも、VM の作成後に拡張機能を適用するようにリソース グループを更新することもできます。

または、AzureResourceGroupDeployment タスクの高度なデプロイ オプションを使用して、エージェントをデプロイすることもできます。

配置グループを作成する

まず、デプロイ グループを作成します。

  1. Azure DevOps プロジェクトから、 Pipelines>Deployment グループを選択します。
  2. 展開グループ画面で、New を選択するか、展開グループの追加を選択しますこのデプロイ グループがプロジェクトの最初のグループである場合は選択します。
  3. Deployment グループ名オプションの Description を入力し、Create を選択します。

ARM テンプレートを使用してエージェントをインストールする

ARM テンプレートは、Azure リソースのセットを宣言的に定義する JSON ファイルです。 Azure は自動的にテンプレートを読み取り、リソースをプロビジョニングします。 複数のサービスとその依存関係を 1 つのテンプレートにデプロイできます。

ARM テンプレートを使用してデプロイ エージェントを登録してインストールするには、次のコードに示すように、 Microsoft.Compute/virtualMachine リソースの下に resources 要素を追加します。

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|2|3",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Note

Linux VM の場合、コード内のpropertiestype パラメーターをTeamServicesAgentLinuxする必要があります。

Note

Azure DevOps Server 2022.1 以降では、AgentMajorVersion に使用できる値は auto|2|3 です。 Azure DevOps Server 2022.0 以前では、 AgentMajorVersion の許容値は auto|N

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|N",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

上のコードでは以下の操作が行われます。

  • VSTSAccountName は、使用するために必要な Azure Pipelines 組織です。 たとえば、Azure DevOps URL が https://dev.azure.com/contosoされている場合は、次のように指定します。 contoso
  • TeamProject は、展開グループが定義されている必要なプロジェクトです。
  • DeploymentGroup は、エージェントの登録に必要なデプロイ グループです。
  • AgentName はオプションのエージェント名です。 指定しない場合、エージェントには VM 名 -DG 追加されます。
  • Tags は、エージェントに設定するタグの省略可能なコンマ区切りの一覧です。 タグはそれぞれ 256 文字に制限され、大文字と小文字は区別されず、使用できるタグの数に制限はありません。
  • PATToken は、エージェントをダウンロードして構成するために Azure Pipelines に対して認証するために必要な PAT です。

ARM テンプレートの詳細については、Azure Resource Manager テンプレートでのリソース定義に関する記事を参照してください。

リリース パイプラインでテンプレートを使用する

リリース パイプラインを作成します。

  1. 左側のメニューから Pipelines>Releases を選択し、 New>New リリース パイプラインを選択します。
  2. Azure PipelinesReleases タブで、ARM テンプレートのデプロイ タスクを含むステージを含むリリース パイプラインを作成します。
  3. このテンプレートではタスクのバージョン 2 が使用されるため、 Azure リソース グループのデプロイ 設定画面で、 Task のバージョン3.* から 2.* に変更します。
  4. タスクに必要なパラメーター (Azure サブスクリプション、リソース グループ名、場所、テンプレート情報、実行するアクションなど) を指定します。
  5. リリース パイプラインを保存し、パイプラインからリリースを作成してエージェントをインストールします。

高度なデプロイ オプションを使用してエージェントをインストールする

または、高度なデプロイ オプションを使用してエージェントをインストールすることもできます。 上記の手順に従いますが、 Azure リソース グループのデプロイ 設定画面で、仮想マシンの Advanced デプロイ オプション セクションを展開します。

  1. 可能な前提条件で、展開グループ エージェントを使用した構成を選択します。

  2. 次の必須パラメーターと設定を指定します。

    • Azure Pipelines サービス接続: ターゲットを指す既存のサービス接続を選択します。

      既存のサービス接続がない場合は、 New を選択して作成します。 詳細については、「 サービス接続の作成」を参照してください。 スコープが Deployment Group に制限されたPATを使用するようにサービス接続を構成します。

    • チーム プロジェクト: 展開グループを含むプロジェクトを選択します。

    • 展開グループ: エージェントを登録する展開グループを選択します。

    • Copy Azure VM タグをエージェントにコピーします Azure VM に既に構成されているタグを、対応するデプロイ グループ エージェントにコピーします。

      既定では、Azure タグはすべて、Role: WebなどのKey: Value形式を使用してコピーされます。

  3. パイプラインを保存し、エージェントをインストールするリリースを作成します。

拡張機能のトラブルシューティング

Azure Pipelines Agent 拡張機能には、いくつかの既知の問題があります。

状態ファイルが大きすぎます

この問題は、Windows VM で発生する可能性があります。 状態ファイルには、拡張機能の現在の状態を記述する JSON オブジェクトが含まれています。 オブジェクトは、これまでに実行された操作を一覧表示するためのプレースホルダーです。

Azure ではこの状態ファイルを読み取り、状態オブジェクトを API 要求への応答として渡します。 このファイルには、最大許容サイズがあります。 サイズが最大値を超えた場合、Azure はそれを完全に読み取ることができず、状態に関するエラーが発生します。

拡張機能が最初にインストールされる場合でも、マシンが再起動するたびに、状態ファイルに追加される操作が実行されます。 マシンが何度も再起動すると、状態ファイルのサイズがしきい値を超える可能性があります。エラー Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes。 拡張機能のインストールは成功する可能性がありますが、このエラーによって拡張機能の実際の状態が非表示になります。

このマシンの再起動の問題は、Windows 拡張機能のバージョン 1.27.0.2 と Linux 拡張機能の 1.21.0.1 以降で修正されています。 再起動によってステータス ファイルに何も追加されません。 ただし、以前のバージョンの拡張機能でこの問題が発生し、拡張機能が固定バージョンに自動更新された場合、問題は解決しない可能性があります。 新しいバージョンの拡張機能は、以前の状態ファイルでも動作します。

この問題は、フラグ付きの拡張機能の以前のバージョンを使用してマイナー バージョンの自動更新を無効にしている場合、または大きなステータス ファイルが以前のバージョンから固定バージョンに転送された場合に発生する可能性があります。 その場合は、拡張機能をアンインストールして再インストールすることで、問題を解決できます。 拡張機能をアンインストールすると、拡張機能ディレクトリ全体がクリーンアップされ、最新バージョンの新しいインストール用の新しいステータス ファイルが作成されます。

カスタム データの問題

Python 2 は非推奨となり、Azure Pipelines Agent 拡張機能は Python 3 で動作します。 Python 3 が既定でインストールされていない OS バージョンを引き続き使用する場合は、拡張機能を実行するには、VM に Python 3 をインストールするか、既定で Python 3 がインストールされている OS バージョンに切り替える必要があります。 そうしないと、OS のバージョンを切り替えるときに、VM 上の カスタム データ 場所に関する混乱が発生する可能性があります。

Linux VM では、以前のバージョンのエージェントの場合は /var/lib/waagent/ovf-env.xml に、新しいバージョンの場合は /var/lib/waagent/CustomData にカスタム データがコピーされます。 これら 2 つのパスのうちの 1 つだけをハードコーディングすると、OS バージョンを切り替えるときに問題が発生する可能性があります。これは、パスの 1 つが新しい OS バージョンには存在しませんが、もう 1 つのパスは存在するためです。 VM プロビジョニングの中断を回避するには、テンプレートで両方のパスを使用して、1 つが失敗した場合にもう一方が成功するようにすることを検討してください。

ヘルプとサポート