vm.gowatana.jp

NEOにほんごVMware(仮)

NSX-T Manager を PowerCLI でデプロイしてみる。

NSX-T Manager(nsx-unified-appliance)の OVA ファイルは、一般的には vSphere Client からデプロイします。しかし、デモ環境などで何度も再デプロイする場合には、PowerCLI などの CLI でデプロイできるようにしておくと便利かなと思います。

そこで、NSX-T 3.1 の nsx-unified-appliance OVA を、PowerCLI の Import-VApp コマンドレットでデプロイしてみます。

 

今回の内容です。

 

今回の構成

使用しているソフトウェアは下記です。

  • NSX-T 3.1.2(nsx-unified-appliance-3.1.2.0.0.17884005-le.ova)
  • vCenter Server 7.0 U2
  • PowerShell 5.1(Windows 10)
  • PowerCLI 12.4

 

デプロイする NSX Manager の設定は、以前の下記の投稿に近いものです。

 

PowerCLI での NSX Manager のデプロイ

 

デプロイ前の OVF パラメータ準備(Get-OvfConfiguration)

PowerCLI で、vCenter にログインしておきます。これは、Get-OvfConfiguration の実行前に必要です。

PowerCLI> Connect-VIServer -Force

 

デプロイ時の設定を入力しておくオブジェクトを、Get-OvfConfiguration コマンドレットで用意しておきます。

あらかじめ、OVA ファイルはローカルにダウンロードしてあります。
(ファイルのパスは C:\work\nsx-unified-appliance-3.1.2.0.0.17884005-le.ova)

PowerCLI> $ovf_config = Get-OvfConfiguration -Ovf C:\work\nsx-unified-appliance-3.1.2.0.0.17884005-le.ova

 

OVF パラメータは、大項目として4つに分けられています。

PowerCLI> $ovf_config

=================================================================
OvfConfiguration: nsx-unified-appliance-3.1.2.0.0.17884005-le.ova

   Properties:
   -----------
   Common
   DeploymentOption
   IpAssignment
   NetworkMapping
   

 

NSX-T ならではのパラメータは、Common 配下にあります。

PowerCLI> $ovf_config.Common

nsx_passwd_0           :
nsx_cli_passwd_0       :
nsx_cli_audit_passwd_0 :
nsx_cli_username       :
nsx_cli_audit_username :
extraPara              :
nsx_hostname           :
nsx_role               :
nsx_ip_0               :
nsx_netmask_0          :
nsx_gateway_0          :
nsx_dns1_0             :
nsx_domain_0           :
nsx_ntp_0              :
nsx_isSSHEnabled       :
nsx_allowSSHRootLogin  :
nsx_swIntegrityCheck   :
mpIp                   :
mpToken                :
mpThumbprint           :
mpNodeId               :
mpClusterId            :

 

パラメータの用途が不明な場合は、配下の Description を確認します。たとえば、nsx_passwd_0 であれば、下記のように root ユーザのパスワードだと分かります。

PowerCLI> $ovf_config.Common.nsx_passwd_0

Key                : nsx_passwd_0
Value              :
DefaultValue       :
OvfTypeDescription : password(12..)
Description        : The password for root user for this VM.
                     Please follow the password complexity rule as below:
                         - minimum of 12 characters in length
                         - >=1 uppercase character
                         - >=1 lowercase character
                         - >=1 numeric character
                         - >=1 special character
                         - >=5 unique characters
                         - default password complexity rules as enforced by the Linux PAM module
                         NOTE: Password strength validation will occur during VM boot.  If the password does not meet the above criteria th
                     en login as root user for the change password prompt to appear.

 

設定値は、Value に代入します。特に設定しなかった場合は、DefaultValue の値が利用されます。

PowerCLI> $ovf_config.Common.nsx_passwd_0.Value = "VMware1!VMware1!"

 

vSphere Client からデプロイした際に指定していた OVF パラメータを、ひととおり設定しておきます。

今回は、下記のように設定します。ここではプロンプト(PowerCLI>)は省略しています。

$ovf_config.DeploymentOption.Value = "small"
$ovf_config.NetworkMapping.Network_1.Value = "dvpg-0010-mgmt"
$ovf_config.Common.nsx_cli_passwd_0.Value = "VMware1!VMware1!"
$ovf_config.Common.nsx_passwd_0.Value = "VMware1!VMware1!"
$ovf_config.Common.nsx_hostname.Value = "lab-nsx-21"
$ovf_config.Common.nsx_ip_0.Value ="192.168.10.25"
$ovf_config.Common.nsx_netmask_0.Value ="255.255.255.0"
$ovf_config.Common.nsx_gateway_0.Value ="192.168.10.1"
$ovf_config.Common.nsx_dns1_0.Value ="192.168.1.101 192.168.1.102"
$ovf_config.Common.nsx_domain_0.Value = "go-lab.jp"
$ovf_config.Common.nsx_ntp_0.Value = "192.168.1.101 192.168.1.102"
$ovf_config.Common.nsx_isSSHEnabled.Value = $true
$ovf_config.Common.nsx_allowSSHRootLogin.Value = $true

 

OVA デプロイの実行(Import-VApp)

Import-VApp コマンドレットで、OVA ファイルをデプロイします。

VM の名前や、デプロイ先のクラスタ(リソース プール)、ESXi、データストアなどは、OVF パラメータではなく、Import-VApp のオプションとして指定します。

たとえば、下記のようにオプションを指定します。

  • VM の名前は「lab-nsx-21」にしています。
  • InventoryLocation では、仮想マシン フォルダ を指定しています。
  • Location では、クラスタかリソース プールを指定します。
  • VMHost では、ESXi ホストを指定しています。infra-cluster-01 クラスタから、ランダムにホストを指定しています。
    ホスト指定は省略できそうですが、ここでホストを指定しないとなぜかデータストア選択がうまくできなかったり・・・
  • 各行末の「`」は、PowerShell のコマンドライン内での改行です。
Import-VApp -Name "lab-nsx-21" `
-OvfConfiguration $ovf_config `
-Source $ovf_config.Source `
-InventoryLocation (Get-Folder -Type VM "vm_lab-vc-02") `
-Location (Get-Cluster "infra-cluster-01" | Get-ResourcePool "rp-03-lab") `
-VMHost (Get-Cluster "infra-cluster-01" | Get-VMHost | Get-Random) `
-Datastore "vsanDatastore" -StorageFormat Thin

 

これで OVA ファイルのデプロイが開始されます。デプロイが完了したら、手動でパワーオンすると、NSX Manager の Web UI にアクセスできるようになるはずです。

ちなみに、ESXi のリソース不足などで NSX Manager のサービスが起動できなかったりすることがあります。その場合は、不要な VM を停止して再デプロイするとうまくいくことが多いかなと思います。

PowerCLI> Get-VM "lab-nsx-02" | Start-VM

 

自宅ラボ用の設定

NSX Manager には、本番環境むけのリソース予約設定などがデフォルトで設定されています。

私の自宅ラボでは、下記のように設定緩和して利用しています。

 

CPU とメモリのリソース予約を解除

PowerCLI> Get-VM "lab-nsx-21" | Get-VMResourceConfiguration | Set-VMResourceConfiguration -MemReservationGB 0 -CpuReservationMhz 0

 

スナップショットを取得可能に変更(スナップショット最大数を、デフォルトのゼロから任意の値に変更)

PowerCLI> Get-VM lab-nsx-21 | Get-AdvancedSetting -Name snapshot.maxSnapshots | Set-AdvancedSetting -Value 5 -Confirm:$false

 

再デプロイにむけた工夫

成功実績ができたコマンドは、下記のように .ps1 ファイルとして残しておくと、再構築時に便利かなと思います。

gist.github.com

 

デプロイ先の vSphere 環境で構成変更がなければ、下記のようにNSX Manager を再デプロイできるはずです。

PowerCLI> Connect-VIServer -Force
PowerCLI> ./deploy_nsxt_manager_lab-nsx-21.ps1

 

以上、PowerCLI で NSX-T Manager をデプロイする話でした。