Azure VM のゲスト OS 内にコマンドを実行する方法はいくつかあります
今回はその1つであるマネージド実行コマンドを Bicep で試してみます
実行コマンドについて
実行コマンドには2種類あります
Azure から OS にコマンドを発行する実行コマンド (RunCommand) 拡張機能について解説 | Japan Azure IaaS Core Support Blog のブログで違いについて書かれています
今回試すのは新しい方の “マネージド実行コマンド” です
先ほどのブログによると ARM テンプレートに対応しているということなので、Bicep でも使えるか試してみたいと思います
ざっくり手順
- Bicep ファイルの作成
- インライン スクリプト
- スクリプト URI
- 組み込みのスクリプト コマンド ID
1. Bicep ファイルの作成
Bicep でマネージドの実行コマンドを記述するとこのようになります
|
|
parent
でコマンドを実行する VM を指定しています
実際に実行するコマンドは properties
の中の source
で指定します
Name | 内容 |
---|---|
script | インライン スクリプト |
scriptUri | スクリプト URI |
commandId | 組み込みのスクリプト コマンド ID |
3つの指定方法がありますが、複数種類を同時に使うことができないようです
1 回のコマンド実行でサポートされるソース入力は 1 種類だけです。
マネージド実行コマンドを使用して Azure の Windows VM でスクリプトを実行する - Azure Virtual Machines | Microsoft Learn
組み込みのスクリプト コマンド ID は アクション実行コマンドを使用して Azure Windows VM でスクリプトを実行する - Azure Virtual Machines | Microsoft Learn に記載があります
2. インライン スクリプト
インライン スクリプトで実行してみます
内容としては IIS のインストールです
|
|
無事にデプロイができたので VM に紐づけている Public IP アドレスにブラウザからアクセスしてみます
ちゃんと IIS のインストールが確認できました
3. スクリプト URI
続いて スクリプト URI で実行してみます
IIS の画面を少しカスタマイズしてみます
|
|
デプロイ後、再度アクセスしてみるとちゃんと画面のカスタマイズができていました
4. 組み込みのスクリプト コマンド ID
commandId でのデプロイを確認してみます
Windows Update の自動更新の無効化/有効化 を試してみます
Windows Update を無効化する ID を指定します
|
|
デプロイ後、無効化されています
有効化の実行もしてみます
|
|
ちゃんと有効化されていました
まとめ
マネージド実行コマンドを使ってみました
カスタムスクリプト拡張機能とは違い、拡張機能をインストールすることなく実行できました
今回は試しませんでしたが、複数のスクリプトを並行実行したり、実行時間が長いスクリプトが使えたりと痒い所に手が届くような機能になっています
参考
- 実行コマンドを使用して Azure の Windows または Linux VM でスクリプトを実行する - Azure Virtual Machines | Microsoft Learn
- Azure から OS にコマンドを発行する実行コマンド (RunCommand) 拡張機能について解説 | Japan Azure IaaS Core Support Blog
- Microsoft.Compute/virtualMachines/runCommands - Bicep, ARM template & Terraform AzAPI reference | Microsoft Learn
- アクション実行コマンドを使用して Azure Windows VM でスクリプトを実行する - Azure Virtual Machines | Microsoft Learn
- Azure_Bicep/Blog/vm_runcommand at main · NakayamaKento/Azure_Bicep