アレンでTruenasアプライアンスを作成する


導入


最近、私はいくつかのIXシステムNAS機器とそのプラットフォーム、Truenas、と私の興味を摘発して再生する機会を持っている.私が展開ドキュメントのいくつかをスキャンしている間、AWSに配備する命令がありましたが、Azureには何もありませんでした.私はサポートをチェックし、彼らは技術的な制限がないと述べた、彼らはまだそれを証明することに取り組んでいない.それは私がAzureでこの作品を作る方法について考えさせました.

ゴール


私は、私がAzureでTruenas器具を作ることができるかどうか見るために、私自身でそれをとりました.私はAzureのためにカスタムメイドのイメージを作成しなかったか、本当にHyv - Vを使っている多くの時間を費やしました.このポストは、私のプロセスと結果を詳細に示します.私は、あなたが私の旅と結果が役に立つとわかることを望みます.

ジャーニー


最初に、私は既存のVMware OVAイメージを変えて、Azureで働くためにそれを得ることに関する若干の研究をしました.いくつかの試みの後、それがそうである必要があるより複雑であることは、かなり明らかになりました.
次に、VeWare環境からAzureにTruenas仮想マシンをリストアして、Veamをバックアップに使用しました.これはうまくいきました、そして、私はOSに接続することができて、プールを構成することができました.
私は、変換を簡素化するためにTruenas HyperV - Vイメージをつくって、Azureで使われることができるディスクイメージに、ハイパーV仮想ディスクを変えることができました.私はディスクをアップロードし、その周りに仮想マシンを構築しました.その後、VMwareイメージに展開します.
これは、私が一緒に抱き合ったスクリプトに基づく若干の配備問題を提示しました.スクリプトが実行され、VMを作成し、エラーメッセージをスローする前に25分待ちます.私はしばらくそれに取り組んだが、解決策を見つけることができなかったので、私は私のプロセスを少し簡略化しました.
今回はHyper - V仮想マシンから作成された仮想ディスクを取りました.ディスクをクローンしたイメージを作成することについて心配するのではなく、すでに私の既存のテナントにPowerShellスクリプトを使ってVMを作成しました.私は今、私のベースディスクで簡単にAzureの基本的なTruenas仮想マシンを作成することができます.
私はもともとTenenas 12で私のハイパーVイメージを作成しました.FreeBSDで構築されたXコアソフトウェア.私はFreeBSD(私のほとんどはUnixで働いている私自身の制限)に出くわしたいくつかの問題がありました.
このコードは現在「アルファ」であってもAzure Linux Agent 最初のリリース(20.10 - alpha)で.ビルドが迅速に進行している今、waagentは20.12アルファコードに含まれています.

挑戦


ハイパーV仮想ディスクをAzureにアップロードすることは、私が予想したよりずっと難しいです.私が持っていたより大きな問題の1つは、Azureに仮想ディスクをアップロードしていました.
Azureにアップロードされる仮想ディスクは、以下の特徴を必要としますConvert the virtual disk to a fixed size VHD ) :
  • Azureのディスクは、1つのMIBに整列した仮想サイズを持たなければなりません
  • ディスク「サイズ」は1 MIBとディスクの倍数でなければなりません
  • 最大のサイズは、OS
  • データVHDの最大サイズは
  • 私もより多くの毎月のコストが発生しているので、AzureでOSディスクを小さくしたいと思った.適切なサイズのVHDファイルを作成するには、次の手順を実行します
  • 28ギガバイトOS (ダイナミック)ディスクを搭載したHyperV仮想マシンの作成
  • Hyper - VのGUIで固定ディスクに変換しました.
  •    Convert-VHD .\TrueNAS.vhdx D:\Azure\TrueNAS00.vhd -VHDType fixed
    
  • VMを31 GBにリサイズしました(どんなサイズでも、私はそれを小さくしておきました.
  •    Resize-VHD .\TrueNAS00.vhd -SizeBytes 31GB
    
  • それが1 MIBの派閥につながるので、私は1024
  •    Resize-VHD .\TrueNAS00.vhd -SizeBytes 33285996544
    
  • それが1 MIBの派閥につながるので、私は1024
  • ここでresizeコマンドとget vhdコマンドの出力はどのように見えます.

    ご覧の通り、サイズはバイト単位で表示されます.これがAzureにアップロードされることができる有効なVHDであるために、1 MIB(1 MIB = 1048576バイト)によって割り切れる必要があります.

    33285996544 bytes / 1048576 bytes = 31,744 bytes = 31 GiB


    結果が全体の数でないならば、我々はVHDをリサイズする必要があります.この場合、それは有効なVHDであるように、それは全部である.ここで、PowerShellまたはAzureストレージエクスプローラーを使用して、VHDを管理ディスクとして選択したリソースグループにアップロードできます.

    VMの作成


    仮想マシンを作成するのは比較的まっすぐです.私はマイクロソフトドキュメントとPowerShellの例を使用して、以下のスクリプトを作成するためにオンラインで見つけました.
    これが私のスクリプトですCreate TrueNAS VM from uploaded VHD.ps1
    あなた自身のVHDを作成するプロセスを通過したくない場合は、私の使用することができます.資格情報はroot/truenas
    私のTruenasスケールイメージ:TrueNAS00.vhd
    # Create TrueNAS VM from uploaded VHD
    #
    # Assumptions: 
    # You have the following resources created:
    #  -Resourcegroup
    #  -Virtual network w/subnet
    #  -Virtual network gateway deployed and VPN tunnel created (if on-prem access is desired)
    #
    # Step 1: Upload the VHD to your subscription as a managed disk (not into a storage account). I used Azure Storage Explorer for this task. 
    #
    # Step 2: Fill in your information and copy and paste this into Cloud Shell or Azure PowerShell. It will prompt you to enter credentials, but they do not actually apply to the OS so they will not be used.
    #
    # Step 3: Wait for the VM to be created. You should not have to wait for the progress bar to complete as it not recognizing that the resources have been created. It will eventually timeout and throw an error.
    #
    # Step 4: Modify or delete the inbound NSG rule allowing HTTPS depending on your security requirements.
    #
    # Step 5: Connect to TrueNAS server via the "internal" IP address and configure to your needs.
    #
    # ---------------------------------------------------------------------------------------------------------------------------------------------------
    #
    # Setting the table
    
    $vmName = "TN-Test01"
    $vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_B2ms"
    
    $rgname = "Lab_RG"
    $vnetName = "lab-ncus-vnet"
    $location = "northcentralus"
    
    # Name of your uploaded managed disk
    $osDiskName = "TrueNAS01"
    
    $vnet = Get-azvirtualnetwork -Name $vnetName
    
    $nicName = $vmName+"-nic"
    $nic = New-AzNetworkInterface -Name $nicName `
        -ResourceGroupName $rgname `
        -Location $location -SubnetId $vnet.Subnets[0].Id `
    
    $osDisk = Get-AzDisk -Name $osDiskName
    
    $vm = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
    
    $vm = Set-AzVMOSDisk -VM $vm -ManagedDiskId $osDisk.Id -StorageAccountType Standard_LRS `
        -DiskSizeInGB 32 -CreateOption Attach -Linux
    
    New-AzVM -ResourceGroupName $rgname -Location $location -VM $vm
    
    VMを作成するには、Visual Studioコードを使用してPowerShellスクリプトを編集して実行します.

    スクリプトが正常に実行され、我々が見ることができるように、それが定義した属性を持つVMを作成しました.

    ここから、追加のデータを追加したり、ストレージプールを作成するディスクをキャッシュすることができます.その後、管理インターフェイスとログインして、TrueNASアプライアンスの設定を設定するには、VMを作成したときに定義された資格情報を使用して設定します.

    包む


    このプロジェクトは、私がPowerShellとAzureで私の技術をシャープにすることを要求しました.私は確かに何度も挫折しました、しかし、私はそれを通して働くことができました.将来的には、私のスクリプトにデータディスクを追加し、自分のストレージアカウントから直接VHDを自分のリソースグループにコピーすることができます私のスクリプトに追加したいと思いますが、それは私はAzureで基本的なtruenasアプライアンスを作成することができる私の目標を達成した.
    使い慣れた/学んだ:
  • PowerShellを使用した仮想マシンの作成
  • HyperVにおける仮想マシンの生成
  • ハイパーV仮想ディスクの変換とアップロードAzure Storage Explorer
  • UNIX/Linuxコマンド
  • PowerShellでAzureに仮想マシンを作る
  • GithubとVisual Studioコードの使用
  • リンク
  • TrueNAS.com
  • Install FreeNAS in Hyper-V: Part 1 Basic Configuration (servethehome.com)