Azure Image Builderの自動更新トリガー機能を設定してみる



皆さん、こんにちは。

最近出せていなかったのですが、久々の検証ブログになります。

1月に入り、Azure Image Builderの自動トリガー機能の一般提供が開始されました。今回はAzure Image Builderの自動トリガー機能の概要と、その設定方法についてご紹介したいと思います。

1. Azure Image Builderのトリガー機能とは

そもそも、Azure Image Builderとは何かから解説したいと思います。

Azure Image Builderとは、仮想マシンのカスタムイメージを作成する機能で、作成のプロセスを自動化することから、イメージの作成作業を簡略化してくれるものです。

また、イメージの作成プロセスはコードで書かれているため、既存のスクリプトやツール、コードで管理できるようになりますので、一貫性を保てるようになるのもメリットといえます。

このAzure Image Builderの機能として新たに一般提供が開始されたのが、トリガー機能です。

これまでは、Azure Image Builderで作成されたイメージのメンテンナス(ビルド)は手動で実施するのが基本でした。トリガー機能は手動で実施していたのを自動化するものになります。

現状はAzure Marketplaceから取得したソースイメージが更新された場合にのみ、自動でイメージのビルドを開始してくるトリガーとしてサポートしています。トリガー条件をAuzure Portal画面から設定できないなど、柔軟性はあると言い切れませんが、期待される機能と感じています。

それでは、設定方法について解説していきます。

※今回はMicrosoft Learnの手順をもとに実施していきたいと思います。

2. Azureプロバイダー登録

まずは、プロバイダーの登録から実施していきます。

また、今回の作業は全てAzure Cloud Shellで実行します。ローカルでも操作は可能ではありますが、特別にコマンドをインストールしないといけない等があるので、Cloud Shellで実施することをオススメします。

プロバイダーが登録されているか、コマンドで確認します。

※grepなどを利用するため、Cloud Shellをオススメしています。

実行結果としては、「Registerd」もしくは「Not Registerd」が表示されます。

もし、Not Registerdと表示されていれば、下記のコマンドを実行してください。

実行が完了したら、また冒頭のコマンドを実行して、Registerdになっているか確認します。

続いて、自動イメージトリガー機能を追加します。

Registerd、になればプロバイダー登録は全て完了です。

2-1. 番外編

ここで、この先の頻繁に出てくる変数を設定しておきます。

下記のコマンドを実行しましょう。

試しに、

と実行すれば、設定した変数名が画面上に表示されます。

注意点ですが、この設定を完了してからは、Cloud Shellのセッションが切断されないようにしてください。

切断されてしまうことで、これまでの使用してた変数がリセットされてしまうためです。

3. トリガー設定の前準備

ここからは、トリガー設定前の準備を進めます。

やることとしては、

  • リソースグループの作成
  • マネージドIDの作成、権限付与

を実施します。

その後に、Azure Compute Gallaery、イメージ定義、及びイメージテンプレートを作成します。

3-1. リソースグループの作成

リソースグループはAzure Portalからも可能ですが、せっかくなのでこのままCloud Shellで実施していきましょう。

改めてですが、変数は先ほどのコマンドで設定済みですので、安心してください。

登録が完了しました。

3-2. マネージドIDの作成、権限付与

続いて、マネージドIDを作成します。

最後のコマンドを実行するタイミングでエラーが出ました。

調査しているとどうやらタイミングの問題という記載があったため、リトライしてみます。(3/3でエラーが出ましたので、恐らく想定していいものだと思われます)

最後のコマンドだけ再実行します。

上手く登録することができました。画面上からも確認していきます。

これでリソースグループ、マネージドIDの作成、ロール付与まで完了しました。

4. トリガーの設定

トリガーの設定をする前に、元となるAzure Compute Galleryの作成から進めていきましょう。

4-1. Azure Compute Galleryの作成

こちらもコマンドからやっていきます。

作成が完了しました。

4-2. イメージ定義の作成

それでは、イメージ定義を作成します。

skuやosのような単語から推察できるかと思いますが、ここで実際のVMのOSなどを定義することになります。

作成が完了しました。

画面上からも確認ができました。

4-3. イメージテンプレートの作成

続いて、イメージテンプレートを作成します。

今回は、Microsoft社員の方が作成しているテンプレートを用いて作成します。

テンプレートを読み込み(Crulコマンド)、冒頭で設定した変数もとに、読み込んだJsonファイルの編集(sedコマンド)をしています。

それでは、編集したテンプレートJsonファイルをもとにAzure Image Builderへテンプレートを作成します。

こちらのコマンドを実行することで、正常にテンプレートが作成されているか確認をすることができます。

4.4 トリガーの設定

ここでトリガーを設定します。

こちらもサンプルトリガーをもとに設定します。

画面上からも確認することができました。

また、こちらも下記のコマンドを実行することで、作成されたか確認をすることができます。

こちらのテンプレートは、イメージの更新があれば自動的にビルドを開始するような仕組みになっています。

以上で設定は完了です!!

5. まとめ

今回はサンプルを基に作成したため、Ubuntu OSの18.04 LTSと古いOSになっていますが、こちらの手順に沿って、必要に応じJSONテンプレートを作成することで自動化が可能です。

参考にしているGithubページはこちらになりますので、Jsonテンプレートの参考にしてもらえればと思います。

この記事を書いた人

森 信之介
テクニカルマーケターとして、ブログ執筆、セミナー講師を行っております!