はじめに
前回までで、仮想マシン作成時のVMイメージ管理にAzure Compute Galleryを使う目途がつきました。
ですが、実際にこのイメージを利用するときはARM Templateを使っていました。VMイメージからAzure Compute Galleryに変更した時、どの程度ARM Template側を編集すればいいか、そもそも元と同じように作成できるのか、実際にやってみたいと思います。
GUIでの作成(途中まで)
まず、Azure Compute Galleryから利用したいVMバージョンを選び、GUIで仮想マシンの作成を進めます。
作成確認画面まで進んだら実際にリソースは作成せず、Automation用のテンプレートをダウンロードします。
テンプレートファイルの確認
ダウンロードしたテンプレートファイルを確認します。imageReference
の部分が今回のイメージに該当しそうです。
テンプレートの書き換え
元々のテンプレートでは、imageReference
を変数で指定していました。
"variables": { "imageReference": { "id": "/subscriptions/(Subscription-Id)/resourceGroups/(Resource-Group-Name)/providers/Microsoft.Compute/images/(VM-Image-Name)" }, (中略) "storageProfile": { "imageReference": "[variables('imageReference')]", "osDisk": { "createOption": "FromImage", "managedDisk": { "storageAccountType": "Standard_LRS" } } },
変数部分だけ書き換えればいけそうです。
"imageReference": { "id": "/subscriptions/(Subscription-Id)/resourceGroups/(Resource-Group-Name)/providers/Microsoft.Compute/galleries/(Azure-Compute-Gallery-Name)/images/(VM定義名)/versions/(バージョン)" },
テンプレートからのデプロイ
実際に実行してみたところ、エラーになってしまいました。
The value of parameter imageReference.id is invalid.
調べてみると、apiVersionが古いと発生してしまうようです。(最初に作ったときのままで2016-04-30-preview
になっていました...)
Azure ARM Deployment VM Creation from Shared Image Gallery Image Errors
apiVersionを上げると他の部分も要検証になってしまうのですが、ひとまず仮想マシンのみapiVersionを2022-03-01
に上げて再実行したところ、うまくデプロイ出来ました。
おわりに
正直、もう少しテンプレート修正は苦戦すると思っていたのですが、拍子抜けするくらい簡単でした。*1
もともと書きたかったAzure Compute Galleryに関する内容はここまでだったのですが、本記事を書く際に、Azureリソースの展開に利用するBicepという言語の存在を知りました。
せっかくなので、今回使ったARMテンプレートをBicepに対応させる、という記事を次回書きたいと思います。
*1:強いて言えばapiVersionで引っかかりましたが
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧