blob: a55f64e6123572c5de54704e966b0f8d8444738c [file] [log] [blame]
Hung-Wei Chiu77c969e2020-10-23 18:13:07 +00001..
2 SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
3 SPDX-License-Identifier: Apache-2.0
4
Charles Chan4a107222020-10-30 17:23:48 -07005Hardware Installation
6=====================
Hung-Wei Chiu77c969e2020-10-23 18:13:07 +00007
Zack Williams9026f532020-11-30 11:34:32 -07008Once the hardware has been ordered, the installation can be planned and
9implemented. This document describes the installation of the servers and
10software.
Zack Williams34c30e52020-11-16 10:55:00 -070011
12Installation of the fabric switch hardware is covered in :ref:`OS Installation
13- Switches <switch-install>`.
14
15Installation of the radio hardware is covered in :ref:`eNB Installation
16<enb-installation>`.
17
Zack Williams9026f532020-11-30 11:34:32 -070018Site Bookkeeping
19----------------
Zack Williams34c30e52020-11-16 10:55:00 -070020
21The following items need to be added to `NetBox
22<https://netbox.readthedocs.io/en/stable>`_ to describe each edge site:
23
241. Add a Site for the edge (if one doesn't already exist), which has the
25 physical location and contact information for the edge.
26
Zack Williams9026f532020-11-30 11:34:32 -0700272. Add equipment Racks to the Site (if they don't already exist).
Zack Williams34c30e52020-11-16 10:55:00 -070028
293. Add a Tenant for the edge (who owns/manages it), assigned to the ``Pronto``
30 or ``Aether`` Tenant Group.
31
Zack Williams9026f532020-11-30 11:34:32 -0700324. Add a VRF (Routing Table) for the edge site. This is usually just the name
33 of the site. Make sure that ``Enforce unique space`` is checked, so that IP
34 addresses within the VRF are forced to be unique, and that the Tenant Group
35 and Tenant are set.
Zack Williams34c30e52020-11-16 10:55:00 -070036
375. Add a VLAN Group to the edge site, which groups the site's VLANs and
Zack Williams9026f532020-11-30 11:34:32 -070038 requires that they have a unique VLAN number.
Zack Williams34c30e52020-11-16 10:55:00 -070039
406. Add VLANs for the edge site. These should be assigned a VLAN Group, the
41 Site, and Tenant.
42
43 There can be multiple of the same VLAN in NetBox (VLANs are layer 2, and
44 local to the site), but not within the VLAN group.
45
46 The minimal list of VLANs:
47
48 * ADMIN 1
49 * UPLINK 10
50 * MGMT 800
51 * FAB 801
52
53 If you have multiple deployments at a site using the same management server,
54 add additional VLANs incremented by 10 for the MGMT/FAB - for example:
55
56 * DEVMGMT 810
57 * DEVFAB 801
58
597. Add IP Prefixes for the site. This should have the Tenant and VRF assigned.
60
61 All edge IP prefixes fit into a ``/22`` sized block.
62
63 The description of the Prefix contains the DNS suffix for all Devices that
64 have IP addresses within this Prefix. The full DNS names are generated by
65 combining the first ``<devname>`` component of the Device names with this
66 suffix.
67
Zack Williamsa7c170f2020-11-25 12:59:49 -070068 An examples using the ``10.0.0.0/22`` block. There are 4 edge
Zack Williams34c30e52020-11-16 10:55:00 -070069 prefixes, with the following purposes:
70
71 * ``10.0.0.0/25``
Zack Williamsa7c170f2020-11-25 12:59:49 -070072
Zack Williams34c30e52020-11-16 10:55:00 -070073 * Has the Server BMC/LOM and Management Switch
74 * Assign the ADMIN 1 VLAN
75 * Set the description to ``admin.<deployment>.<site>.aetherproject.net`` (or
76 ``prontoproject.net``).
77
78 * ``10.0.0.128/25``
Zack Williamsa7c170f2020-11-25 12:59:49 -070079
Zack Williams34c30e52020-11-16 10:55:00 -070080 * Has the Server Management plane, Fabric Switch Management/BMC
81 * Assign MGMT 800 VLAN
82 * Set the description to ``<deployment>.<site>.aetherproject.net`` (or
83 ``prontoproject.net``).
84
Zack Williamsa7c170f2020-11-25 12:59:49 -070085 * ``10.0.1.0/25``
86
87 * IP addresses of the qsfp0 port of the Compute Nodes to Fabric switches, devices
88 connected to the Fabric like the eNB
Zack Williams34c30e52020-11-16 10:55:00 -070089 * Assign FAB 801 VLAN
Zack Williamsa7c170f2020-11-25 12:59:49 -070090 * Set the description to ``fab1.<deployment>.<site>.aetherproject.net`` (or
Zack Williams34c30e52020-11-16 10:55:00 -070091 ``prontoproject.net``).
92
Zack Williamsa7c170f2020-11-25 12:59:49 -070093 * ``10.0.1.128/25``
94
95 * IP addresses of the qsfp1 port of the Compute Nodes to fabric switches
96 * Assign FAB 801 VLAN
97 * Set the description to ``fab2.<deployment>.<site>.aetherproject.net`` (or
98 ``prontoproject.net``).
99
Zack Williams5fd7a232020-12-03 12:45:56 -0700100 There also needs to be a parent range of the two fabric ranges added:
101
102 * ``10.0.1.0/24``
103
104 * This is used to configure the correct routes, DNS, and TFTP servers
105 provided by DHCP to the equipment that is connected to the fabric
106 leaf switch that the management server (which provides those
107 services) is not connected to.
108
Zack Williamsa7c170f2020-11-25 12:59:49 -0700109 Additionally, these edge prefixes are used for Kubernetes but don't need to
110 be created in NetBox:
111
Zack Williams34c30e52020-11-16 10:55:00 -0700112 * ``10.0.2.0/24``
Zack Williamsa7c170f2020-11-25 12:59:49 -0700113
Zack Williams34c30e52020-11-16 10:55:00 -0700114 * Kubernetes Pod IP's
115
116 * ``10.0.3.0/24``
Zack Williamsa7c170f2020-11-25 12:59:49 -0700117
Zack Williams34c30e52020-11-16 10:55:00 -0700118 * Kubernetes Cluster IP's
119
1208. Add Devices to the site, for each piece of equipment. These are named with a
121 scheme similar to the DNS names used for the pod, given in this format::
122
123 <devname>.<deployment>.<site>
124
125 Examples::
126
127 mgmtserver1.ops1.tucson
128 node1.stage1.menlo
129
130 Note that these names are transformed into DNS names using the Prefixes, and
131 may have additional components - ``admin`` or ``fabric`` may be added after
132 the ``<devname>`` for devices on those networks.
133
134 Set the following fields when creating a device:
135
136 * Site
137 * Tenant
138 * Rack & Rack Position
139 * Serial number
140
141 If a specific Device Type doesn't exist for the device, it must be created,
142 which is detailed in the NetBox documentation, or ask the OPs team for help.
143
Zack Williams9026f532020-11-30 11:34:32 -0700144 See `Rackmount of Equipment`_ below for guidance on how equipment should be
145 mounted in the Rack.
146
Zack Williamsa7c170f2020-11-25 12:59:49 -07001479. Add Services to the management server:
148
149 * name: ``dns``
150 protocol: UDP
151 port: 53
152
153 * name: ``tftp``
154 protocol: UDP
155 port: 69
156
Zack Williams9026f532020-11-30 11:34:32 -0700157 These are used by the DHCP and DNS config to know which servers offer
158 DNS or TFTP service.
Zack Williamsa7c170f2020-11-25 12:59:49 -0700159
16010. Set the MAC address for the physical interfaces on the device.
Zack Williams34c30e52020-11-16 10:55:00 -0700161
162 You may also need to add physical network interfaces if aren't already
163 created by the Device Type. An example would be if additional add-in
164 network cards were installed.
165
Zack Williamsa7c170f2020-11-25 12:59:49 -070016611. Add any virtual interfaces to the Devices. When creating a virtual
Zack Williams34c30e52020-11-16 10:55:00 -0700167 interface, it should have it's ``label`` field set to the physical network
168 interface that it is assigned
169
170 These are needed are two cases for the Pronto deployment:
171
172 1. On the Management Server, there should bet (at least) two VLAN
173 interfaces created attached to the ``eno2`` network port, which
174 are used to provide connectivity to the management plane and fabric.
175 These should be named ``<name of vlan><vlan ID>``, so the MGMT 800 VLAN
176 would become a virtual interface named ``mgmt800``, with the label
177 ``eno2``.
178
179 2. On the Fabric switches, the ``eth0`` port is shared between the OpenBMC
180 interface and the ONIE/ONL installation. Add a ``bmc`` virtual
Zack Williamsa7c170f2020-11-25 12:59:49 -0700181 interface with a label of ``eth0`` on each fabric switch, and check the
182 ``OOB Management`` checkbox.
Zack Williams34c30e52020-11-16 10:55:00 -0700183
Zack Williamsa7c170f2020-11-25 12:59:49 -070018412. Create IP addresses for the physical and virtual interfaces. These should
Zack Williams34c30e52020-11-16 10:55:00 -0700185 have the Tenant and VRF set.
186
187 The Management Server should always have the first IP address in each
188 range, and they should be incremental, in this order. Examples are given as
189 if there was a single instance of each device - adding additional devices
190 would increment the later IP addresses.
191
192 * Management Server
Zack Williamsa7c170f2020-11-25 12:59:49 -0700193
Zack Williams34c30e52020-11-16 10:55:00 -0700194 * ``eno1`` - site provided public IP address, or blank if DHCP
Zack Williamsa7c170f2020-11-25 12:59:49 -0700195 provided
196
Zack Williams34c30e52020-11-16 10:55:00 -0700197 * ``eno2`` - 10.0.0.1/25 (first of ADMIN) - set as primary IP
198 * ``bmc`` - 10.0.0.2/25 (next of ADMIN)
199 * ``mgmt800`` - 10.0.0.129/25 (first of MGMT)
Zack Williamsa7c170f2020-11-25 12:59:49 -0700200 * ``fab801`` - 10.0.1.1/25 (first of FAB)
Zack Williams34c30e52020-11-16 10:55:00 -0700201
202 * Management Switch
Zack Williamsa7c170f2020-11-25 12:59:49 -0700203
Zack Williams34c30e52020-11-16 10:55:00 -0700204 * ``gbe1`` - 10.0.0.3/25 (next of ADMIN) - set as primary IP
205
206 * Fabric Switch
Zack Williamsa7c170f2020-11-25 12:59:49 -0700207
Zack Williams34c30e52020-11-16 10:55:00 -0700208 * ``eth0`` - 10.0.0.130/25 (next of MGMT), set as primary IP
209 * ``bmc`` - 10.0.0.131/25
210
211 * Compute Server
Zack Williamsa7c170f2020-11-25 12:59:49 -0700212
Zack Williams34c30e52020-11-16 10:55:00 -0700213 * ``eth0`` - 10.0.0.132/25 (next of MGMT), set as primary IP
214 * ``bmc`` - 10.0.0.4/25 (next of ADMIN)
215 * ``qsfp0`` - 10.0.1.2/25 (next of FAB)
216 * ``qsfp1`` - 10.0.1.3/25
217
218 * Other Fabric devices (eNB, etc.)
Zack Williamsa7c170f2020-11-25 12:59:49 -0700219
Zack Williams34c30e52020-11-16 10:55:00 -0700220 * ``eth0`` or other primary interface - 10.0.1.4/25 (next of FAB)
221
Zack Williamsa7c170f2020-11-25 12:59:49 -070022213. Add DHCP ranges to the IP Prefixes for IP's that aren't reserved. These are
223 done like any other IP Address, but with the ``Status`` field is set to
224 ``DHCP``, and they'll consume the entire range of IP addresses given in the
225 CIDR mask.
226
227 For example ``10.0.0.32/27`` as a DHCP block would take up 1/4 of the ADMIN
228 prefix.
229
Zack Williamse8cb1212020-12-03 09:48:58 -070023014. Add router IP reservations to the IP Prefix for both Fabric prefixes. These
231 are IP addresses that:
232
Zack Williams5fd7a232020-12-03 12:45:56 -0700233 - Have the last usable address in range (in the ``/25`` fabric examples
234 above, these would be ``10.0.1.126/25`` and ``10.0.1.254/25``)
Zack Williamse8cb1212020-12-03 09:48:58 -0700235
236 - Have a ``Status`` of ``Reserved``, and the VRF, Tenant Group, and Tenant
237 set.
238
239 - The Description must start with the word ``router``, such as: ``router
Zack Williams5fd7a232020-12-03 12:45:56 -0700240 for leaf1 Fabric``
Zack Williamse8cb1212020-12-03 09:48:58 -0700241
24215. Add Cables between physical interfaces on the devices
Zack Williams34c30e52020-11-16 10:55:00 -0700243
244 TODO: Explain the cabling topology
245
Zack Williams9026f532020-11-30 11:34:32 -0700246Rackmount of Equipment
247----------------------
Zack Williams34c30e52020-11-16 10:55:00 -0700248
Zack Williams9026f532020-11-30 11:34:32 -0700249Most of the Pronto equipment has a 19" rackmount form factor.
Zack Williams34c30e52020-11-16 10:55:00 -0700250
Zack Williams9026f532020-11-30 11:34:32 -0700251Guidelines for mounting this equipment:
Zack Williams34c30e52020-11-16 10:55:00 -0700252
Zack Williams9026f532020-11-30 11:34:32 -0700253- The EdgeCore Wedge Switches have a front-to-back (aka "port-to-power") fan
254 configuration, so hot air exhaust is out the back of the switch near the
255 power inlets, away from the 32 QSFP network ports on the front of the switch.
Zack Williams34c30e52020-11-16 10:55:00 -0700256
Zack Williams9026f532020-11-30 11:34:32 -0700257- The full-depth 1U and 2U Supermicro servers also have front-to-back airflow
258 but have most of their ports on the rear of the device.
Zack Williams34c30e52020-11-16 10:55:00 -0700259
Zack Williams9026f532020-11-30 11:34:32 -0700260- Airflow through the rack should be in one direction to avoid heat being
261 pulled from one device into another. This means that to connect the QSFP
262 network ports from the servers to the switches, cabling should be routed
263 through the rack from front (switch) to back (server). Empty rack spaces
264 should be reserved for this purpose.
Zack Williams34c30e52020-11-16 10:55:00 -0700265
Zack Williams9026f532020-11-30 11:34:32 -0700266- The short-depth management HP Switch and 1U Supermicro servers should be
267 mounted on the rear of the rack. They both don't generate an appreciable
268 amount of heat, so the airflow direction isn't a significant factor in
269 racking them.
Zack Williams34c30e52020-11-16 10:55:00 -0700270
271Inventory
272---------
273
274Once equipment arrives, any device needs to be recorded in inventory if it:
275
2761. Connects to the network (has a MAC address)
2772. Has a serial number
2783. Isn't a subcomponent (disk, add-in card, linecard, etc.) of a larger device.
279
280The following information should be recorded for every device:
281
282- Manufacturer
283- Model
284- Serial Number
285- MAC address (for the primary and any management/BMC/IPMI interfaces)
286
287This information should be be added to the corresponding Devices ONF NetBox
288instance. The accuracy of this information is very important as it is used in
289bootstrapping the systems.
290
291Once inventory has been completed, let the Infra team know, and the pxeboot
292configuration will be generated to have the OS preseed files corresponding to the
293new servers based on their serial numbers.
294
Zack Williams34c30e52020-11-16 10:55:00 -0700295Cabling and Network Topology
296----------------------------
297
298TODO: Add diagrams of network here, and cabling plan
299
300Management Switch Bootstrap
301---------------------------
302
303TODO: Add instructions for bootstrapping management switch, from document that
304has the linked config file.
305
Zack Williams9026f532020-11-30 11:34:32 -0700306Software Bootstrap
307------------------
Zack Williams34c30e52020-11-16 10:55:00 -0700308
309Management Server Bootstrap
310"""""""""""""""""""""""""""
311
312The management server is bootstrapped into a customized version of the standard
313Ubuntu 18.04 OS installer.
314
315The `iPXE boot firmware <https://ipxe.org/>`_. is used to start this process
316and is built using the steps detailed in the `ipxe-build
317<https://gerrit.opencord.org/plugins/gitiles/ipxe-build>`_. repo, which
318generates both USB and PXE chainloadable boot images.
319
320Once a system has been started using these images started, these images will
321download a customized script from an external webserver to continue the boot
322process. This iPXE to webserver connection is secured with mutual TLS
323authentication, enforced by the nginx webserver.
324
325The iPXE scripts are created by the `pxeboot
326<https://gerrit.opencord.org/plugins/gitiles/ansible/role/pxeboot>`_ role,
327which creates both a boot menu, downloads the appropriate binaries for
328bootstrapping an OS installation, and creates per-node installation preseed files.
329
330The preseed files contain configuration steps to install the OS from the
331upstream Ubuntu repos, as well as customization of packages and creating the
332``onfadmin`` user.
333
334TODO: convert instructions for bootstrapping the management server with iPXE here.
335
336Once the OS is installed on the management server, Ansible is used to remotely
337install software on the management server.
338
339To checkout the ONF ansible repo and enter the virtualenv with the tooling::
340
341 mkdir infra
342 cd infra
343 repo init -u ssh://<your gerrit username>@gerrit.opencord.org:29418/infra-manifest
344 repo sync
345 cd ansible
346 make galaxy
347 source venv_onfansible/bin/activate
348
Zack Williamsa7c170f2020-11-25 12:59:49 -0700349Obtain the ``undionly.kpxe`` iPXE artifact for bootstrapping the compute
Zack Williams9026f532020-11-30 11:34:32 -0700350servers, and put it in the ``playbook/files`` directory.
Zack Williamsa7c170f2020-11-25 12:59:49 -0700351
Zack Williams34c30e52020-11-16 10:55:00 -0700352Next, create an inventory file to access the NetBox API. An example is given
353in ``inventory/example-netbox.yml`` - duplicate this file and modify it. Fill
354in the ``api_endpoint`` address and ``token`` with an API key you get out of
355the NetBox instance. List the IP Prefixes used by the site in the
356``ip_prefixes`` list.
357
358Next, run the ``scripts/netbox_edgeconfig.py`` to generate a host_vars file for
359the management server. Assuming that the management server in the edge is
360named ``mgmtserver1.stage1.menlo``, you'd run::
361
362 python scripts/netbox_edgeconfig.py inventory/my-netbox.yml > inventory/host_vars/mgmtserver1.stage1.menlo.yml
363
Zack Williamsa7c170f2020-11-25 12:59:49 -0700364One manual change needs to be made to this output - edit the
365``inventory/host_vars/mgmtserver1.stage1.menlo.yml`` file and add the following
Zack Williamse8cb1212020-12-03 09:48:58 -0700366to the bottom of the file, replacing the IP addresses with the management
367server IP address for each segment.
368
369In the case of the Fabric that has two leaves and IP ranges, add the Management
370server IP address used for the leaf that it is connected to, and then add a
371route for the other IP address range for the non-Management-connected leaf that
Zack Williams5fd7a232020-12-03 12:45:56 -0700372is via the Fabric router address in the connected leaf range.
Zack Williamse8cb1212020-12-03 09:48:58 -0700373
374This configures the `netplan <https://netplan.io>`_ on the management server,
Zack Williams5fd7a232020-12-03 12:45:56 -0700375and creates a SNAT rule for the UE range route, and will be automated away
376soon::
Zack Williamsa7c170f2020-11-25 12:59:49 -0700377
378 # added manually
379 netprep_netplan:
380 ethernets:
381 eno2:
382 addresses:
383 - 10.0.0.1/25
384 vlans:
385 mgmt800:
386 id: 800
387 link: eno2
388 addresses:
389 - 10.0.0.129/25
390 fabr801:
391 id: 801
392 link: eno2
393 addresses:
Zack Williamse8cb1212020-12-03 09:48:58 -0700394 - 10.0.1.129/25
395 routes:
396 - to: 10.0.1.0/25
397 via: 10.0.1.254
Zack Williams5fd7a232020-12-03 12:45:56 -0700398 metric: 100
399
400 netprep_nftables_nat_postrouting: >
401 ip saddr 10.0.1.0/25 ip daddr 10.168.0.0/20 counter snat to 10.0.1.129;
402
Zack Williamsa7c170f2020-11-25 12:59:49 -0700403
Zack Williams9026f532020-11-30 11:34:32 -0700404Using the ``inventory/example-aether.ini`` as a template, create an
405:doc:`ansible inventory <ansible:user_guide/intro_inventory>` file for the
406site. Change the device names, IP addresses, and ``onfadmin`` password to match
407the ones for this site. The management server's configuration is in the
408``[aethermgmt]`` and corresponding ``[aethermgmt:vars]`` section.
Zack Williams34c30e52020-11-16 10:55:00 -0700409
410Then, to configure a management server, run::
411
Zack Williams9026f532020-11-30 11:34:32 -0700412 ansible-playbook -i inventory/sitename.ini playbooks/aethermgmt-playbook.yml
Zack Williams34c30e52020-11-16 10:55:00 -0700413
414This installs software with the following functionality:
415
416- VLANs on second Ethernet port to provide connectivity to the rest of the pod.
417- Firewall with NAT for routing traffic
418- DHCP and TFTP for bootstrapping servers and switches
419- DNS for host naming and identification
Zack Williamsa7c170f2020-11-25 12:59:49 -0700420- HTTP server for serving files used for bootstrapping switches
Zack Williams9026f532020-11-30 11:34:32 -0700421- Downloads the Tofino switch image
422- Creates user accounts for administrative access
Zack Williams34c30e52020-11-16 10:55:00 -0700423
424Compute Server Bootstrap
425""""""""""""""""""""""""
426
427Once the management server has finished installation, it will be set to offer
428the same iPXE bootstrap file to the computer.
429
430Each node will be booted, and when iPXE loads select the ``Ubuntu 18.04
431Installer (fully automatic)`` option.
Zack Williamsa7c170f2020-11-25 12:59:49 -0700432
433The nodes can be controlled remotely via their BMC management interfaces - if
434the BMC is at ``10.0.0.3`` a remote user can SSH into them with::
435
436 ssh -L 2443:10.0.0.3:443 onfadmin@<mgmt server ip>
437
438And then use their web browser to access the BMC at::
439
440 https://localhost:2443
441
442The default BMC credentials for the Pronto nodes are::
443
444 login: ADMIN
445 password: Admin123
446
Zack Williams9026f532020-11-30 11:34:32 -0700447The BMC will also list all of the MAC addresses for the network interfaces
448(including BMC) that are built into the logic board of the system. Add-in
449network cards like the 40GbE ones used in compute servers aren't listed.
450
451To prepare the compute nodes, software must be installed on them. As they
452can't be accessed directly from your local system, a :ref:`jump host
453<ansible:use_ssh_jump_hosts>` configuration is added, so the SSH connection
454goes through the management server to the compute systems behind it. Doing this
455requires a few steps:
456
457First, configure SSH to use Agent forwarding - create or edit your
458``~/.ssh/config`` file and add the following lines::
459
460 Host <management server IP>
461 ForwardAgent yes
462
463Then try to login to the management server, then the compute node::
464
465 $ ssh onfadmin@<management server IP>
466 Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-54-generic x86_64)
467 ...
468 onfadmin@mgmtserver1:~$ ssh onfadmin@10.0.0.138
469 Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-54-generic x86_64)
470 ...
471 onfadmin@node2:~$
472
473Being able to login to the compute nodes from the management node means that
474SSH Agent forwarding is working correctly.
475
476Verify that your inventory (Created earlier from the
477``inventory/example-aether.ini`` file) includes an ``[aethercompute]`` section
478that has all the names and IP addresses of the compute nodes in it.
479
480Then run a ping test::
481
482 ansible -i inventory/sitename.ini -m ping aethercompute
483
484It may ask you about authorized keys - answer ``yes`` for each host to trust the keys::
485
486 The authenticity of host '10.0.0.138 (<no hostip for proxy command>)' can't be established.
487 ECDSA key fingerprint is SHA256:...
488 Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
489
490You should then see a success message for each host::
491
492 node1.stage1.menlo | SUCCESS => {
493 "changed": false,
494 "ping": "pong"
495 }
496 node2.stage1.menlo | SUCCESS => {
497 "changed": false,
498 "ping": "pong"
499 }
500 ...
501
502Once you've seen this, run the playbook to install the prerequisites (Terraform
503user, Docker)::
504
505 ansible-playbook -i inventory/sitename.ini playbooks/aethercompute-playbook.yml
506
507Note that Docker is quite large and may take a few minutes for installation
508depending on internet connectivity.
509
510Now that these compute nodes have been brought up, the rest of the installation
511can continue.