Azure VM の DSC (Desired State Configuration) 拡張機能を使ったときのメモです
Desired State Configuration とは
DSC (Desired State Configuration) とは PowerShell を使って「サーバーにこうなってほしい」を記述する機能です
2014年の記事ですが以下のものがわかりやすかったです
PowerShell DSCで導入された新しい構文キーワード - Build Insider
この DSC を Azure VM で利用することができるので、今回試してみました
Azure VM での DSC 利用
Azure VM で DSC を利用するときはいくつか選択肢があります
- VM の拡張機能だけを利用
- Azure Automation Account を利用
- Azure Automanage のマシン構成を利用
今回は VM の拡張機能のパターンになります
ざっくり手順
- DSC 用の PowerShell スクリプト作成
- Storage Account に保存
- PowerShell を使ってデプロイ
- [オプション] Bicep を使ってデプロイ
以下のリソースは既に存在している前提で進めます
graph TB;
%%グループとサービス
subgraph hubsub["Hub Subscription"]
subgraph hub_Vnet[hub-Vnet]
VM1("VM")
ST1{{"fa:fa-folder Storage Account"}}
end
end
%%サブグラフのスタイル
classDef subG fill:none,color:#345,stroke:#345
class hubsub subG
classDef VnetG fill:none,color:#0a0,stroke:#0a0
class hub_Vnet VnetG
%%ノードのスタイル
classDef SCP fill:#e83,color:#fff,stroke:none
class VM1 SCP
classDef PaaSG fill:#46d,color:#fff,stroke:#fff
class ST1 PaaSGSG
1. DSC 用の PowerShell スクリプト作成
DSC のスクリプトの作成がよくわからなかったのでサンプルをそのまま使いました
ざっくり解説しておくと
- “IISInstall” という構成が 1つだけ記述されている
- 上記の構成は localhost に適用される
- “WindowsFeature” で Windows の役割に関する内容を記述する
WindowsFeature - PowerShell | Microsoft Learn- 名前が “Web-Server” という Windows の役割に関すること
- “Present” と書くことでインストールしておけよ。という意味になる。
アンインストールしておけよの場合は “Absent” になる
- “WindowsFeature” で Windows の役割に関する内容を記述する
- 上記の構成は localhost に適用される
これを iisinstall.ps1 という名前で保存しておきます
|
|
2. Storage Account に保存
作成した DSC 用スクリプト (構成ファイル) を Azure VM が読み取れる場所に保存しておきます
今回は Storage Account を使用しました
Publish-AzVMDscConfiguration というコマンドを使うことで zip ファイルにして、指定した Storage Account に保存する所まで実行してくれます
|
|
3. PowerShell を使ってデプロイ
Storage Account に保存された zip ファイルを VM に読み込ませます
|
|
デプロイまで少し時間がかかりますが、完了すると IIS のインストールが完了しています
実際に VM へアクセスしてみると IIS がインストールできているのがわかります

4. [オプション] Bicep を使ってデプロイ
せっかくなので Bicep でも試してみました
構文を理解するため、拡張機能以外は Azure Verified Module を使って、DSC 拡張機能の部分は外出ししました
zip ファイルは先ほどの Storage Account からダウンロードして GitHub に置いてます
Azure_Bicep/Blog/dsc_extension/main.bicep at main · NakayamaKento/Azure_Bicep
拡張機能の部分だけ切り抜くとこんな感じ
|
|
デプロイは成功しました
ブラウザでのアクセスも無事に問題なくできました。
画像は代わり映えしないので割愛。

構文がわかったのですべて Azure Verified Module を使ってデプロイしてみました
Publisher など細かいところ気にしなくていいのがめっちゃよいです
Azure_Bicep/Blog/dsc_extension/avm_main.bicep at main · NakayamaKento/Azure_Bicep
|
|
まとめ
今回は DSC 拡張機能を使ってみました
DSC 用の構成ファイルさえ作成してしまえれば非常に簡単にサーバーの設定ができました
構成ファイルは Copilot と一緒に相談して作れたらいいなーと思いました
参考
- PowerShell DSCで導入された新しい構文キーワード - Build Insider
- Desired State Configuration 2.0 - PowerShell | Microsoft Learn
- Azure の Desired State Configuration の概要 - Azure Virtual Machines | Microsoft Learn
- Azure Resource Manager テンプレートを使用した Desired State Configuration 拡張機能 - Azure Virtual Machines | Microsoft Learn