Skip to content

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 が指定されていても無視されます)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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 を電源オンすると初期化が始まります。 初期化には数分かかります。 コンソールの表示が下記のようになればログイン可能です。

file

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

file

Web UI からのデプロイ

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

1.詳細の確認

file

2.設定

file

3.ストレージの選択

file

4.ネットワークの選択

file

5.テンプレートのカスタマイズ

テンプレートの値は必須です。 未入力のままでは次へ進めません。

file

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

file

6.設定の確認

file

参考

nd-dk9.3.1.1k.ova に含まれるファイル (抜粋)

apic-sn.mf
1
2
SHA256(apic-sn.ovf)= c4dd6792a9ab623000ff37d2e72f65541264d22f1e90ff77aab185dd2acc8337
SHA256(apic-sn-disk1.vmdk)= 8c1c44120e31c3d7fbc89d10dda6fcbb48fd1db62458283e3f677ca34291c1d7
apic-sn.ovf
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<?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 &quot;rescue-user&quot; 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>