先日、新ポータルから AlwaysOn 可用性グループが設定された構成がテンプレートとして提供され、簡単に可用性の環境が構築できるようになりました。
展開には DSC が使用されているようでしたので、この機会に Azure PowerShell DSC 拡張を触ってみようかと。
詳細は
- Introducing the Azure PowerShell DSC (Desired State Configuration) extension
- PowerShell DSC 拡張を使用した VM 構成の自動化
を見ていただくとよいかと。
Azure PowerShell が実行できる必要がありますので https://github.com/Azure/azure-sdk-tools/releases 等で 0.8.6 以降のバージョンをインストールしておく必要があります。
また、冒頭で紹介した記事では PowerShell DSC Resource Kit のリソースが使用されていますので、PowerShell DSC Resource Kit Wave 5 Arrives を参考に、DSC Resource Kit (All Modules) から xWebAdministration をダウンロードし、[C:Program FilesWindowsPowerShellModules] に展開しておきます。
# リソースの配置は Understanding Import-DscResource Keyword in Desired State Configuration が参考になります。
今回は xWebAdministration に含まれる BakeryWebsite のアプリケーションをデプロイしますので、[C:Program FilesWindowsPowerShellModulesxWebAdministrationExamples] の BakeryWebsite.zip を [C:Program FilesWindowsPowerShellModulesxWebAdministration] に展開しておきます。
# DSC のコンフィグで指定しているパスに展開しておきます。
Azure PowerShell を実行する環境の準備はこれで完了です。
PowerShell DSC 拡張を使用した仮想マシンへの DSC の構成適用ですが、
- 必要となるモジュール群を ZIP アーカイブ
- ZIP アーカイブされたファイルを Azure Storage 上に配置
- 仮想マシンが ZIP アーカイブされたファイルを取得し、構成を適用
という流れで実行されているようです。
これらの作業については Azure PowerShell を実行できる環境で実施することができます。
まずは DSC の Configuration を作成する必要がありますが、今回は冒頭の記事の [FourthCoffee.ps1] を使用し、このファイルを [C:examples] に保存しています。
これで準備が終わりましたので PowerShell から以下のようなコードを実行します。
Add-AzureAccount $VMName = "DSCTEST2" $ServiceName = "OzawaDSCTEST2" $Subscription = Get-AzureSubscription | Out-GridView -OutputMode Single Select-AzureSubscription -SubscriptionName $Subscription.SubscriptionName -Current $StorageAccount = Get-AzureStorageAccount | Select Label | Out-GridView -OutputMode Single Get-AzureSubscription -SubscriptionName $Subscription.SubscriptionName | Set-AzureSubscription -CurrentStorageAccountName $StorageAccount.StorageAccountName Publish-AzureVMDscConfiguration -ConfigurationPath "C:examplesFourthCoffee.ps1" -ConfigurationArchivePath "C:examplesFourthCoffee.ps1.zip" Publish-AzureVMDscConfiguration "C:examplesFourthCoffee.ps1.zip" $VM = Get-AzureVM -Name $VMName -ServiceName $ServiceName $VM = Set-AzureVMDSCExtension -VM $vm -ConfigurationArchive "FourthCoffee.ps1.zip" -ConfigurationName "FourthCoffee" $VM | Update-AzureVM
今回は、Publish-AzureVMDsConfiguration で ?ConfigurationArchivePath を指定して ZIP を作成してから Azure ストレージにアップロードするという作業をしていますが、ArchivePath ではなくストレージのコンテナーを指定して一つのコマンドレットでアップロードをすることが可能です。
実行が終わると指定した仮想マシンに IIS が導入され、BakeryWebsite のアプリケーションがデプロイされます。
DSC の実行はゲストエージェントのプラグインとしてインストールされている [Microsoft.Powershell.DSC] により実行されます。
このフォルダ内の DSCWork に ZIP がダウンロードされ、プッシュ型の適用が使用され、処理が実行されているようです。
実行時のログについては、[C:WindowsAzureLogsPluginsMicrosoft.Powershell.DSC] の [DSCBOOT_script_xxxx.log] 等のログファイルに出力されているようですので、こちらを確認するとよさそうです。
DSC は勉強会やセミナーで教えていただいただけで自分では触れていなかったので、これから勉強しないといけないですね…。
[…] PowerShell DSC 拡張を使用した Azure の仮想マシンへの IIS 展開のメモ […]
Azure 仮想マシンとPowerShell DSCとか « ブチザッキ
8 9月 14 at 17:15