ネタ: Azure Stack on Azure (失敗)

というわけで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本作って接続するとかもありかもしれない)
image

あとはメモリが最低でも96GB、いろいろ考えると256GB欲しいということなので今回はE32s-v3を選択しときます。
準備ができたら起動しましょう。(VM代が大変なので時間との勝負が始まります)

最初にデータ用ディスクをオフラインにします。
image

仮想マシンの新規作成でメモリ割り当てをよしなに(204800MBとか)、データディスクはパススルーディスクとして4本追加します。あ、あとでプロセッサー数も増やしておきましょうね。
image
あと嵌りどころとしては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が動かせられる環境かどうかチェックするスクリプトがあるので参考までに動かしてみましょう。

imageimage

Nested Virtualization上でのシナリオは想定してないしパフォーマンスとかしらんで、という警告ぐらいで大丈夫そうですね(?)

Azure Stackの下準備

基本的にはこちらの手順に従います。

Download the deployment packageのページからAzure Stack Development Kitをダウンロードして実行します。
image
保存先を指定してDownloadをクリックすればダウンロードが開始されます。完了したらRunで実行します。
15d3fe8c3f7961868a4aa8ea15d3ffa49b7b5aaba7530cad

イメージ解凍ツールが実行されるので、保存先を指定して実行します。実行後、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')

image

取得した asdk-installer.ps1 を実行します。ウィンドウが表示されるのでPrepare Environmentを選択し、CloudBuilder.vhdxを指定します。オプション構成はよしなに。
imageimageimageimageimage

最後のReboot Nowで再起動します。この時点でブートローダーにAzure Stack用(CloudBuilder.vhdx)が追加されてます。
image

起動したらやっとデプロイの準備が完了です。

Azure Stack (Development Kit)のデプロイ

再度asdk-installer.ps1を実行してInstallを選択します。Identity Providerの指定は自分の環境にあったものにします。(今回はAzure Cloudを選択)
imageimage
次にネットワークアダプタを選択します。ネットワークの構成はAzure VM側でDHCPの構成ができてるのでDHCPにしました。
imageimage

最後にDeployボタンをクリックして展開を開始します。
imageimage

※で進むかと思いきやDeployボタンクリックしても音沙汰ないのでしょうがなしに最後の画面で表示されているスクリプトをコピペして(パスワードの閉じシングルクォートのつぎにスペースがなかったのであけて)実行したら進みだしたもよう。

※たぶん時刻同期のせい(?)。

しばらくするとIdentity ProviderでAzure Cloud選んだ場合、Azure ADテナントの管理者アカウントの認証を求められますので入力して認証します。

後は頑張って処理が続くのでひたすら待ちます。
image

※うるしませんせーの秘伝のタレも使いつつ。

結果

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は普通にできました。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中