fbpx

Microsoft Azure Stack TP3 を構築してみた #AzureStack

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

Microsoft Azure Stack Technical Preview 3 (TP3)

Microsoft 社のハイブリッドクラウドプラットフォーム、Azure Stack の TP3 が公開されました。
https://azure.microsoft.com/ja-jp/overview/azure-stack/

TP3 のデプロイスクリプトは、ほぼ TP2 と同じです。しかしながら、低スペックのマシンに構築するには少し工夫する必要があります。本稿では、TP1, TP2 に引き続き、推奨スペックよりもかなり低いマシンに TP3 を構築してみます。

デプロイ準備

TP2 に引き続き、以下のスペックのマシンを使用します。

コンポーネント スペック
OS Disk 320GB
Data Disk 200GB × 1, 2TB × 2 (合計 3 つ)
CPU Single-Socket: 4 Logical Cores
Memory 32GB

デプロイの準備は TP2 と同じです。こちら を参考にしてください。

デプロイ

Hyper-V ホスト用のマシンに administrator でログオンし、以下のページから AzureStackDownloader.exe をダウンロードします。
https://azure.microsoft.com/ja-jp/overview/azure-stack/try/

AzureStackDownloader.exe を実行して、TP3 をダウンロードします。

MicrosoftAzureStackPOC.exe というファイルがダウンロードされるので、実行すると CloudBuilder.vhdx が得られます。これを C ドライブ直下に配置します。この VHD には Windows Server 2016 がインストールされており、これをネイティブブートすることにより Hyper-V のホスト OS とします。
デプロイ失敗などで最初から構築をやり直したい時のために、CloudBuilder.vhdx を D ドライブなどの別のボリュームにコピーしておくことを推奨します。

サポートファイルのダウンロードと実行

メモ帳などのテキストエディタを開き、以下のコードの PowerShell スクリプトファイルを作成し、適当なファイル名で保存します。

# Variables 
$Uri = 'https://raw.githubusercontent.com/Azure/AzureStack-Tools/master/Deployment/'
$LocalPath = 'c:\AzureStack_TP3_SupportFiles'
# Create folder
New-Item $LocalPath -type directory
# Download files
( 'BootMenuNoKVM.ps1', 'PrepareBootFromVHD.ps1', 'Unattend.xml', 'unattend_NoKVM.xml') | foreach { Invoke-WebRequest ($uri + $_) -OutFile ($LocalPath + '\' + $_) }

作成したスクリプトを実行します。C:\AzureStack_TP3_SupportFiles フォルダが作成され、その中にサポートファイルがダウンロードされます。
以下のようにサポートファイルの PrepareBootFromVHD.ps1 を実行することにより、上述の CloudBuilder.vhdx からネイティブブートさせる設定が自動で行われます。

PS C:> C:\AzureStack_TP3_SupportFiles\PrepareBootFromVHD.ps1 -CloudBuilderDiskPath C:\CloudBuilder.vhdx -ApplyUnattend

実行すると、administrator のパスワードの入力を求められるので、任意の値を指定します。
スクリプト実行後 OS が再起動され、CloudBuilder.vhdx の Windows Server 2016 がブートされます。先ほどの設定したパスワードを使用して administrator でログオンします。以後は、この Windows 上での作業となります。

低スペックマシンでもデプロイできるようにするための設定

TP2 と同じように、TP3 のデプロイスクリプトでもマシンスペックの検証が行われますので、これをパスできるように C:\CloudDeployment\Configuration\Roles\Infrastructure\BareMetal\OneNodeRole.xml を編集する必要があります。しかし、TP3 にはこのファイルが見当たりません。

TP3 では、デプロイスクリプトの C:\CloudDeployment\Setup\InstallAzureStackPOC.ps1 を実行すると、まず始めにブートストラップが実行され、自動デプロイの準備が行われます。このときに、上記の OneNodeRole.xml ファイルなどが作成されます。ただし、このままでは OneNodeRole.xml を編集する前にデプロイの処理が進んでしまい、マシンチェックでエラー終了してしまいます。
そこで、まずは以下のように手動で ブートストラップ スクリプトを実行し、OneNodeRole.xml を編集してから、改めて InstallAzureStackPOC.ps1 を実行します。

PS C:\> C:\CloudDeployment\Setup\BootstrapAzureStackDeployment.ps1 -NuGetManifestPath $env:SystemDrive\CloudDeployment\Setup\CloudBuilderNuGets.xml -NugetStorePath $env:SystemDrive\CloudDeployment\NuGetStore

C:\CloudDeployment\Configuration\Roles\Infrastructure\BareMetal\OneNodeRole.xml を開き、使用するホストマシンのスペックに合わせて ValidationRequirements の値を編集します。今回は、MinimumNumberOfCoresPerMachine を 1 に、MinimumPhysicalMemoryPerMachineGB を 32 に変更します。

<ValidationRequirements>
   <MinimumOperatingSystemVersion>10.0.14300</MinimumOperatingSystemVersion>
   <MinimumNumberOfCoresPerMachine>1</MinimumNumberOfCoresPerMachine>
   <MinimumPhysicalMemoryPerMachineGB>32</MinimumPhysicalMemoryPerMachineGB>
   <MinimumNumberOfAdaptersPerMachine>0</MinimumNumberOfAdaptersPerMachine>
   <MinimumAdapterSpeedBitsPerSecond>0</MinimumAdapterSpeedBitsPerSecond>
   <MinimumSizeOfDataDisksGB>135</MinimumSizeOfDataDisksGB>
   <MinimumSizeOfSystemDiskGB>180</MinimumSizeOfSystemDiskGB>
   <MinimumNumberOfDataDisksPerMachine>3</MinimumNumberOfDataDisksPerMachine>
   <MaximumNumberOfMissingDisksPerMachine>0</MaximumNumberOfMissingDisksPerMachine>
   <SizeComparisonTolerancePercentage>1</SizeComparisonTolerancePercentage>
 </ValidationRequirements>

続いて、デプロイ時に作成される各 VM のメモリサイズを変更します。
C:\CloudDeployment\Configuration\Roles\Fabric\VirtualMachines\OneNodeRole.xml を開き、各 Node 要素の StartUpMemoryBytes の値を変更します。TP3 では、システムで使用する VM が 15 個 作成されるようになったので、すべての VM を 2 GB に設定するとリソース不足になってしまいます。そこで、OS が Windows Server Core の VM を 1610612736 (1.5 GB) に、Windows Server Full (GUI) の VM を 2147483648 (2GB) に変更します。

Windows Server Core の例

<Node Name="[PREFIX]-DC01" Type="VirtualMachine" CpiClusterResourceId="[CPI_GUID]" StartUpMemoryBytes="1610612736" ProcessorCount="2" ...>
 <Vhds>
   <Vhd Path="WindowsServerCore.vhdx" Index="0" />
 </Vhds>

Windows Server Full の例

<Node Role="Gateway" Name="[PREFIX]-Gwy01" ProvisioningStatus="Complete" Type="VirtualMachine" Id="[CPI_GUID]" StartUpMemoryBytes="2147483648" ProcessorCount="4" ...>
 <Vhds>
   <Vhd Path="WindowsServerFull.vhdx" Index="0" />
 </Vhds>

デプロイスクリプト実行

後は、TP2 と同じように InstallAzureStackPOC.ps1 を実行します。
※TP3 から 認証として Active Directory Federation Services を選択できるようになりましたが、本稿ではこれまで通り Azure Active Directory を使用します。

PS C:\> C:\CloudDeployment\Setup\InstallAzureStackPOC.ps1

実行後に、各 Node 共通となる管理者パスワードの入力を求められるので、適当な値を指定します。
続いて、Azure AD 全体管理者のクレデンシャルを求められるので、「デプロイ準備」 で作成したアカウントを指定します。

これで、ひとまず作業は完了です。あとはデプロイ完了を待ちます。(数時間かかります)
デプロイ中に OS が再起動されますが、再起動後にデプロイの進捗を確認したい場合は、administrator ではなく、ドメインアカウントの azurestack\AzureStackAdmin でログオンします。パスワードは、InstallAzureStackPOC.ps1 を実行時に指定した管理者パスワードになります。

trial and error

TP2 と同じように、デプロイスクリプトは よく途中でエラー終了します。ログファイルも TP2 と同じ場所にあるので、どこでエラー終了したかを確認するには、こちら を参考にしてください。

エラーを解決し、デプロイスクリプトを再開するには -Rerun オプションを付けて実行します。

PS C:\> C:\CloudDeployment\Setup\InstallAzureStackPOC.ps1 -Rerun

または、以下のように Step 数を指定して、特定の場所から実行することもできます。
※ただし、オフィシャルサイトからこの記述はなくなっています。

Invoke-EceAction -RolePath Cloud -ActionType Deployment -Start 60.61.82 -End 60.61.82 -Verbose

この記事を書いている時点で、実はまだ構築には成功していません。エラーを解決をしても、また別のエラーが発生するといった状態ですので、やはり低スペックのマシンに無理やりデプロイするのは限界があるのかもしれません。。。引き続き、調査していきます。

参考文献

Deploy Azure Stack POC
https://docs.microsoft.com/en-us/azure/azure-stack/azure-stack-run-powershell-script

Microsoft Azure Stack troubleshooting
https://docs.microsoft.com/en-us/azure/azure-stack/azure-stack-troubleshooting

新規CTA