Merge "Update armband documentation for Danube"
[armband.git] / docs / release / installation / installation.instruction.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. (c) Open Platform for NFV Project, Inc. and its contributors
4
5 ========
6 Abstract
7 ========
8
9 This document describes how to install the Danube release of
10 OPNFV when using Fuel as a deployment tool, with an AArch64 (only)
11 target node pool. It covers its usage, limitations, dependencies
12 and required system resources.
13
14 ============
15 Introduction
16 ============
17
18 This document provides guidelines on how to install and
19 configure the Danube release of OPNFV when using Fuel as a
20 deployment tool, with an AArch64 (only) target node pool,
21 including required software and hardware configurations.
22
23 Although the available installation options give a high degree of
24 freedom in how the system is set-up, including architecture, services
25 and features, etc., said permutations may not provide an OPNFV
26 compliant reference architecture. This instruction provides a
27 step-by-step guide that results in an OPNFV Danube compliant
28 deployment.
29
30 The audience of this document is assumed to have good knowledge in
31 networking and Unix/Linux administration.
32
33 =======
34 Preface
35 =======
36
37 Before starting the installation of the AArch64 Danube release
38 of OPNFV, using Fuel as a deployment tool, some planning must be
39 done.
40
41 Retrieving the ISO image
42 ========================
43
44 First of all, the Fuel deployment ISO image needs to be retrieved, the
45 ArmbandFuel .iso image of the AArch64 Danube release can be found at `OPNFV Downloads <https://www.opnfv.org/software/download>`_.
46
47 Building the ISO image
48 ======================
49
50 Alternatively, you may build the Armband Fuel .iso from source by cloning
51 the opnfv/armband git repository. To retrieve the repository for the AArch64
52 Danube release use the following command:
53
54 .. code-block:: bash
55
56     $ git clone https://gerrit.opnfv.org/gerrit/armband
57
58 Check-out the Danube release tag to set the HEAD to the
59 baseline required to replicate the Danube release:
60
61 .. code-block:: bash
62
63     $ git checkout danube.1.0
64
65 Go to the armband directory and build the .iso:
66
67 .. code-block:: bash
68
69     $ cd armband; make all
70
71 For more information on how to build, please see :ref:`Build instruction for Fuel\@OPNFV <armband-development-overview-build-label>`
72
73 Other preparations
74 ==================
75
76 Next, familiarize yourself with Fuel by reading the following documents:
77
78 - `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_
79
80 - `Fuel User Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_
81
82 - `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_
83
84 - `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_
85
86 Prior to installation, a number of deployment specific parameters must be collected, those are:
87
88 #.     Provider sub-net and gateway information
89
90 #.     Provider VLAN information
91
92 #.     Provider DNS addresses
93
94 #.     Provider NTP addresses
95
96 #.     Network overlay you plan to deploy (VLAN, VXLAN, FLAT)
97
98 #.     How many nodes and what roles you want to deploy (Controllers, Storage, Computes)
99
100 #.     Monitoring options you want to deploy (Ceilometer, Syslog, etc.).
101
102 #.     Other options not covered in the document are available in the links above
103
104
105 This information will be needed for the configuration procedures
106 provided in this document.
107
108 =====================
109 Hardware requirements
110 =====================
111
112 The following minimum hardware requirements must be met for the
113 installation of AArch64 Danube using Fuel:
114
115 +----------------------------+------------------------------------------------------+
116 | **HW Aspect**              | **Requirement**                                      |
117 |                            |                                                      |
118 +============================+======================================================+
119 | **# of AArch64 nodes**     | Minimum 5 (3 for non redundant deployment):          |
120 |                            |                                                      |
121 |                            | - 1 Fuel deployment master (may be virtualized)      |
122 |                            |                                                      |
123 |                            | - 3(1) Controllers (1 colocated mongo/ceilometer     |
124 |                            |   role, 2 Ceph-OSD roles)                            |
125 |                            |                                                      |
126 |                            | - 1 Compute (1 co-located Ceph-OSD role)             |
127 |                            |                                                      |
128 +----------------------------+------------------------------------------------------+
129 | **CPU**                    | Minimum 1 socket AArch64 (ARMv8) with Virtualization |
130 |                            | support                                              |
131 +----------------------------+------------------------------------------------------+
132 | **RAM**                    | Minimum 16GB/server (Depending on VNF work load)     |
133 |                            |                                                      |
134 +----------------------------+------------------------------------------------------+
135 | **Firmware**               | UEFI compatible (e.g. EDK2) with PXE support         |
136 +----------------------------+------------------------------------------------------+
137 | **Disk**                   | Minimum 256GB 10kRPM spinning disks                  |
138 |                            |                                                      |
139 +----------------------------+------------------------------------------------------+
140 | **Networks**               | 4 Tagged VLANs (PUBLIC, MGMT, STORAGE, PRIVATE)      |
141 |                            |                                                      |
142 |                            | 1 Un-Tagged VLAN for PXE Boot - ADMIN Network        |
143 |                            |                                                      |
144 |                            | Note: These can be allocated to a single NIC -       |
145 |                            | or spread out over multiple NICs as your hardware    |
146 |                            | supports.                                            |
147 +----------------------------+------------------------------------------------------+
148 | **1 x86_64 node**          | - 1 Fuel deployment master, x86 (may be virtualized) |
149 +----------------------------+------------------------------------------------------+
150
151 ===============================
152 Help with Hardware Requirements
153 ===============================
154
155 Calculate hardware requirements:
156
157 For information on compatible hardware types available for use, please see `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/software/hardware-compatibility/>`_.
158
159 When choosing the hardware on which you will deploy your OpenStack
160 environment, you should think about:
161
162 - CPU -- Consider the number of virtual machines that you plan to deploy in your cloud environment and the CPU per virtual machine.
163
164 - Memory -- Depends on the amount of RAM assigned per virtual machine and the controller node.
165
166 - Storage -- Depends on the local drive space per virtual machine, remote volumes that can be attached to a virtual machine, and object storage.
167
168 - Networking -- Depends on the Choose Network Topology, the network bandwidth per virtual machine, and network storage.
169
170 ================================================
171 Top of the rack (TOR) Configuration requirements
172 ================================================
173
174 The switching infrastructure provides connectivity for the OPNFV
175 infrastructure operations, tenant networks (East/West) and provider
176 connectivity (North/South); it also provides needed connectivity for
177 the Storage Area Network (SAN).
178 To avoid traffic congestion, it is strongly suggested that three
179 physically separated networks are used, that is: 1 physical network
180 for administration and control, one physical network for tenant private
181 and public networks, and one physical network for SAN.
182 The switching connectivity can (but does not need to) be fully redundant,
183 in such case it comprises a redundant 10GE switch pair for each of the
184 three physically separated networks.
185
186 The physical TOR switches are **not** automatically configured from
187 the Fuel OPNFV reference platform. All the networks involved in the OPNFV
188 infrastructure as well as the provider networks and the private tenant
189 VLANs needs to be manually configured.
190
191 Manual configuration of the Danube hardware platform should
192 be carried out according to the `OPNFV Pharos Specification
193 <https://wiki.opnfv.org/display/pharos/Pharos+Specification>`_.
194
195 ==========================================
196 OPNFV Software installation and deployment
197 ==========================================
198
199 This section describes the installation of the OPNFV installation
200 server (Fuel master) as well as the deployment of the full OPNFV
201 reference platform stack across a server cluster.
202
203 Install Fuel master
204 ===================
205
206 #. Mount the Danube Armband Fuel ISO file/media as a boot device to the jump host server.
207
208 #. Reboot the jump host to establish the Fuel server.
209
210    - The system now boots from the ISO image.
211
212    - Select "Fuel Install (Static IP)" (See figure below)
213
214    - Press [Enter].
215
216    .. figure:: img/grub-1.png
217
218 #. Wait until the Fuel setup screen is shown (Note: This can take up to 30 minutes).
219
220 #. In the "Fuel User" section - Confirm/change the default password (See figure below)
221
222    - Enter "admin" in the Fuel password input
223
224    - Enter "admin" in the Confirm password input
225
226    - Select "Check" and press [Enter]
227
228    .. figure:: img/fuelmenu1.png
229
230 #. In the "Network Setup" section - Configure DHCP/Static IP information for your FUEL node - For example, ETH0 is 10.20.0.2/24 for FUEL booting and ETH1 is DHCP in your corporate/lab network (see figure below).
231
232    - Configure eth1 or other network interfaces here as well (if you have them present on your FUEL server).
233
234    .. figure:: img/fuelmenu2.png
235
236    .. figure:: img/fuelmenu2a.png
237
238 #. In the "PXE Setup" section (see figure below) - Change the following fields to appropriate values (example below):
239
240    - DHCP Pool Start 10.20.0.4
241
242    - DHCP Pool End 10.20.0.254
243
244    - DHCP Pool Gateway  10.20.0.2 (IP address of Fuel node)
245
246    .. figure:: img/fuelmenu3.png
247
248 #. In the "DNS & Hostname" section (see figure below) - Change the following fields to appropriate values:
249
250    - Hostname
251
252    - Domain
253
254    - Search Domain
255
256    - External DNS
257
258    - Hostname to test DNS
259
260    - Select <Check> and press [Enter]
261
262    .. figure:: img/fuelmenu4.png
263
264
265 #. **DO NOT CHANGE** anything in "Bootstrap Image" section (see figure below).
266
267    In ArmbandFuel@OPNFV, this data is **NOT** actually used for bootstrap
268    image building. Any change here will replace the configuration from
269    the OPNFV bootstrap build scripts and will lead to a failed bootstrap
270    image build.
271
272    **NOTE:** Cannot be used in tandem with local repository support.
273
274    .. figure:: img/fuelmenu5.png
275
276 #. In the "Time Sync" section (see figure below) - Change the following fields to appropriate values:
277
278    - NTP Server 1 <Customer NTP server 1>
279
280    - NTP Server 2 <Customer NTP server 2>
281
282    - NTP Server 3 <Customer NTP server 3>
283
284    .. figure:: img/fuelmenu6.png
285
286 #. Start the installation.
287
288    - Press <F8>
289
290    - The installation will now start, wait until the login screen is shown.
291
292 Boot the Node Servers
293 =====================
294
295 After the Fuel Master node has rebooted from the above steps and is at
296 the login prompt, you should boot the Node Servers (Your
297 Compute/Control/Storage blades, nested or real) with a PXE booting
298 scheme so that the FUEL Master can pick them up for control.
299
300 **NOTE**: AArch64 target nodes are expected to support PXE booting an
301 EFI binary, i.e. an EFI-stubbed GRUB2 bootloader.
302
303 **NOTE**: UEFI (EDK2) firmware is **highly** recommended, becoming
304 the **de facto** standard for ARMv8 nodes.
305
306 #. Enable PXE booting
307
308    - For every controller and compute server: enable PXE Booting as the first boot device in the UEFI (EDK2) boot order menu, and hard disk as the second boot device in the same menu.
309
310 #. Reboot all the control and compute blades.
311
312 #. Wait for the availability of nodes showing up in the Fuel GUI.
313
314    - Connect to the FUEL UI via the URL provided in the Console (default: https://10.20.0.2:8443)
315
316    - Wait until all nodes are displayed in top right corner of the Fuel GUI: Total nodes and Unallocated nodes (see figure below).
317
318    .. figure:: img/nodes.png
319
320 Install additional Plugins/Features on the FUEL node
321 ====================================================
322
323 #. SSH to your FUEL node (e.g. root@10.20.0.2  pwd: r00tme)
324
325 #. Select wanted plugins/features from the /opt/opnfv/ directory.
326
327 #. Install the wanted plugin with the command
328
329     .. code-block:: bash
330
331         $ fuel plugins --install /opt/opnfv/<plugin-name>-<version>.<arch>.rpm
332
333     Expected output (see figure below):
334
335     .. code-block:: bash
336
337         Plugin ....... was successfully installed.
338
339    .. figure:: img/plugin_install.png
340
341    **NOTE**: AArch64 Colorado 1.0 ships only with ODL, OVS, BGPVPN and Tacker
342    plugins, see *Reference 15*.
343
344 Create an OpenStack Environment
345 ===============================
346
347 #. Connect to Fuel WEB UI with a browser (default: https://10.20.0.2:8443) (login: admin/admin)
348
349 #. Create and name a new OpenStack environment, to be installed.
350
351    .. figure:: img/newenv.png
352
353 #. Select "<Mitaka on Ubuntu 14.04 (aarch64)>" and press <Next>
354
355 #. Select "compute virtulization method".
356
357    - Select "QEMU-KVM as hypervisor" and press <Next>
358
359 #. Select "network mode".
360
361    - Select "Neutron with ML2 plugin"
362
363    - Select "Neutron with tunneling segmentation" (Required when using the ODL plugin)
364
365    - Press <Next>
366
367 #. Select "Storage Back-ends".
368
369    - Select "Ceph for block storage" and press <Next>
370
371 #. Select "additional services" you wish to install.
372
373    - Check option "Install Ceilometer and Aodh" and press <Next>
374
375 #. Create the new environment.
376
377    - Click <Create> Button
378
379 Configure the network environment
380 =================================
381
382 #. Open the environment you previously created.
383
384 #. Open the networks tab and select the "default" Node Networks group to on the left pane (see figure below).
385
386    .. figure:: img/network.png
387
388 #. Update the Public network configuration and change the following fields to appropriate values:
389
390    - CIDR to <CIDR for Public IP Addresses>
391
392    - IP Range Start to <Public IP Address start>
393
394    - IP Range End to <Public IP Address end>
395
396    - Gateway to <Gateway for Public IP Addresses>
397
398    - Check <VLAN tagging>.
399
400    - Set appropriate VLAN id.
401
402 #. Update the Storage Network Configuration
403
404    - Set CIDR to appropriate value  (default 192.168.1.0/24)
405
406    - Set IP Range Start to appropriate value (default 192.168.1.1)
407
408    - Set IP Range End to appropriate value (default 192.168.1.254)
409
410    - Set vlan to appropriate value  (default 102)
411
412 #. Update the Management network configuration.
413
414    - Set CIDR to appropriate value (default 192.168.0.0/24)
415
416    - Set IP Range Start to appropriate value (default 192.168.0.1)
417
418    - Set IP Range End to appropriate value (default 192.168.0.254)
419
420    - Check <VLAN tagging>.
421
422    - Set appropriate VLAN id. (default 101)
423
424 #. Update the Private Network Information
425
426    - Set CIDR to appropriate value (default 192.168.2.0/24
427
428    - Set IP Range Start to appropriate value (default 192.168.2.1)
429
430    - Set IP Range End to appropriate value (default 192.168.2.254)
431
432    - Check <VLAN tagging>.
433
434    - Set appropriate VLAN tag (default 103)
435
436 #. Select the "Neutron L3" Node Networks group on the left pane.
437
438    .. figure:: img/neutronl3.png
439
440 #. Update the Floating Network configuration.
441
442    - Set the Floating IP range start (default 172.16.0.130)
443
444    - Set the Floating IP range end (default 172.16.0.254)
445
446    - Set the Floating network name (default admin_floating_net)
447
448 #. Update the Internal Network configuration.
449
450    - Set Internal network CIDR to an appropriate value (default 192.168.111.0/24)
451
452    - Set Internal network gateway to an appropriate value
453
454    - Set the Internal network name (default admin_internal_net)
455
456 #. Update the Guest OS DNS servers.
457
458    - Set Guest OS DNS Server values appropriately
459
460 #. Save Settings.
461
462 #. Select the "Other" Node Networks group on the left pane (see figure below).
463
464    .. figure:: img/other.png
465
466 #. Update the Public network assignment.
467
468    - Check the box for "Assign public network to all nodes" (Required by OpenDaylight)
469
470 #. Update Host OS DNS Servers.
471
472    - Provide the DNS server settings
473
474 #. Update Host OS NTP Servers.
475
476    - Provide the NTP server settings
477
478 Select Hypervisor type
479 ======================
480
481 #. In the FUEL UI of your Environment, click the "Settings" Tab
482
483 #. Select "Compute" on the left side pane (see figure below)
484
485    - Check the KVM box and press "Save settings"
486
487    .. figure:: img/compute.png
488
489 Enable Plugins
490 ==============
491
492 #. In the FUEL UI of your Environment, click the "Settings" Tab
493
494 #. Select Other on the left side pane (see figure below)
495
496    - Enable and configure the plugins of your choice
497
498    .. figure:: img/plugins_aarch64.png
499
500 Allocate nodes to environment and assign functional roles
501 =========================================================
502
503 #. Click on the "Nodes" Tab in the FUEL WEB UI (see figure below).
504
505     .. figure:: img/addnodes.png
506
507 #. Assign roles (see figure below).
508
509     - Click on the <+Add Nodes> button
510
511     - Check <Controller>, <Telemetry - MongoDB>  and optionally an SDN Controller role (OpenDaylight controller) in the "Assign Roles" Section.
512
513     - Check one node which you want to act as a Controller from the bottom half of the screen
514
515     - Click <Apply Changes>.
516
517     - Click on the <+Add Nodes> button
518
519     - Check the <Controller> and <Storage - Ceph OSD> roles.
520
521     - Check the two next nodes you want to act as Controllers from the bottom half of the screen
522
523     - Click <Apply Changes>
524
525     - Click on <+Add Nodes> button
526
527     - Check the <Compute> and <Storage - Ceph OSD> roles.
528
529     - Check the Nodes you want to act as Computes from the bottom half of the screen
530
531     - Click <Apply Changes>.
532
533     .. figure:: img/computelist.png
534
535 #. Configure interfaces (see figure below).
536
537     - Check Select <All> to select all allocated nodes
538
539     - Click <Configure Interfaces>
540
541     - Assign interfaces (bonded) for mgmt-, admin-, private-, public- and storage networks
542
543     - Click <Apply>
544
545     .. figure:: img/interfaceconf.png
546
547 OPTIONAL - Set Local Mirror Repos
548 =================================
549
550 The following steps must be executed if you are in an environment with
551 no connection to the Internet. The Fuel server delivers a local repo
552 that can be used for installation / deployment of openstack.
553
554 #. In the Fuel UI of your Environment, click the Settings Tab and select General from the left pane.
555
556    - Replace the URI values for the "Name" values outlined below:
557
558    - "ubuntu" URI="deb http://<ip-of-fuel-server>:8080/mirrors/ubuntu/ trusty main"
559
560    - "mos" URI="deb http://<ip-of-fuel-server>::8080/mitaka-9.0/ubuntu/x86_64 mos9.0 main restricted"
561
562    - "Auxiliary" URI="deb http://<ip-of-fuel-server>:8080/mitaka-9.0/ubuntu/auxiliary auxiliary main restricted"
563
564    - Click <Save Settings> at the bottom to Save your changes
565
566 Target specific configuration
567 =============================
568
569 #. [AArch64 specific] Configure MySQL WSREP SST provider
570
571    **NOTE**: This option is only available for ArmbandFuel@OPNFV, since it
572    currently only affects AArch64 targets (see *Reference 15*).
573
574    When using some AArch64 platforms as controller nodes, WSREP SST
575    synchronisation using default backend provider (xtrabackup-v2) used to fail,
576    so a mechanism that allows selecting a different WSREP SST provider
577    has been introduced.
578
579    In the FUEL UI of your Environment, click the <Settings> tab, click
580    <OpenStack Services> on the left side pane (see figure below), then
581    select one of the following options:
582
583    - xtrabackup-v2 (default provider, AArch64 stability issues);
584
585    - rsync (AArch64 validated, better or comparable speed to xtrabackup,
586      takes the donor node offline during state transfer);
587
588    - mysqldump (untested);
589
590    .. figure:: img/fuelwsrepsst.png
591
592 #. Set up targets for provisioning with non-default "Offloading Modes"
593
594    Some target nodes may require additional configuration after they are
595    PXE booted (bootstrapped); the most frequent changes are in defaults
596    for ethernet devices' "Offloading Modes" settings (e.g. some targets'
597    ethernet drivers may strip VLAN traffic by default).
598
599    If your target ethernet drivers have wrong "Offloading Modes" defaults,
600    in "Configure interfaces" page (described above), expand affected
601    interface's "Offloading Modes" and [un]check the relevant settings
602    (see figure below):
603
604    .. figure:: img/offloadingmodes.png
605
606 #. Set up targets for "Verify Networks" with non-default "Offloading Modes"
607
608    **NOTE**: Check *Reference 15* for an updated and comprehensive list of
609    known issues and/or limitations, including "Offloading Modes" not being
610    applied during "Verify Networks" step.
611
612    Setting custom "Offloading Modes" in Fuel GUI will only apply those settings
613    during provisiong and **not** during "Verify Networks", so if your targets
614    need this change, you have to apply "Offloading Modes" settings by hand
615    to bootstrapped nodes.
616
617    **E.g.**: Our driver has "rx-vlan-filter" default "on" (expected "off") on
618    the Openstack interface(s) "eth1", preventing VLAN traffic from passing
619    during "Verify Networks".
620
621    - From Fuel master console identify target nodes admin IPs (see figure below):
622
623      .. code-block:: bash
624
625          $ fuel nodes
626
627      .. figure:: img/fuelconsole1.png
628
629    - SSH into each of the target nodes and disable "rx-vlan-filter" on the
630      affected physical interface(s) allocated for OpenStack traffic (eth1):
631
632      .. code-block:: bash
633
634          $ ssh root@10.20.0.6 ethtool -K eth1 rx-vlan-filter off
635
636    - Repeat the step above for all affected nodes/interfaces in the POD.
637
638 Verify Networks
639 ===============
640
641 It is important that the Verify Networks action is performed as it will verify
642 that communicate works for the networks you have setup, as well as check that
643 packages needed for a successful deployment can be fetched.
644
645 #. From the FUEL UI in your Environment, Select the Networks Tab and select "Connectivity check" on the left pane (see figure below)
646
647    - Select <Verify Networks>
648
649    - Continue to fix your topology (physical switch, etc) until the "Verification Succeeded" and "Your network is configured correctly" message is shown
650
651    .. figure:: img/verifynet.png
652
653 Deploy Your Environment
654 =======================
655
656 #. Deploy the environment.
657
658     - In the Fuel GUI, click on the "Dashboard" Tab.
659
660     - Click on <Deploy Changes> in the "Ready to Deploy?" section
661
662     - Examine any information notice that pops up and click <Deploy>
663
664     Wait for your deployment to complete, you can view the "Dashboard"
665     Tab to see the progress and status of your deployment.
666
667 =========================
668 Installation health-check
669 =========================
670
671 #. Perform system health-check (see figure below)
672
673     - Click the "Health Check" tab inside your Environment in the FUEL Web UI
674
675     - Check <Select All> and Click <Run Tests>
676
677     - Allow tests to run and investigate results where appropriate
678
679     - Check *Reference 15* for known issues / limitations on AArch64
680
681     .. figure:: img/health.png
682
683
684 =============
685 Release Notes
686 =============
687
688 Please refer to the :ref:`Release Notes <armband-releasenotes>` article.
689
690 ==========
691 References
692 ==========
693
694 OPNFV
695
696 1) `OPNFV Home Page <http://www.opnfv.org>`_
697 2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_
698
699 OpenStack
700
701 3) `OpenStack Newton Release Artifacts <http://www.openstack.org/software/newton>`_
702 4) `OpenStack Documentation <http://docs.openstack.org>`_
703
704 OpenDaylight
705
706 5) `OpenDaylight Artifacts <http://www.opendaylight.org/software/downloads>`_
707
708 Fuel
709
710 6) `The Fuel OpenStack Project <https://wiki.openstack.org/wiki/Fuel>`_
711 7) `Fuel Documentation Overview <http://docs.openstack.org/developer/fuel-docs>`_
712 8) `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_
713 9) `Fuel User Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_
714 10) `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_
715 11) `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_
716 12) `(N/A on AArch64) Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/software/hardware-compatibility/>`_
717
718 Fuel in OPNFV
719
720 13) `OPNFV Installation instruction for the AArch64 Danube release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/release_installation/index.html>`_
721
722 14) `OPNFV Build instruction for the AArch64 Danube release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/development_overview_build/index.html>`_
723
724 15) `OPNFV Release Note for the AArch64 Danube release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/release_release-notes/index.html>`_
725