Azure Logic AppsのWorkflowをPipelineを用いてデプロイしてみた ~~事前準備_セルフホステッドエージェント作成~~

Azure Logic AppsのWorkflowをPipelineを用いてデプロイする方法について、複数回に分けてご紹介します。

まず、第1回の本記事では、Pipelineの実行に使用するAzure Pipelines エージェントについての説明と、実際にAzure Pipelinesエージェントの構築についてご紹介します。

Azure Pipelineエージェントとは

始めに、Azure Pipelineエージェントについてご説明します。

Azure Pipelineを使用したコードのビルドやソフトウェアのデプロイには少なくとも1つのエージェントが必要になります。

Azure Pipelineエージェントとは、1度に1つのジョブを実行するエージェントソフトウェアがインストールされたコンピューティングインフラストラクチャです。

Azure Pipelineの種類

Azure Pipelineエージェントにはいくつか種類があります。

それぞれの特徴についてご説明します。

Microsoftホステッド エージェント

Microsoftホステッドエージェントとは、Microsoftによってホストおよび管理されるエージェントです。

Microsoftによってホストおよび管理されているため、メンテナンスとアップグレードが自動的に行われます。

また、Pipelineで指定したVMイメージの最新バージョンが常に取得される仕様となっています。

このエージェントによって、Pipelineの各ジョブに対して新しい仮想マシンが作成されます。1つのジョブが終了すると、エージェントにより仮想マシンは自動で削除されます。

MicrosoftホステッドエージェントはAzure パブリックネットワーク上で実行されますが、パブリックIPアドレスは割り当てられないため、セキュリティも担保されています。

また、Firewallを経由させる場合、ホステッドエージェントのIPアドレス範囲を許可する必要があります。IPアドレス範囲は、毎週Microsoftより確認することが可能です。

パブリックな環境での通信が必要なため、ExpressRouteやVPNなどプライベート接続を使ってMicrosoftホステッドエージェントを使用することはできません。

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

セルフホステッドエージェントとは、ジョブを実行するために独自に設定および管理するエージェントです。

セルフホステッドエージェントを使用する場合、自身でサーバを用意する必要があります。

エージェントはWindows OSはもちろん、Linux OS、Mac OS、Dockerコンテナー場にもインストールすることが可能です。

Microsoftホステッドエージェントは、パブリックの環境の中でランダムなパブリックIPアドレスを用いてAzureリソースにアクセスしていました。そのため、IPアドレスの制限やプライベート環境へのアクセスができませんでした。

一方、セルフホステッドエージェントでは自身でサーバを構築するため、エージェントのIPアドレスを固定化する事ができます。そのため、Azureリソース側でIPアドレスの制限を行うことや、プライベート環境と同一ネットワーク上でエージェントを動かすことによってプライベートの環境にアクセスすることも可能です。

Azure仮想マシン スケールセットエージェント

Azure仮想マシン スケールセットエージェントは、セルフホステッドエージェントの一種ですが、ニーズに合わせて仮想マシンを自動スケールすることが出来ることが特徴です。

スケーリングが可能なため、専用エージェントを常に実行する必要性が減少し、コスト削減にもつながります。

Azure仮想マシンスケールセットエージェントでは、Macエージェントを実行することはできません。利用できるのは、WindowsエージェントまたはLinuxエージェントのみとなります。

それぞれのエージェントで細かい要件や構成については以下ドキュメントを参考にしてください。

learn.microsoft.com

本記事ではセルフホステッドエージェントの構築方法についてご説明します。

事前準備

セルフホステッドエージェントを作成する前の事前準備にて説明します。

※ なお、事前準備の詳細な手順は割愛します。必要に応じてリンク先のドキュメントを参照し、作成してください。

Azure DevOps 組織の設定

Azure Pipelineを利用するにあったて、Azure DevOps組織を作成する必要があります。

learn.microsoft.com

Azure DevOps プロジェクトの作成

次に、Azure DevOpsプロジェクトを作成する必要があります。

learn.microsoft.com

リポジトリの作成

次に、Azure Pipelineを利用するための、ソースコードを格納するリポジトリを作成する必要があります。

本記事では、Azure Reposのリポジトリを使用します。

learn.microsoft.com

セルフホステッドエージェント 作成

ここから、セルフホステッドエージェント作成の手順についてご説明します。

エージェントをインストールする仮想マシンの作成

本記事では、Azureを用いてエージェントの作成を行います。

Windows OSの仮想マシンを作成し、そのうえでエージェントを動作させます。

事前に以下の用意があることを前提とします。

  • Azure Portalが利用できること
  • Azure上に以下リソースが存在していること
    • サブスクリプション
    • リソースグループ
    • 仮想ネットワーク
    • ネットワークセキュリティーグループ(どちらでも可)

Azure Portalにアクセスし、仮想マシンを作成します。セルフホステッドエージェントでは以下のOSがサポートされています。

  • クライアントOS
    • Windows 7 SP1 ESU
    • Windows 8.1
    • Windows 10
    • Windows 11
  • サーバーOS
    • Windows Server 2012 以降

本記事ではWindows Server 2019、Standardにて仮想マシンを作成します。

これで、エージェントを動かす仮想マシンは作成できました。

Agent Poolの作成

エージェントとAzure Pipelinesを紐づけるため、エージェントをAzure PipelinesのAgent Poolに追加する必要があります。

そのために、Agent Poolを作成します。

始めに、Azure DevOpsからセルフホステッドエージェントを利用したいプロジェクトのトップ画面に移動し、[Project settings] > [Agent Pools] > [Add Pool]を選択します。

次にパラメータを設定します。

「Add agent pool」というサブウィンドウが開くため、各種設定値を入力し[Create]を選択します。

パラメータには、「Pool type」、「Name」を設定する必要があります。

[Project settings] > [Agent Pools]に作成したPoolが表示されていることを確認します。

これでAgent Poolの作成が完了しました。

PAT(Personal access tokens)の作成

次にPersonal access tokens(以下PATと記述)を作成します。

PATはエージェントをAzure Pipelineに登録するためのトークンを生成します。エージェント登録の実施者が正規のAzure DevOpsユーザーであることを保証する役割を果たします。

[Uesr settings(右上のマーク)] > [Personal access tokens]  > [New Token]を選択します。

次にパラメータを設定します。

「Create a new personal access token」のサブウィンドウが開くため、各種設定値を入力します。

設定する項目は以下になります。

  • Name:トークン名
  • Organization:DevOpsの組織
  • Expiration(UTC):トークンの有効期限
  • Scope:トークンのアクセス権

トークンの有効期限はカスタムで自在にを設定することが可能です。最長で有効期限を1年間まで設定することができます。

Scopeの設定では多くのアクセス権を設定できますが、Agentの登録を行うためには「Agent Pools」「Read&mangae」のアクセス権が必須になります。

「Agent Pools」はScopsにデフォルトでは表示されていないため、「Show all scopes」を選択して表示させる必要があります。

「Success!」のサブウィンドウが表示されましたら、トークンの作成が完了です。

トークンは作成時の1度しか表示することができないため、必ず別の場所に控えてください。

作成したトークンが表示されていることを確認します。

エージェントの登録

本記事の初めに作成した仮想マシンに対して、セルフホステッドエージェントを登録していきます。

始めに、[Project settings] > [Agent Pools] > [Add Pool]より作成したAgent Poolを選択します。

作成したAgent Poolより[Agent] > [New Agent]を選択します。

「Get the agent」のサブウィンドウより[Download]より自身指定の場所にダウンロードします。

エージェントはzipファイルでダウンロードされます。

作成した仮想マシンを起動しリモートデスクトップで接続します。

仮想マシンのCドライブ直下に「Agent」という名のフォルダを作成し、このフォルダの配下にエージェントをインストールするツールを配置します。

※こちらは、zipファイルを解凍したフォルダの配下に存在します。

仮想マシンでPowershellを起動し、以下コマンドをより、エージェントを実行します。
<実行コマンド>

   .\config.cmd

Azure DevOpsに接続後、エージェントを登録するために設定が必要になります。

  • サーバーURL:https://dev.azure.com/[Originaization]
  • 認証の種類:PAT
  • PAT:取得したトークン
  • 登録するAgent Pool:作成したAgent Pool名
  • エージェント名:好きな名前(デフォルトではサーバのホスト名)
  • 作業フォルダー:_work(デフォルト)
  • エージェントの自動起動:あり/なし(デフォルトではなし)

この設定では、取得したトークンと作成したAgent Pool名を入力する必要があります。

また、エージェントの自動起動は、サーバーが起動するとエージェントも起動します。なしにすると、毎回手動で起動する必要があります。

エージェントの状態確認

エージェントが実際に起動しているかの確認方法は2つあります。

1つがエージェントが動いている仮想マシン上から確認する方法です。

仮想マシンからサービスを開き、「Azure Pipelines Agent」の状態が「実行中(またはrunning)」になっていることを確認します。

2つ目がAzure DevOpsから確認する方法です。

[Project settings] > [Agent Pools] > [Add Pool] > [作成したAgent Pool] > [Agent]より、エージェントが「Online」になっていることを確認します。

まとめ

ここまでAzure Pipelinesを使用するためのセルフホステッドエージェントの作成についてご説明しました。

エージェントにもいろいろ種類があり、その時の環境や条件に合ったものを選択できるのもありがたいですね。

次回は、いよいよPipelineを用いてLogic AppsのWorkflowをデプロイする方法についてご説明します。

執筆担当者プロフィール
米澤 拓馬

米澤 拓馬(日本ビジネスシステムズ株式会社)

ハイブリッドクラウドグループの米澤です。ハイブリッドということもあり普段の業務ではクラウドとオンプレミスの両方を対応しております。趣味は、映画とNBAの鑑賞です。最近はゴルフをはじめまして、週末は打ちっぱなしに行き、練習の日々です。

担当記事一覧