Azure DevOps パイプラインでセルフホステッドエージェントを実行する方法

Azure DevOps パイプラインでセルフホステッドエージェントを実行する方法

  • ITOps・DevOps
9分で読めます 更新日 Dec 10, 2024

ポイント: Azure DevOpsのセルフホステッドエージェントは、コスト削減とビルドおよびリリース環境の構成における柔軟性を提供し、重要な利点があります。このガイドでは、WindowsとLinuxでのセルフホステッドエージェントをセットアップする手順を概説し、前提条件、インストール、およびPersonal Access Tokenを介した構成をカバーします。

  • セルフホステッドエージェントは、より低コストでビルドのための無制限の分を提供します。
  • 構成手順には、前提条件の設定、Personal Access Tokenの作成、および希望するオペレーティングシステムへのエージェントのインストールが含まれます。

Microsoft Azure DevOps

Microsoft Azure(略してAzure)は、仮想化されたインフラストラクチャからデータウェアハウス、機械学習、AIプラットフォームに至るまで、IaaS、PaaS、SaaSサービスを網羅するMicrosoftのクラウドサービスプラットフォームです。Azure DevOpsサービスは、このようなSaaSオファリングの1つで、次のような完全なDevOpsプラットフォームを提供します:

  • Azure Boards(プロジェクトの計画と管理)
  • Azure Pipelines(CI/CDパイプライン)
  • Azure Repos(クラウドホストされたプライベートGitリポジトリ)
  • Azure Test Plans(手動および探索的テストツール)
  • Azure Artifacts(アーティファクトストレージ)

これらのプラットフォームは、サードパーティツールやプラットフォームを統合し、機能を拡張するための膨大なコレクションの拡張機能によって強化されています。CI/CDパイプラインは、Azure Pipelinesサービスによって提供されるソフトウェア開発プロセスを支えるコアコンポーネントの1つです。Azure Pipelinesは、CI/CDジョブを実行するためにMicrosoftホストのエージェントまたはセルフホステッドエージェントを使用するオプションを提供します。この記事では、パイプラインで使用するためのセルフホステッドAzureエージェントを構成する方法を見ていきます。(Azure DevOps初心者ですか?初心者ガイドから始めましょう。)

Azure DevOpsでのセルフホステッドエージェント使用の利点

Azure DevOpsはクラウドベースのサービスであるため、セルフホステッドエージェントを使用するのは少し奇妙に思えるかもしれませんが、セルフホステッドエージェントを選択することにはいくつかの重要な利点があります。1つの理由はコストです。Microsoftは次のようなサービスを提供しています:

  • 1,800分の無料のMicrosoftホストジョブ
  • 無制限の分のセルフホステッドジョブ

小規模開発には十分ですが、ほとんどのユーザーは複数の同時ビルドとリリースを実行するためのフレキシビリティが必要です。この記事執筆時点で、Microsoftホストのエージェントは1エージェントあたり40ドルで、セルフホステッドエージェントは15ドルです。どちらも無制限の分を提供します。セルフホステッドオプションは、スケールアップが必要な場合にコスト削減を提供します。たとえ管理オーバーヘッドコストが追加されてもです。セルフホスティングを選択する2つ目の理由はカスタマイズの自由度です。サポートされている任意のオペレーティングシステム(Windows、Linux、macOSを含む)でエージェントを実行する自由があります。MicrosoftホストのAzureエージェントでは特定のイメージタイプを選択できますが、Microsoftから提供されているものに制限されています。エージェントを構成する柔軟性があり、リソース使用量を最大化するために単一のホスト上で複数のエージェントを実行できます。

Azure DevOpsのセルフホステッドエージェントの設定

Azureのセルフホステッドエージェントを設定して実行するのは比較的簡単なプロセスで、主な要件は指定されたオペレーティングシステムと基盤となるアーキテクチャに適したエージェントを実行することです。このセクションでは、WindowsとLinux VMでエージェントを実行する方法を見ていきます。

Azure DevOpsでのセルフホステッドエージェント設定の手順

前提条件、ハードウェアとアカウント権限を確認

セットアッププロセスを開始する前に、マシンが準備できていることを確認してください。次の前提条件が必要です:

  • 適切なオペレーティングシステムとバージョン:
    • クライアントOS
      • Windows 7 SP1 ESU
      • Windows 8.1
      • Windows 10
      • Windows 11
    • サーバーOS
      • Windows Server 2012以降
  • PowerShell 3.0以降。Subversionリポジトリからビルドしている場合は、マシンにSubversionクライアントをインストールする必要があります。
  • Visual Studioビルドツール(2015年以降)のインストールも推奨します。
  • .NETについて心配する必要はありません。エージェントソフトウェアがセットアッププロセスの一部として独自のバージョンをインストールします。
  • 使用するハードウェアは、チームの規模とニーズに依存します。ほとんどのAzure DevOpsコードは、各々が4つのセルフホステッドエージェントを実行している24コアのサーバークラスマシンで構築されています。

個人用アクセストークン(PAT)の作成

エージェントを設定する前の最初のステップは、エージェントをAzureパイプラインに接続するために使用される個人用アクセストークンを作成することです。ステップ1。 Azure DevOps組織にログインし、ユーザー設定を開いて「個人用アクセストークン」を選択します。

azure-devops-organization

ターミナルウィンドウを開き、ダウンロードしたファイルを含むフォルダーにディレクトリを変更します。内容を表示するためにファイルを展開します。まず、対話型構成ジェネレータースクリプトを使用してエージェント構成ファイルを生成する必要があります。ステップ2。 個人用アクセストークンの画面で、「新しいトークン」をクリックしてトークンを作成します。

personal-access-tokens-screen

ステップ 3. 名前、有効期限、および必要な権限を提供し、作成をクリックしてPATを作成します。

Azure DevOpsのセルフホステッドエージェント用の新しいPAT

注: すべての正しい権限が付与されていることを確認してください。そうでない場合、接続を初期化することができません。必要に応じて、エージェントにAzure DevOpsへの完全アクセスを設定できます。

Azure DevOpsへのフルアクセス

ステップ 4. トークンが生成されたら、安全に保管してください。後でアクセスすることはできません。

成功画面

セルフホステッドエージェントのインストールと構成

トークンを作成したので、エージェントの設定に進むことができます。エージェントの構成は、Azure DevOpsダッシュボードの組織設定内のパイプラインエージェントプールセクションから取得できます。

エージェント構成手順の取得

ステップ 1. 組織設定に移動し、パイプラインセクションからエージェントプールを選択します。

パイプライン

ステップ 2. デフォルトエージェントプールを選択します。(必要に応じて、他の利用可能なプールにエージェントを選択するか、新しいプールを作成してエージェントを追加します。)

エージェントプール

ステップ 3. 新しいエージェントオプションをクリックして、エージェントのインストール手順を取得します。

新しいエージェントオプション

ステップ 4. 希望のオペレーティングシステムとシステムアーキテクチャを選択し、提供された手順に従います。

システムの前提条件

Azure用のセルフホステッドエージェントのWindowsインストール

Windows 10のX64アーキテクチャにAzureエージェントをインストールする方法を見てみましょう。Microsoftの公式Windowsエージェントガイドを参照して、前提条件と仕様の完全なリストを確認してください。ステップ 1. エージェントをダウンロードします。(zipファイルとしてダウンロードされます。)

    Invoke-WebRequest -Uri https://vstsagentpackage.azureedge.net/agent/2.195.1/vsts-agent-win-x64-2.195.1.zip -OutFile vsts-agent-win-x64-2.195.1.zip
Azureパイプライン用のセルフホステッドエージェントをダウンロードする

ステップ2。 ダウンロードしたエージェントを目的の場所に抽出します。エージェントはCドライブのルートにあるagentsという名前のフォルダーに抽出することをお勧めします(C:agents)。

    # Create directory and navigate to the directory
New-Item -Path "C:" -Name "agents" -ItemType "directory"
Set-Location -Path "C:agents"

# Extract the downloaded zip file
Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("C:vsts-agent-win-x64-2.195.1.zip", "$PWD")

# Verify the extraction
Get-ChildItem
directory

ステップ3。 次のコマンドを実行してエージェント構成を開始します。(昇格されたPowerShellプロンプトを使用することをお勧めします。)

    .config.cmd
Azure用のセルフホステッドエージェントを構成するためのコマンド

構成の詳細を入力する必要があります。具体的には、以下の情報が必要です:

  • サーバーURL(Azure組織のURL)
  • 認証タイプ(ここでは、以前に作成した認証トークンを使用しています)
  • エージェントの詳細(エージェントプールとエージェント名を含む)

最後に、エージェントをWindowsサービスとして構成するかどうかを指定します。Windowsのサービスセクション(services.msc)に移動することで、構成されたAzure Pipelinesエージェントを見ることができます。

services-section

ステップ4。 組織設定のエージェントプールに戻り、新しく構成されたエージェントがエージェントタブのデフォルトプールに表示されていることを確認します。

デフォルトプール

AzureのセルフホステッドエージェントのLinuxインストール

Linuxでのパイプラインエージェントのインストールと構成はWindowsに似ています。したがって、このセクションでは、Ubuntu環境でエージェントをインストールする方法を見ていきます。完全な構成の詳細は、Microsoftのドキュメントにあります。ステップ1。 エージェントをダウンロードします

    wget https://vstsagentpackage.azureedge.net/agent/2.195.1/vsts-agent-linux-x64-2.195.1.tar.gz
ubuntu環境でのダウンロード

ステップ2。 フォルダーを作成し、ダウンロードしたtar.gzファイルを抽出します。

    # Create directory and navigate to the directory
mkdir agent
cd agent

# Extract the downloaded zip file
tar zxf ~/Downloads/vsts-agent-linux-x64-2.195.1.tar.gz

# Verify the extraction
ls
ディレクトリの作成

ステップ3。 次のコマンドを実行してエージェント構成を開始します。

    ./config.sh
AzureでのセルフホステッドエージェントのLinux構成

Windows構成と同様に、ユーザーはサーバーの詳細、認証タイプ、以前に作成した認証トークンを入力するよう求められます。その後、エージェントの詳細を構成し、最後にrun.shスクリプトを実行することでエージェントを開始できます。ステップ4(オプション)。 エージェントをシステムサービスとして実行するようにsvc.shスクリプトを使用して構成できます。ユーザーを指定し、インストールコマンドを使用してサービスを構成します。

    sudo ./svc.sh install ubuntu
sudo ./svc.sh start
svc

ステップ5。 組織設定のエージェントプールに戻り、エージェントタブのデフォルトプールに移動して、新しいUbuntuエージェントがセルフホステッドエージェントとして追加されていることを確認します。

エージェントのデフォルトプール

セルフホステッドエージェントをDockerで実行する

エージェントをコンテナとして実行することは、エージェントを実行するための別のオプションです。WindowsとLinuxの両方がコンテナホストとしてサポートされています。次のセクションでは、Azureパイプラインエージェントを使用してコンテナイメージを作成し、そのイメージをコンテナとして起動する方法を見ていきます。Windows環境のDocker Desktopを使用して、Linux(Ubuntu)ベースのエージェントコンテナを作成します。ステップ 1. dockeragentという名前のフォルダーを作成し、そのフォルダー内に必要な構成でubuntu:18.04をベースイメージとするDockerfileを作成します。(構成はMicrosoftのドキュメントで入手できます。)

    FROM ubuntu:18.04
 
# To make it easier for build and release pipelines to run apt-get,
# configure apt to not require confirmation (assume the -y argument by default)
ENV DEBIAN_FRONTEND=noninteractive
    RUN echo "APT::Get::Assume-Yes "true";" > /etc/apt/apt.conf.d/90assumeyes
 
RUN apt-get update && apt-get install -y --no-install-recommends 
ca-certificates 
curl 
jq 
git 
iputils-ping 
libcurl4 
libicu60 
libunwind8 
netcat 
libssl1.0 
&& rm -rf /var/lib/apt/lists/*
 
RUN curl -LsS https://aka.ms/InstallAzureCLIDeb | bash 
&& rm -rf /var/lib/apt/lists/*
 
ARG TARGETARCH=amd64¬¬
ARG AGENT_VERSION=2.194.0
 
WORKDIR /azp
RUN if [ "$TARGETARCH" = "amd64" ]; then 
AZP_AGENTPACKAGE_URL=https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz; 
else 
AZP_AGENTPACKAGE_URL=https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-${TARGETARCH}-${AGENT_VERSION}.tar.gz; 
fi; 
curl -Ls¬S "$AZP_AGENTPACKAGE_URL" | tar -xz
 
COPY ./start.sh .
RUN chmod +x start.sh
 
ENTRYPOINT [ "./start.sh" ]

ステップ 2. スタートアップスクリプト(start.sh)を作成し、同じフォルダー内に配置します。行末がUnixスタイル(LF)の行末として構成されていることを確認してください。

    fi
 
AZP_TOKEN_FILE=/azp/.token
echo -n $AZP_TOKEN > "$AZP_TOKEN_FILE"
fi

unset AZP_TOKEN
 
if [ -n "$AZP_WORK" ]; then
mkdir -p "$AZP_WORK"
    fi
 
export AGENT_ALLOW_RUNASROOT="1"
 
cleanup() {
if [ -e config.sh ]; then
print_header "Cleanup. Removing Azure Pipelines agent..."
 
# If the agent has some running jobs, the configuration removal process will fail.
# So, give it some time to finish the job.
while true; do
./config.sh remove --unattended --auth PAT --token $(cat "$AZP_TOKEN_FILE") && break
 
echo "Retrying in 30 seconds..."
sleep 30
done
fi
}
 
print_header() {¬
lightcyan='�33[1;36m'
nocolor='�33[0m'
echo -e "${lightcyan}$1${nocolor}"
}
 
# Let the agent ignore the token env variables
export VSO_AGENT_IGNORE=AZP_TOKEN,AZP_TOKEN_FILE
 
source ./env.sh
 
print_header "1. Configuring Azure Pipelines agent..."
 
./config.sh --unattended 
--agent "${AZP_AGENT_NAME:-$(hostname)}" 
--url "$AZP_URL" 
--auth PAT 
--token $(cat "$AZP_TOKEN_FILE") 
--pool "${AZP_POOL:-Default}" 
--work "${AZP_WORK:-_work}" 
--replace 
--acceptTeeEula & wait $!
 
print_header "2. Running Azure Pipelines agent..."
 
trap 'cleanup; exit 0' EXIT
trap 'cleanup; exit 130' INT
trap 'cleanup; exit 143' TERM
 
# To be aware of TERM and INT signals call run.sh
    # Running it with the --once flag at the end will shut down the agent after the build is executed
./run.sh "$@" & wait $!

ステップ 3. dockeragentフォルダー内で次のコマンドを実行してイメージをビルドします。

    docker build -t dockeragent:latest .
docker-agent-latest

ステップ 4. 新しく作成したdockerイメージでdocker runコマンドを使用してコンテナを作成します。コンテナを作成する際に環境変数を渡すことができます。この場合、サーバーURL(AZP_URL)、PATトークン(AZP_TOKEN)、およびエージェント名(AZP_AGENT_NAME)を変数として渡します。

    docker run -e AZP_URL=https://dev.azure.com/ -e AZP_TOKEN= -e AZP_AGENT_NAME=docker-agent-01 dockeragent:latest
azure-pipelines-docker

ステップ 5. Azure DevOpsダッシュボードのデフォルトエージェントプールを見て、コンテナがエージェントとして追加されたかどうかを確認できます。

default-pool-agent

Azure DevOpsのセルフホステッドエージェント

Azure DevOpsパイプラインのセルフホステッドエージェントは、コスト削減と、サポートされている任意の環境でビルドおよびリリースエージェントを構成・実行するための柔軟性を提供します。これらのパイプラインエージェントは、ベアメタルサーバーからVM、さらにはコンテナとして実行されるCI/CDパイプラインの機能を拡張するために使用できます。

これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。

ITOps・DevOpsの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。