環境での VM リソースの管理
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
この記事では、環境で仮想マシン (VM) リソースを使用して、複数のマシンにまたがる Azure Pipelines デプロイを管理する方法について説明します。 また、展開をローリングするために、独自のサーバーにエージェントをインストールすることもできます。
VM リソースは、開発、テスト、運用などの 環境に存在できます。 環境を定義したら、デプロイでターゲットに VM を追加できます。 環境のデプロイ履歴は、各 VM からパイプラインへの追跡可能性を提供します。
前提条件
- パイプラインに接続されているソース リポジトリへのアクセス。
- 環境に接続する VM で実行可能スクリプトをダウンロードして実行するためのアクセスとアクセス許可。
- 環境を含む Azure DevOps プロジェクトのプロジェクト管理者またはビルド管理者 アクセス権 。 詳細については、「 Pipeline セキュリティ リソース」を参照してください。
- 展開プール、または組織で使用できる一連のターゲット サーバーの管理者ロール。 詳細については、「プールと環境のアクセス許可のデプロイを参照してください。
Note
デプロイ グループ エージェントを構成する場合、または VM 環境リソースを登録するときにエラーが発生した場合は、個人用アクセス トークン (PAT) スコープを すべてのアクセス可能な組織に設定してください。
環境の作成
VM リソースを環境に追加するには、次の手順に従います。 同じプロセスを使用して、物理マシンを設定できます。
VM リソースを追加する
Azure DevOps プロジェクトで、Pipelines>Environments に移動し[環境の作成または新しい環境を選択。
最初の New 環境 画面で、 Name と省略可能な Description を追加します。
Resourceで、仮想マシンを選択し、次へ選択。
登録スクリプトをコピーする
VM リソースのエージェント スクリプトは、セルフホステッド エージェントのスクリプトに似ていますが、同じコマンドを使用します。 スクリプトには、サインインしているユーザーの Azure DevOps 個人用アクセス トークン (PAT) が含まれます。このトークンは、スクリプトが生成されてから 3 時間後に期限切れになります。
次の 新しい環境 画面で、[ システムの動作で Linux を選択します。
Linux 登録スクリプトをコピーします。
このスクリプトは、環境に追加されたすべての Linux VM で同じです。 エージェント スクリプトのインストールの詳細については、「 セルフホステッド Linux エージェントを参照してください。
コピーしたスクリプトを実行する
Close を選択し、新しい環境が作成されることに注意してください。 PAT の有効期限が切れた場合など、スクリプトをもう一度コピーするには、 リソースの追加を選択します。
環境に登録する各ターゲット VM でコピーしたスクリプトを実行します。
Note
VM に既に別のエージェントが実行されている場合は、環境に登録する agent の一意の名前を指定します。
VM が登録されると、環境の Resources タブにリソースとして表示されます。
パイプラインで VM を使用する
YAML パイプラインでは、その環境を参照して VM をターゲットにすることができます。 既定では、ジョブは、その環境の resourceName
に登録されているすべての VM を対象とします。
Note
ステージを再試行すると、失敗したターゲットだけでなく、すべての VM でデプロイが再実行されます。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: VMenv
resourceName: VMenv
resourceType: virtualMachine
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
Note
virtualMachine
などのresourceType
値では、大文字と小文字が区別されます。 大文字と小文字が正しくないと、一致するリソースが見つかりません。
resourceName
で指定することで、環境内の特定の VM にデプロイできます。 次の例では、VMenv
環境の RESOURCE-PC
という名前の VM リソースにのみデプロイします。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: VMenv
resourceType: virtualMachine
resourceName: RESOURCE-PC # only deploy to the VM resource named RESOURCE-PC
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
YAML パイプライン デプロイ ジョブの詳細については、 YAML パイプライン スキーマを参照してください。
タグを追加および管理する
タグは、デプロイのために環境内の特定の VM セットをターゲットにする方法です。 タグはそれぞれ 256 文字に制限されています。 使用できるタグの数に制限はありません。
対話型登録スクリプトで、または UI を使用して VM のタグを追加したり、タグを削除したりできます。その場合は、VM リソースに対して その他のアクション を選択します。
複数のタグを指定した場合、パイプラインはすべてのタグを含む VM のみを使用します。 次の例では、 windows
タグと prod
タグの両方を持つ VM のみを対象としています。 タグが 1 つしかない VM またはタグがない VM は対象になりません。
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- deployment: VMDeploy
displayName: Deploy to VM
environment:
name: VMenv
resourceType: virtualMachine
tags: windows,prod # only deploy to VMs with both windows and prod tags
strategy:
runOnce:
deploy:
steps:
- script: echo "Hello world"
デプロイ戦略を適用する
デプロイ strategy
を適用して、アプリケーションをロールアウトする方法を定義できます。 VM では、 runOnce
と rolling
の両方の戦略がサポートされています。 デプロイ戦略とライフサイクル フックの詳細については、「 デプロイ戦略を参照してください。
デプロイ履歴を表示する
[デプロイ] タブを選択して、コミットと作業項目の完全な追跡可能性と、環境およびリソースごとのクロスパイプライン デプロイ履歴を確認します。