Azure: PackerでWindows11イメージ作成とACG登録

概要

  • Packerを使ってWindows11の仮想マシンイメージを作成し、それをAzure Compute Gallery(ACG)に登録するサンプルです。
    Packer | HashiCorp Developer

    Explore Packer product documentation, tutorials, and example…

  • 手順を実行すると、リソースグループにあるACGに、仮想マシンイメージを0.0.1として登録します。
    リソース種別リソース名備考
    リソースグループtest-rg
    Azure Compute Gallery(ACG)test_gal
    VMイメージ定義test-win11作成イメージを0.0.1として登録
  • Windows 11で動作するWSL(Ubuntu24)にAzure CLI(2.81.0)とpacker(1.14.3)をインストールして動作確認しています。
  • ソースファイルはGitHubで公開しています。
    GitHub

    Contribute to nextdoorwith/archives development by creating …

手順

  1. Azure CLIとpackerをインストールします。
    # Azure CLIのインストール
    curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
    
    # packerのインストール
    curl -fsSL https://apt.releases.hashicorp.com/gpg | \
      sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
      sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt-get update && sudo apt-get install packer
  2. Azure CLIでAzureにサインインします。
    サブスクリプションが存在しない旨のエラーが出る場合、もう一度サインインしてください。
  3. 仮想マシンイメージの登録先を作成します。
  4. 任意のディレクトリにpackerの定義ファイルを作成します。
    ダウンロードが難しい方は、こちらからコピペしてファイルを作成してください。
  5. win11.pkr.hclを編集してサブスクリプションIDを埋め込みます。
    サブスクリプションIDが分からない場合、次のように確認できます。
  6. packerを実行します。
    packerは、一時的にAzure上に仮想マシンを作成し、イメージをバージョン0.0.1としてACRに登録します。正常に実行できた場合のログはこちらをご覧ください。
    なお、実行完了まで20分ほどかかります。
  7. Azureポータルで”Azure Compute Gallery”を開きます。
    VMイメージ定義”test-win11″を開き、バージョン0.0.1が登録されていることを確認します。

参考

packer定義ファイル

  • win11.pkr.hcl
    作成するWindowのイメージや、それをAzure上で作成するための条件を指定するファイルです。
  • setup-winrm.ps1
    Packerは、Windowsの遠隔操作のためにWinRMに接続します。既定では接続できないので、setup-winrm.ps1で認証やポート開放しています。(このスクリプトを含めないと、”Waiting for WinRM to become available…”から進まない。)
  • 業務で使用する場合、共通の設定はcommon.pkr.hcl、サブスクリプションID等の変数はvariable.pkr.hclで定義、変数に対応する値はpacker.auto.pkrvars.hclに定義、などのようにファイル分離することをお薦めします。

packer正常実行時のログの例