CLI から ovftool で仮想版 Nexus Dashboard をデプロイする
仮想版のソフトウェア (OVA ファイル) を vSphere 上にデプロイするには Web UI を用いることが多いと思います。 Web UI ではパラメータを対話的に指定する必要がありますが、CLI であれば「予めパラメータは用意しておき、デプロイ時はコマンドを実行するだけ」と作業を簡素化することが出来ます。 今回は Cisco Nexus Dashboard を例に、vSphere 上に CLI からデプロイする方法をメモしておきます。
検証環境¶
| 対象 | バージョン |
|---|---|
| Ubuntu | 22.04.4LTS |
| Nexus Dashboard | 3.1.1k |
| ovftool | 4.6.0 (build-21452615) |
CLI からのデプロイ¶
以下のパラメータでデプロイするものとします。 ディスクモードにはシックプロビジョニング (Thick Provisioning) を指定しています。 ディスクモードの種類は 仮想ディスクのプロビジョニング ポリシーについて を参照します。
| 項目 | 値 |
|---|---|
| 仮想マシン名 | NexusDashboard |
| データストア | datastore1 |
| ディスクモード | シックプロビジョニング |
| 管理ネットワーク | VM Network |
| データネットワーク | VM Network |
| レスキュー用パスワード | NDPASSWORD |
| 管理用アドレス | 10.0.0.1/24 |
| 管理用ゲートウェイ | 10.0.0.254 |
| vCenter ユーザ名 | administrator@vsphere.local |
| vCenter パスワード | VCSAPASSWORD |
| vCenter アドレス | 10.0.0.100 |
| デプロイ先 ESXi アドレス | 10.0.0.101 |
この場合、ovftool に指定するオプション例は以下の通りです。 vApp としてのプロパティ (下記での --prop 部分) を指定する場合は --allowExtraConfig を指定する必要があります。 --allowExtraConfig オプションが無い、--proc が指定されていても無視されます)。
ovftool \
--allowExtraConfig \
--noSSLVerify \
--name='NexusDashboard' \
--datastore=datastore1 \
--diskMode=thick \
--net:'mgmt0'='VM Network' \
--net:'fabric0'='VM Network' \
--prop:com.cisco.acisn.adminPassword='NDPASSWORD' \
--prop:com.cisco.acisn.mgmt_ip='10.0.0.1/24' \
--prop:com.cisco.acisn.gw_ip='10.0.0.254' \
./nd-dk9.3.1.1k.ova \
vi://"administrator@vsphere.local":"VCSAPASSWORD"@10.0.0.100/?ip=10.0.0.101
Nexus Dashboard を電源オンすると初期化が始まります。 初期化には数分かかります。 コンソールの表示が下記のようになればログイン可能です。

ovftool から --prop:com.cisco.acisn.mgmt_ip として指定した IP アドレスが表示されているはずですので、Web ブラウザでこの IP アドレスへアクセスします。

Web UI からのデプロイ¶
Web UI からデプロイする際、Nexus Dashboard 特有の部分をメモしておきます。
1.詳細の確認¶

2.設定¶

3.ストレージの選択¶

4.ネットワークの選択¶

5.テンプレートのカスタマイズ¶
テンプレートの値は必須です。 未入力のままでは次へ進めません。

適切な値を入力していれば次へ進めます。

6.設定の確認¶

参考¶
nd-dk9.3.1.1k.ova に含まれるファイル (抜粋)¶
SHA256(apic-sn.ovf)= c4dd6792a9ab623000ff37d2e72f65541264d22f1e90ff77aab185dd2acc8337
SHA256(apic-sn-disk1.vmdk)= 8c1c44120e31c3d7fbc89d10dda6fcbb48fd1db62458283e3f677ca34291c1d7
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<References>
<File ovf:href="apic-sn-disk1.vmdk" ovf:id="file1" ovf:size="11818931712"/>
</References>
<DiskSection>
<Info>Virtual disk information</Info>
<Disk ovf:capacity="45" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="osdisk" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="0"/>
<Disk ovf:capacity="${dataDiskSizeApp}" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="datadiskapp" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="0"/>
<Disk ovf:capacity="${dataDiskSizeData}" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="datadiskdata" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="0"/>
</DiskSection>
<DeploymentOptionSection>
<Info>Deployment Profile information</Info>
<Configuration ovf:id="App">
<Label>App</Label>
<Description>Use this deployment profile to configure an App OVA with 16 vCPUs, 64 GB RAM, and 500 GB Disk.</Description>
</Configuration>
<Configuration ovf:id="Data">
<Label>Data</Label>
<Description>Use this deployment profile to configure a Data OVA with 32 vCPUs, 128 GB RAM, and 3 TB SSD Disk. This profile is required for the NI and NDFC SAN Insights applications.</Description>
</Configuration>
</DeploymentOptionSection>
<NetworkSection>
<Info>The list of logical networks</Info>
<Network ovf:name="mgmt0">
<Description>Management Network Interface</Description>
</Network>
<Network ovf:name="fabric0">
<Description>Fabric Network Interface</Description>
</Network>
</NetworkSection>
<VirtualSystem ovf:id="apic-sn">
<Info>A virtual machine</Info>
<Name>apic-sn</Name>
<OperatingSystemSection ovf:id="94" vmw:osType="linux64Guest">
<Info>The kind of installed guest operating system</Info>
<Description>Linux (64-bit)</Description>
</OperatingSystemSection>
<VirtualHardwareSection ovf:transport="com.vmware.guestInfo">
<Info>Virtual hardware requirements</Info>
<System>
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
<vssd:InstanceID>0</vssd:InstanceID>
<vssd:VirtualSystemIdentifier>apic-sn</vssd:VirtualSystemIdentifier>
<vssd:VirtualSystemType>vmx-10</vssd:VirtualSystemType>
</System>
<Item ovf:configuration="App">
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
<rasd:Description>Number of Virtual CPUs</rasd:Description>
<rasd:ElementName>16 virtual CPU(s)</rasd:ElementName>
<rasd:InstanceID>1</rasd:InstanceID>
<rasd:Reservation>12000</rasd:Reservation>
<rasd:ResourceType>3</rasd:ResourceType>
<rasd:VirtualQuantity>16</rasd:VirtualQuantity>
</Item>
<Item ovf:configuration="Data">
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
<rasd:Description>Number of Virtual CPUs</rasd:Description>
<rasd:ElementName>32 virtual CPU(s)</rasd:ElementName>
<rasd:InstanceID>1</rasd:InstanceID>
<rasd:Reservation>12000</rasd:Reservation>
<rasd:ResourceType>3</rasd:ResourceType>
<rasd:VirtualQuantity>32</rasd:VirtualQuantity>
</Item>
<Item ovf:configuration="App">
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:Description>Memory Size</rasd:Description>
<rasd:ElementName>64GB of memory</rasd:ElementName>
<rasd:InstanceID>2</rasd:InstanceID>
<rasd:Reservation>65536</rasd:Reservation>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>65536</rasd:VirtualQuantity>
</Item>
<Item ovf:configuration="Data">
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:Description>Memory Size</rasd:Description>
<rasd:ElementName>128GB of memory</rasd:ElementName>
<rasd:InstanceID>2</rasd:InstanceID>
<rasd:Reservation>65536</rasd:Reservation>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>131072</rasd:VirtualQuantity>
</Item>
<Item>
<rasd:Address>0</rasd:Address>
<rasd:Description>SCSI Controller</rasd:Description>
<rasd:ElementName>SCSI controller 0</rasd:ElementName>
<rasd:InstanceID>3</rasd:InstanceID>
<rasd:ResourceSubType>VirtualSCSI</rasd:ResourceSubType>
<rasd:ResourceType>6</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="slotInfo.pciSlotNumber" vmw:value="1184"/>
</Item>
<Item>
<rasd:Address>1</rasd:Address>
<rasd:Description>IDE Controller</rasd:Description>
<rasd:ElementName>IDE 1</rasd:ElementName>
<rasd:InstanceID>4</rasd:InstanceID>
<rasd:ResourceType>5</rasd:ResourceType>
</Item>
<Item>
<rasd:Address>0</rasd:Address>
<rasd:Description>IDE Controller</rasd:Description>
<rasd:ElementName>IDE 0</rasd:ElementName>
<rasd:InstanceID>5</rasd:InstanceID>
<rasd:ResourceType>5</rasd:ResourceType>
</Item>
<Item ovf:required="false">
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
<rasd:ElementName>Video card</rasd:ElementName>
<rasd:InstanceID>6</rasd:InstanceID>
<rasd:ResourceType>24</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="enable3DSupport" vmw:value="false" />
<vmw:Config ovf:required="false" vmw:key="enableMPTSupport" vmw:value="false"/>
<vmw:Config ovf:required="false" vmw:key="use3dRenderer" vmw:value="automatic" />
<vmw:Config ovf:required="false" vmw:key="useAutoDetect" vmw:value="false" />
<vmw:Config ovf:required="false" vmw:key="videoRamSizeInKB" vmw:value="4096" />
</Item>
<Item ovf:required="false">
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
<rasd:ElementName>VMCI device</rasd:ElementName>
<rasd:InstanceID>7</rasd:InstanceID>
<rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType>
<rasd:ResourceType>1</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="allowUnrestrictedCommunication" vmw:value="false" />
</Item>
<Item ovf:required="false">
<rasd:AddressOnParent>0</rasd:AddressOnParent>
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
<rasd:ElementName>CD/DVD drive 1</rasd:ElementName>
<rasd:InstanceID>8</rasd:InstanceID>
<rasd:Parent>4</rasd:Parent>
<rasd:ResourceSubType>vmware.cdrom.remotepassthrough</rasd:ResourceSubType>
<rasd:ResourceType>15</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="backing.exclusive" vmw:value="false"/>
</Item>
<Item>
<rasd:AddressOnParent>0</rasd:AddressOnParent>
<rasd:ElementName>OS disk</rasd:ElementName>
<rasd:HostResource>ovf:/disk/osdisk</rasd:HostResource>
<rasd:InstanceID>9</rasd:InstanceID>
<rasd:Parent>3</rasd:Parent>
<rasd:ResourceType>17</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false" />
</Item>
<Item>
<rasd:AddressOnParent>1</rasd:AddressOnParent>
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
<rasd:Connection>mgmt0</rasd:Connection>
<rasd:Description>Out-of-band VmxNet3 ethernet adapter"</rasd:Description>
<rasd:ElementName>Network adapter 1</rasd:ElementName>
<rasd:InstanceID>13</rasd:InstanceID>
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true" />
</Item>
<Item>
<rasd:AddressOnParent>2</rasd:AddressOnParent>
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
<rasd:Connection>fabric0</rasd:Connection>
<rasd:Description>Infra VmxNet3 ethernet adapter"</rasd:Description>
<rasd:ElementName>Network adapter 2</rasd:ElementName>
<rasd:InstanceID>12</rasd:InstanceID>
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true" />
</Item>
<Item ovf:configuration="App">
<rasd:AddressOnParent>1</rasd:AddressOnParent>
<rasd:ElementName>Data disk</rasd:ElementName>
<rasd:HostResource>ovf:/disk/datadiskapp</rasd:HostResource>
<rasd:InstanceID>10</rasd:InstanceID>
<rasd:Parent>3</rasd:Parent>
<rasd:ResourceType>17</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false" />
</Item>
<Item ovf:configuration="Data">
<rasd:AddressOnParent>1</rasd:AddressOnParent>
<rasd:ElementName>Data disk</rasd:ElementName>
<rasd:HostResource>ovf:/disk/datadiskdata</rasd:HostResource>
<rasd:InstanceID>10</rasd:InstanceID>
<rasd:Parent>3</rasd:Parent>
<rasd:ResourceType>17</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false" />
</Item>
<vmw:Config ovf:required="false" vmw:key="firmware" vmw:value="bios"/>
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.powerOffType" vmw:value="preset"/>
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.resetType" vmw:value="preset"/>
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.standbyAction" vmw:value="checkpoint"/>
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.suspendType" vmw:value="preset"/>
<vmw:Config ovf:required="false" vmw:key="tools.afterPowerOn" vmw:value="true"/>
<vmw:Config ovf:required="false" vmw:key="tools.afterResume" vmw:value="true"/>
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestShutdown" vmw:value="true"/>
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestStandby" vmw:value="true"/>
<vmw:Config ovf:required="false" vmw:key="tools.syncTimeWithHost" vmw:value="false"/>
<vmw:Config ovf:required="false" vmw:key="tools.toolsUpgradePolicy" vmw:value="manual"/>
</VirtualHardwareSection>
<ovf:ProductSection>
<ovf:Info>Product Resource Information</ovf:Info>
<Category ovf:configuration="App">Resource Configuration</Category>
<Property ovf:configuration="App" ovf:key="dataDiskSizeApp" ovf:runtimeConfigurable="false" ovf:type="int"
ovf:qualifiers="MinValue(500) MaxValue(1536)" ovf:value="500" ovf:userConfigurable="true">
<Label>1. Data Disk Size (GB)</Label>
<Description>Data disk size (min 500GB, max 1536GB (1.5TB))</Description>
</Property>
<Category ovf:configuration="Data">Resource Configuration</Category>
<Property ovf:configuration="Data" ovf:key="dataDiskSizeData" ovf:runtimeConfigurable="false" ovf:type="int"
ovf:qualifiers="MinValue(3072) MaxValue(6144)" ovf:value="3072" ovf:userConfigurable="true">
<Label>1. Data Disk Size (GB)</Label>
<Description>Data disk size (min 3TB, max 6TB)</Description>
</Property>
</ovf:ProductSection>
<!--
OVA deployment will only have password, management network, and firstmaster configured,
rest of parameters will be configured using UI bootstrap
-->
<ovf:ProductSection ovf:class="com.cisco.acisn">
<ovf:Info>Product Information</ovf:Info>
<ovf:Product>Cisco Application Services Engine</ovf:Product>
<ovf:Vendor>Cisco Systems, Inc.</ovf:Vendor>
<ovf:Version>nd-dk9.3(1.1k)</ovf:Version>
<ovf:ProductUrl>https://www.cisco.com/go/ACI/</ovf:ProductUrl>
<ovf:VendorUrl>https://www.cisco.com/</ovf:VendorUrl>
<Category>Node Configuration</Category>
<ovf:Property ovf:key="adminPassword" ovf:password="true" ovf:type="string" ovf:userConfigurable="true" ovf:qualifiers="MinLen(8), MaxLen(64)">
<ovf:Label>1. Password</ovf:Label>
<ovf:Description>Local "rescue-user" password</ovf:Description>
</ovf:Property>
<ovf:Property ovf:key="mgmt_ip" ovf:qualifiers="MinLen(4), MaxLen(49)" ovf:type="string" ovf:userConfigurable="true">
<ovf:Label>2. Management Network Address and subnet</ovf:Label>
<ovf:Description>Management network address. Enter IP/subnet Ex: 192.168.1.100/24 or 2222::32/120</ovf:Description>
</ovf:Property>
<ovf:Property ovf:key="gw_ip" ovf:qualifiers="MinLen(2), MaxLen(45)" ovf:type="string" ovf:userConfigurable="true">
<ovf:Label>3. Management Gateway IP</ovf:Label>
<ovf:Description>Management network gateway IP address. Enter IP only Ex: 192.168.1.1 or 2222::1</ovf:Description>
</ovf:Property>
</ovf:ProductSection>
</VirtualSystem>
</Envelope>