というわけでNested VirtualizationもAzureに来たことだし、Azure StackをAzure上に作ってみたいと思います。
※パフォーマンスとか度外視です。あくまでネタなので。何かあっても責任取りませんのであしからず。
※基本的に上から順番にすればいいですが課金を考えて効率よく手順多少前後してもいいかと思います。(する人なんていないでしょうけど)
下準備
まずAzure上にEv3かDv3なVMをWindows Server 2016で立ち上げます。(最初のうちはE2sv3とかでいいです)
立ち上がったらHyper-Vの機能をインストールしましょう。(OSディスクはAzure Stack用のホストを動かすので必要要件より大きめにとっておきましょう(起動後拡張するなりしましょう)。
後はインターネットへ接続する設定として
を参考にInternalな仮想スイッチやNATネットワーク、DHCPサーバーなどをインストール・構成しておきます。
Azure VMの設定
さてAzure StackのベースとなるAzure VM(言い回しがややこしい。Lv1のVM)の構成をAzure Stack環境向けに整えておきましょう。Azure Stackの要件的には以下の内容を満たしておく必要があります。
Azure VMをポータルから停止してから、Azure Stack用に物理扱いのディスクが4本必要なのでAzureのデータディスクを4本作成後、Azure VM上のHyper-Vの仮想マシンに設定する際にパススルーディスクにすることにします。(別にでかいデータディスク追加してAzure VM上でVHDXにしてもいいけど ※パフォーマンス考えてもしょうがないけどデータディスク沢山束ねて1本のディスクにしたあとVHDXを4本作って接続するとかもありかもしれない)
あとはメモリが最低でも96GB、いろいろ考えると256GB欲しいということなので今回はE32s-v3を選択しときます。
準備ができたら起動しましょう。(VM代が大変なので時間との勝負が始まります)
仮想マシンの新規作成でメモリ割り当てをよしなに(204800MBとか)、データディスクはパススルーディスクとして4本追加します。あ、あとでプロセッサー数も増やしておきましょうね。
あと嵌りどころとしてはVMの統合サービスの時刻同期はオフにしましょう。(ホストとの時刻同期を取ろうとしてAzure Stackのデプロイが止まる気がします)
またこのVM(Azure Stackのホスト)がHyper-Vホストとして動くように Set-VMProcessorでNested Virtualizationを有効化しておきます。
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
あとはWindows Server 2016の評価版ISOでとりあえず起動させてインストールします。(後でAzure Stack用のイメージでブートすることになると思うので適当に)※ISOのダウンロードなどは後述のAzure Stackの下準備編をやって取得しても構いません(CloudBuilder.vhdxをHyper-VゲストのOSディスク扱いのところなりに直接マウントして放り込んだりしてもいいと思います。まぁよしなにしてください)
起動したら、このAzure VM上のHyper-VゲストがAzure Stackのホスト扱いの環境になります。Azure Stackが動かせられる環境かどうかチェックするスクリプトがあるので参考までに動かしてみましょう。
Nested Virtualization上でのシナリオは想定してないしパフォーマンスとかしらんで、という警告ぐらいで大丈夫そうですね(?)
Azure Stackの下準備
基本的にはこちらの手順に従います。
Download the deployment packageのページからAzure Stack Development Kitをダウンロードして実行します。
保存先を指定してDownloadをクリックすればダウンロードが開始されます。完了したらRunで実行します。
イメージ解凍ツールが実行されるので、保存先を指定して実行します。実行後、exeとbinファイルは消してもOKです。最終的にCloudBuilder.vhdxが必要になります。Cドライブ直下とかにコピーしておきましょう。それからインストール用スクリプトをダウンロードするPowerShellコマンドを実行します。
# Variables $Uri = 'https://raw.githubusercontent.com/Azure/AzureStack-Tools/master/Deployment/asdk-installer.ps1' $LocalPath = 'c:\AzureStack_Installer' # Create folder New-Item $LocalPath -Type directory # Download file Invoke-WebRequest $uri -OutFile ($LocalPath + '\' + 'asdk-installer.ps1')
取得した asdk-installer.ps1 を実行します。ウィンドウが表示されるのでPrepare Environmentを選択し、CloudBuilder.vhdxを指定します。オプション構成はよしなに。
最後のReboot Nowで再起動します。この時点でブートローダーにAzure Stack用(CloudBuilder.vhdx)が追加されてます。
起動したらやっとデプロイの準備が完了です。
Azure Stack (Development Kit)のデプロイ
再度asdk-installer.ps1を実行してInstallを選択します。Identity Providerの指定は自分の環境にあったものにします。(今回はAzure Cloudを選択)
次にネットワークアダプタを選択します。ネットワークの構成はAzure VM側でDHCPの構成ができてるのでDHCPにしました。
※で進むかと思いきやDeployボタンクリックしても音沙汰ないのでしょうがなしに最後の画面で表示されているスクリプトをコピペして(パスワードの閉じシングルクォートのつぎにスペースがなかったのであけて)実行したら進みだしたもよう。
※たぶん時刻同期のせい(?)。
しばらくするとIdentity ProviderでAzure Cloud選んだ場合、Azure ADテナントの管理者アカウントの認証を求められますので入力して認証します。
※うるしませんせーの秘伝のタレも使いつつ。
結果
Stack用のADドメインコントローラーが入ったころぐらいまではいけたけど、途中でこけてました。残念。
WARNING: Task: Invocation of interface 'Deployment' of role 'Cloud\Infrastructure\Storage' failed: Type 'Deployment' of Role 'Storage' raised an exception: Static address '192.168.200.66' was not found on any cluster network. at New-MasCluster, C:\CloudDeployment\Classes\Storage\StorageHelpers.psm1: line 160 at Deployment, C:\CloudDeployment\Classes\Storage\Storage.psm1: line 172 at <ScriptBlock>, <No file>: line 18 at <ScriptBlock>, <No file>: line 16 - 7/14/2017 9:15:31 PM Invoke-EceAction : Static address '192.168.200.66' was not found on any cluster network. At C:\CloudDeployment\Setup\DeploySingleNode.ps1:579 char:5 + Invoke-EceAction -RolePath $masterRole -ActionType $actionPlan @d ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-EceAction], Exception + FullyQualifiedErrorId : PSArgument,Microsoft.FailoverClusters.PowerShell.NewClusterCommand,CloudEngine.Cmdlets.InvokeCmdlet VERBOSE: Step: Status of step 'PhysicalMachineAndInitialConfiguration.20 - (STO) Configure Storage Cluster' is 'Error'. - 7/14/2017 9:15:31 PM VERBOSE: Checking if any of the in progress steps are complete. The following steps are currently in progress: 'PhysicalMachineAndInitialConfiguration.20'. - 7/14/2017 9:15:31 PM VERBOSE: Action: Action plan 'Deployment-Phase0-DeployBareMetalAndBGPAndNAT' failed. Finish running all steps that are currently in progress before exiting. - 7/14/2017 9:15:31 PM VERBOSE: Draining all steps that are still in progress. The following steps are still in progress or just completed: 'PhysicalMachineAndInitialConfiguration.20'. - 7/14/2017 9:15:31 PM VERBOSE: Action: Action plan 'Deployment-Phase0-DeployBareMetalAndBGPAndNAT' failed. - 7/14/2017 9:15:31 PM Invoke-EceAction : Action: Invocation of step PhysicalMachineAndInitialConfiguration.20 failed. Stopping invocation of action plan. - 7/14/2017 9:15:31 PM At C:\CloudDeployment\Setup\DeploySingleNode.ps1:579 char:5 + Invoke-EceAction -RolePath $masterRole -ActionType $actionPlan @d ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-EceAction], Exception + FullyQualifiedErrorId : Unspecified error,CloudEngine.Cmdlets.InvokeCmdlet VERBOSE: Action: Status of 'Deployment-Phase0-DeployBareMetalAndBGPAndNAT' is 'Error'. - 7/14/2017 9:15:31 PM COMPLETE: Task Cloud - Deployment-Phase0-DeployBareMetalAndBGPAndNAT VERBOSE: Task: Status of action 'Deployment-Phase0-DeployBareMetalAndBGPAndNAT' of role 'Cloud' is 'Error'. - 7/14/2017 9:15:31 PM VERBOSE: Step: Status of step 'PhysicalMachineAndInitialConfiguration - Phase 0 - Configure physical machine and external networking' is 'Error'. - 7/14/2017 9:15:31 PM VERBOSE: Checking if any of the in progress steps are complete. The following steps are currently in progress: 'PhysicalMachineAndInitialConfiguration'. - 7/14/2017 9:15:31 PM VERBOSE: Action: Action plan 'Deployment' failed. Finish running all steps that are currently in progress before exiting. - 7/14/2017 9:15:31 PM VERBOSE: Draining all steps that are still in progress. The following steps are still in progress or just completed: 'PhysicalMachineAndInitialConfiguration'. - 7/14/2017 9:15:31 PM VERBOSE: Action: Action plan 'Deployment' failed. - 7/14/2017 9:15:31 PM Invoke-EceAction : Action: Invocation of step PhysicalMachineAndInitialConfiguration failed. Stopping invocation of action plan. - 7/14/2017 9:15:31 PM At C:\CloudDeployment\Setup\DeploySingleNode.ps1:579 char:5 + Invoke-EceAction -RolePath $masterRole -ActionType $actionPlan @d ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-EceAction], Exception + FullyQualifiedErrorId : Unspecified error,CloudEngine.Cmdlets.InvokeCmdlet
あと c:\cloudhoge\setup\installhogePOC.ps1 –rerun をすると展開の再実行ができるようです。
とりあえずNested Virtualizationは普通にできました。