Azure Bicep を使用して Virtual Machine のカスタムスクリプト拡張機能をデプロイしたので備忘録です
結論を先に書くと Azure Verified Module を使った方法ではうまくいきませんでした
ざっくり手順
- Azure Verified Module を使った Bicep ファイルの準備
- カスタムスクリプト用 PowerShell スクリプトの準備
- デプロイの実行、トラブルシューティング
1. Azure Verified Module を使った Bicep ファイルの準備
まず、Bicepファイルを作成します
今回も Azure Verified Module を使用して作成しました
Azure Verified Modules を使って Bicep をデプロイし隊 – クラウドを勉強し隊
---
title: Bicep ファイルで作成するもの
---
graph LR
subgraph Vnet[vnet]
subgraph Subnet[subnet]
WS1("VM + カスタムスクリプト拡張機能")
end
end
NSG1(NSG)
classDef subG fill:none,color:#0a0,stroke:#0a0
class Vnet,Subnet subG
classDef SCP fill:#e83,color:#fff,stroke:none
class WS1 SCP
classDef NSGG fill:#46d,color:#fff,stroke:#fff
class NSG1 NSGG
Subnet -.- NSG1
Azure Verified Module を使うと VM の子リソースとしての拡張機能は一緒に書くことができます
公式ドキュメントを見に行くと拡張機能は次のものが整備されています
- extensionAadJoinConfig
- extensionAntiMalwareConfig
- extensionAzureDiskEncryptionConfig
- extensionCustomScriptConfig
- extensionCustomScriptProtectedSetting
- extensionDependencyAgentConfig
- extensionDomainJoinConfig
- extensionDomainJoinPassword
- extensionDSCConfig
- extensionGuestConfigurationExtension
- extensionGuestConfigurationExtensionProtectedSettings
- extensionHostPoolRegistration
- extensionMonitoringAgentConfig
- extensionNetworkWatcherAgentConfig
- extensionNvidiaGpuDriverWindows
すごいたくさん整備されています
その中でも今回は extensionCustomScriptConfig を使います
実際に作成した VM の Bicep を抜き出すと以下になります
|
|
最後の方でカスタムスクリプト拡張機能を書いています
uri でカスタムスクリプト拡張機能で実行してほしい PowerShell スクリプトを指定し
settings の commandToExecute でスクリプトが呼び出されます
公式ドキュメントも参考にしました
fileUris: スクリプト ファイルが格納される場所です。 提供された場所を使用しない場合は、値を更新する必要があります。
commandToExecute:このコマンドによってスクリプトが呼び出されます。
テンプレートを使用して VM 拡張機能をデプロイする - Azure Resource Manager | Microsoft Learn
2. カスタムスクリプト用 PowerShell スクリプトの準備
カスタムスクリプトとして実行する PowerShell スクリプトを用意します
今回は Windows サーバーに IIS をインストールします
Azure_Bicep/Blog/vm_customscript/installiis.ps1 at main · NakayamaKento/Azure_Bicep · GitHub
3. デプロイの実行、トラブルシューティング
Bicep ファイルと PowerShell スクリプトが用意できたのでデプロイしてみます
が、成功せずにエラーが返ってきました、、、
エラー内容を確認すると CommandToExecute が見つからない という趣旨がかかれています
しかし, 実際には module のパラメータ-には含めています
{“code”:“VMExtensionProvisioningError”,“message”:“VM has reported a failure when processing extension ‘CustomScriptExtension’ (publisher ‘Microsoft.Compute’ and type ‘CustomScriptExtension’). Error message: ‘Invalid Configuration - CommandToExecute is not specified in the configuration; it must be specified in either the protected or public configuration section’. More information on troubleshooting is available at https://aka.ms/VMExtensionCSEWindowsTroubleshoot. “}
そこでカスタムスクリプト拡張機能だけ Azure Verified Module を使わずにデプロイしてみます
module のパラメーターからカスタムスクリプト拡張機能の部分をコメントアウトしています
|
|
このファイルのデプロイは成功しました
ということは Azure Verified Module 側に不具合がありそうです
いろいろ調査をした結果、Module 内の処理で commandToExecute がうまくパラメーターとして渡せていないことがわかりました
Azure Verified Module へ Issues をあげておきました
[AVM Module Issue]:extensionCustomScriptConfig issue in avm/res/compute/virtual-machine · Issue #1540 · Azure/bicep-registry-modules · GitHub
まとめ
Bicep を使って VM のカスタムスクリプト拡張機能をデプロイしました
残念ながら Azure Verified Module だけを使ってデプロイすることはできませんでしたが
やりたいことは出来たのでよかったです
参考
- Azure Verified Modules
- Azure Verified Modules を使って Bicep をデプロイし隊 – クラウドを勉強し隊
- bicep-registry-modules/avm/res/compute/virtual-machine at avm/res/compute/virtual-machine/0.2.3 · Azure/bicep-registry-modules · GitHub
- テンプレートを使用して VM 拡張機能をデプロイする - Azure Resource Manager | Microsoft Learn
- [AVM Module Issue]:extensionCustomScriptConfig issue in avm/res/compute/virtual-machine · Issue #1540 · Azure/bicep-registry-modules · GitHub