Update release notes for 6.2
[fuel.git] / docs / release / installation / installation.instruction.rst
index bc1b913..b8a95ff 100644 (file)
@@ -6,80 +6,41 @@
 Abstract
 ========
 
-This document describes how to install the Danube release of
+This document describes how to install the Fraser release of
 OPNFV when using Fuel as a deployment tool, covering its usage,
 limitations, dependencies and required system resources.
+This is an unified documentation for both x86_64 and aarch64
+architectures. All information is common for both architectures
+except when explicitly stated.
 
 ============
 Introduction
 ============
 
 This document provides guidelines on how to install and
-configure the Danube release of OPNFV when using Fuel as a
+configure the Fraser release of OPNFV when using Fuel as a
 deployment tool, including required software and hardware configurations.
 
-Although the available installation options give a high degree of
-freedom in how the system is set-up, including architecture, services
+Although the available installation options provide a high degree of
+freedom in how the system is set up, including architecture, services
 and features, etc., said permutations may not provide an OPNFV
-compliant reference architecture. This instruction provides a
-step-by-step guide that results in an OPNFV Danube compliant
+compliant reference architecture. This document provides a
+step-by-step guide that results in an OPNFV Fraser compliant
 deployment.
 
-The audience of this document is assumed to have good knowledge in
+The audience of this document is assumed to have good knowledge of
 networking and Unix/Linux administration.
 
 =======
 Preface
 =======
 
-Before starting the installation of the Danube release of
+Before starting the installation of the Fraser release of
 OPNFV, using Fuel as a deployment tool, some planning must be
 done.
 
-Retrieving the ISO image
-========================
-
-First of all, the Fuel deployment ISO image needs to be retrieved, the
-Fuel .iso image of the Danube release can be found at `OPNFV Downloads <https://www.opnfv.org/software/download>`_.
-
-Building the ISO image
-======================
-
-Alternatively, you may build the Fuel .iso from source by cloning the
-opnfv/fuel git repository. To retrieve the repository for the Danube
-release use the following command:
-
-.. code-block:: bash
-
-    $ git clone https://gerrit.opnfv.org/gerrit/fuel
-
-Check-out the Danube release tag to set the HEAD to the
-baseline required to replicate the Danube release:
-
-.. code-block:: bash
-
-    $ git checkout danube.2.0
-
-Go to the fuel directory and build the .iso:
-
-.. code-block:: bash
-
-    $ cd fuel/build; make all
-
-For more information on how to build, please see :ref:`Build instruction for Fuel\@OPNFV <fuel-development-overview-build-label>`
-
-Other preparations
-==================
-
-Next, familiarize yourself with Fuel by reading the following documents:
-
-- `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_
-
-- `Fuel User Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_
-
-- `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_
-
-- `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_
+Preparations
+============
 
 Prior to installation, a number of deployment specific parameters must be collected, those are:
 
@@ -103,44 +64,73 @@ Prior to installation, a number of deployment specific parameters must be collec
 This information will be needed for the configuration procedures
 provided in this document.
 
-=====================
-Hardware requirements
-=====================
-
-The following minimum hardware requirements must be met for the
-installation of Danube using Fuel:
-
-+--------------------+------------------------------------------------------+
-| **HW Aspect**      | **Requirement**                                      |
-|                    |                                                      |
-+====================+======================================================+
-| **# of nodes**     | Minimum 5 (3 for non redundant deployment):          |
-|                    |                                                      |
-|                    | - 1 Fuel deployment master (may be virtualized)      |
-|                    |                                                      |
-|                    | - 3(1) Controllers (1 colocated mongo/ceilometer     |
-|                    |   role, 2 Ceph-OSD roles)                            |
-|                    |                                                      |
-|                    | - 1 Compute (1 co-located Ceph-OSD role)             |
-|                    |                                                      |
-+--------------------+------------------------------------------------------+
-| **CPU**            | Minimum 1 socket x86_AMD64 with Virtualization       |
-|                    | support                                              |
-+--------------------+------------------------------------------------------+
-| **RAM**            | Minimum 16GB/server (Depending on VNF work load)     |
-|                    |                                                      |
-+--------------------+------------------------------------------------------+
-| **Disk**           | Minimum 256GB 10kRPM spinning disks                  |
-|                    |                                                      |
-+--------------------+------------------------------------------------------+
-| **Networks**       | 4 Tagged VLANs (PUBLIC, MGMT, STORAGE, PRIVATE)      |
-|                    |                                                      |
-|                    | 1 Un-Tagged VLAN for PXE Boot - ADMIN Network        |
-|                    |                                                      |
-|                    | Note: These can be allocated to a single NIC -       |
-|                    | or spread out over multiple NICs as your hardware    |
-|                    | supports.                                            |
-+--------------------+------------------------------------------------------+
+=========================================
+Hardware Requirements for Virtual Deploys
+=========================================
+
+The following minimum hardware requirements must be met for the virtual
+installation of Fraser using Fuel:
+
++----------------------------+--------------------------------------------------------+
+| **HW Aspect**              | **Requirement**                                        |
+|                            |                                                        |
++============================+========================================================+
+| **1 Jumpserver**           | A physical node (also called Foundation Node) that     |
+|                            | will host a Salt Master VM and each of the VM nodes in |
+|                            | the virtual deploy                                     |
++----------------------------+--------------------------------------------------------+
+| **CPU**                    | Minimum 1 socket with Virtualization support           |
++----------------------------+--------------------------------------------------------+
+| **RAM**                    | Minimum 32GB/server (Depending on VNF work load)       |
++----------------------------+--------------------------------------------------------+
+| **Disk**                   | Minimum 100GB (SSD or SCSI (15krpm) highly recommended)|
++----------------------------+--------------------------------------------------------+
+
+
+===========================================
+Hardware Requirements for Baremetal Deploys
+===========================================
+
+The following minimum hardware requirements must be met for the baremetal
+installation of Fraser using Fuel:
+
++-------------------------+------------------------------------------------------+
+| **HW Aspect**           | **Requirement**                                      |
+|                         |                                                      |
++=========================+======================================================+
+| **# of nodes**          | Minimum 5                                            |
+|                         |                                                      |
+|                         | - 3 KVM servers which will run all the controller    |
+|                         |   services                                           |
+|                         |                                                      |
+|                         | - 2 Compute nodes                                    |
+|                         |                                                      |
++-------------------------+------------------------------------------------------+
+| **CPU**                 | Minimum 1 socket with Virtualization support         |
++-------------------------+------------------------------------------------------+
+| **RAM**                 | Minimum 16GB/server (Depending on VNF work load)     |
++-------------------------+------------------------------------------------------+
+| **Disk**                | Minimum 256GB 10kRPM spinning disks                  |
++-------------------------+------------------------------------------------------+
+| **Networks**            | 4 VLANs (PUBLIC, MGMT, STORAGE, PRIVATE) - can be    |
+|                         | a mix of tagged/native                               |
+|                         |                                                      |
+|                         | 1 Un-Tagged VLAN for PXE Boot - ADMIN Network        |
+|                         |                                                      |
+|                         | Note: These can be allocated to a single NIC -       |
+|                         | or spread out over multiple NICs                     |
++-------------------------+------------------------------------------------------+
+| **1 Jumpserver**        | A physical node (also called Foundation Node) that   |
+|                         | hosts the Salt Master and MaaS VMs                   |
++-------------------------+------------------------------------------------------+
+| **Power management**    | All targets need to have power management tools that |
+|                         | allow rebooting the hardware and setting the boot    |
+|                         | order (e.g. IPMI)                                    |
++-------------------------+------------------------------------------------------+
+
+**NOTE:** All nodes including the Jumpserver must have the same architecture (either x86_64 or aarch64).
+
+**NOTE:** For aarch64 deployments an UEFI compatible firmware with PXE support is needed (e.g. EDK2).
 
 ===============================
 Help with Hardware Requirements
@@ -148,12 +138,13 @@ Help with Hardware Requirements
 
 Calculate hardware requirements:
 
-For information on compatible hardware types available for use, please see `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/software/hardware-compatibility/>`_.
+For information on compatible hardware types available for use,
+please see `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/software/hardware-compatibility/>`_
 
 When choosing the hardware on which you will deploy your OpenStack
 environment, you should think about:
 
-- CPU -- Consider the number of virtual machines that you plan to deploy in your cloud environment and the CPU per virtual machine.
+- CPU -- Consider the number of virtual machines that you plan to deploy in your cloud environment and the CPUs per virtual machine.
 
 - Memory -- Depends on the amount of RAM assigned per virtual machine and the controller node.
 
@@ -162,7 +153,7 @@ environment, you should think about:
 - Networking -- Depends on the Choose Network Topology, the network bandwidth per virtual machine, and network storage.
 
 ================================================
-Top of the rack (TOR) Configuration requirements
+Top of the Rack (TOR) Configuration Requirements
 ================================================
 
 The switching infrastructure provides connectivity for the OPNFV
@@ -182,441 +173,396 @@ the Fuel OPNFV reference platform. All the networks involved in the OPNFV
 infrastructure as well as the provider networks and the private tenant
 VLANs needs to be manually configured.
 
-Manual configuration of the Danube hardware platform should
+Manual configuration of the Fraser hardware platform should
 be carried out according to the `OPNFV Pharos Specification
 <https://wiki.opnfv.org/display/pharos/Pharos+Specification>`_.
 
-==========================================
-OPNFV Software installation and deployment
-==========================================
-
-This section describes the installation of the OPNFV installation
-server (Fuel master) as well as the deployment of the full OPNFV
-reference platform stack across a server cluster.
-
-Install Fuel master
-===================
-
-#. Mount the Danube Fuel ISO file/media as a boot device to the jump host server.
-
-#. Reboot the jump host to establish the Fuel server.
-
-   - The system now boots from the ISO image.
-
-   - Select "Fuel Install (Static IP)" (See figure below)
-
-   - Press [Enter].
-
-   .. figure:: img/grub-1.png
-
-#. Wait until the Fuel setup screen is shown (Note: This can take up to 30 minutes).
-
-#. In the "Fuel User" section - Confirm/change the default password (See figure below)
-
-   - Enter "admin" in the Fuel password input
-
-   - Enter "admin" in the Confirm password input
-
-   - Select "Check" and press [Enter]
-
-   .. figure:: img/fuelmenu1.png
-
-#. 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).
-
-   - Configure eth1 or other network interfaces here as well (if you have them present on your FUEL server).
-
-   .. figure:: img/fuelmenu2.png
-
-#. In the "PXE Setup" section (see figure below) - Change the following fields to appropriate values (example below):
-
-   - DHCP Pool Start 10.20.0.4
-
-   - DHCP Pool End 10.20.0.254
-
-   - DHCP Pool Gateway  10.20.0.2 (IP address of Fuel node)
-
-   .. figure:: img/fuelmenu3.png
-
-#. In the "DNS & Hostname" section (see figure below) - Change the following fields to appropriate values:
-
-   - Hostname
-
-   - Domain
-
-   - Search Domain
-
-   - External DNS
-
-   - Hostname to test DNS
-
-   - Select <Check> and press [Enter]
-
-   .. figure:: img/fuelmenu4.png
-
-
-#. OPTION TO ENABLE PROXY SUPPORT - In the "Bootstrap Image" section (see figure below), edit the following fields to define a proxy. (**NOTE:** cannot be used in tandem with local repository support)
-
-   - Navigate to "HTTP proxy" and enter your http proxy address
-
-   - Select <Check> and press [Enter]
-
-   .. figure:: img/fuelmenu5.png
-
-#. In the "Time Sync" section (see figure below) - Change the following fields to appropriate values:
-
-   - NTP Server 1 <Customer NTP server 1>
-
-   - NTP Server 2 <Customer NTP server 2>
-
-   - NTP Server 3 <Customer NTP server 3>
-
-   .. figure:: img/fuelmenu6.png
-
-#. Start the installation.
+============================
+OPNFV Software Prerequisites
+============================
 
-   - Select Quit Setup and press Save and Quit.
+The Jumpserver node should be pre-provisioned with an operating system,
+according to the Pharos specification. Relevant network bridges should
+also be pre-configured (e.g. admin_br, mgmt_br, public_br).
 
-   - The installation will now start, wait until the login screen is shown.
+- The admin bridge (admin_br) is mandatory for the baremetal nodes PXE booting during Fuel installation.
+- The management bridge (mgmt_br) is required for testing suites (e.g. functest/yardstick), it is
+  suggested to pre-configure it for debugging purposes.
+- The public bridge (public_br) is also nice to have for debugging purposes, but not mandatory.
 
-Boot the Node Servers
-=====================
+The user running the deploy script on the Jumpserver should belong to "sudo" and "libvirt" groups,
+and have passwordless sudo access.
 
-After the Fuel Master node has rebooted from the above steps and is at
-the login prompt, you should boot the Node Servers (Your
-Compute/Control/Storage blades, nested or real) with a PXE booting
-scheme so that the FUEL Master can pick them up for control.
+The following example adds the groups to the user "jenkins"
 
-#. Enable PXE booting
-
-   - For every controller and compute server: enable PXE Booting as the first boot device in the BIOS boot order menu, and hard disk as the second boot device in the same menu.
-
-#. Reboot all the control and compute blades.
-
-#. Wait for the availability of nodes showing up in the Fuel GUI.
-
-   - Connect to the FUEL UI via the URL provided in the Console (default: https://10.20.0.2:8443)
-
-   - Wait until all nodes are displayed in top right corner of the Fuel GUI: Total nodes and Unallocated nodes (see figure below).
-
-   .. figure:: img/nodes.png
-
-Install additional Plugins/Features on the FUEL node
-====================================================
-
-#. SSH to your FUEL node (e.g. root@10.20.0.2  pwd: r00tme)
-
-#. Select wanted plugins/features from the /opt/opnfv/ directory.
-
-#. Install the wanted plugin with the command
-
-    .. code-block:: bash
-
-        $ fuel plugins --install /opt/opnfv/<plugin-name>-<version>.<arch>.rpm
-
-    Expected output (see figure below):
-
-    .. code-block:: bash
-
-        Plugin ....... was successfully installed.
-
-   .. figure:: img/plugin_install.png
-
-Create an OpenStack Environment
-===============================
-
-#. Connect to Fuel WEB UI with a browser (default: https://10.20.0.2:8443) (login: admin/admin)
-
-#. Create and name a new OpenStack environment, to be installed.
-
-   .. figure:: img/newenv.png
-
-#. Select "<Mitaka on Ubuntu 14.04>" and press <Next>
-
-#. Select "compute virtulization method".
-
-   - Select "QEMU-KVM as hypervisor" and press <Next>
-
-#. Select "network mode".
-
-   - Select "Neutron with ML2 plugin"
-
-   - Select "Neutron with tunneling segmentation" (Required when using the ODL or ONOS plugins)
-
-   - Press <Next>
-
-#. Select "Storage Back-ends".
-
-   - Select "Ceph for block storage" and press <Next>
-
-#. Select "additional services" you wish to install.
-
-   - Check option "Install Ceilometer and Aodh" and press <Next>
-
-#. Create the new environment.
-
-   - Click <Create> Button
-
-Configure the network environment
-=================================
-
-#. Open the environment you previously created.
-
-#. Open the networks tab and select the "default" Node Networks group to on the left pane (see figure below).
-
-   .. figure:: img/network.png
-
-#. Update the Public network configuration and change the following fields to appropriate values:
-
-   - CIDR to <CIDR for Public IP Addresses>
-
-   - IP Range Start to <Public IP Address start>
-
-   - IP Range End to <Public IP Address end>
-
-   - Gateway to <Gateway for Public IP Addresses>
-
-   - Check <VLAN tagging>.
-
-   - Set appropriate VLAN id.
-
-#. Update the Storage Network Configuration
-
-   - Set CIDR to appropriate value  (default 192.168.1.0/24)
-
-   - Set IP Range Start to appropriate value (default 192.168.1.1)
-
-   - Set IP Range End to appropriate value (default 192.168.1.254)
-
-   - Set vlan to appropriate value  (default 102)
-
-#. Update the Management network configuration.
-
-   - Set CIDR to appropriate value (default 192.168.0.0/24)
-
-   - Set IP Range Start to appropriate value (default 192.168.0.1)
-
-   - Set IP Range End to appropriate value (default 192.168.0.254)
+.. code-block:: bash
 
-   - Check <VLAN tagging>.
+    $ sudo usermod -aG sudo jenkins
+    $ sudo usermod -aG libvirt jenkins
+    $ reboot
+    $ groups
+    jenkins sudo libvirt
 
-   - Set appropriate VLAN id. (default 101)
+    $ sudo visudo
+    ...
+    %jenkins ALL=(ALL) NOPASSWD:ALL
 
-#. Update the Private Network Information
+The folder containing the temporary deploy artifacts (/home/jenkins/tmpdir in the examples below)
+needs to have mask 777 in order for libvirt to be able to use them.
 
-   - Set CIDR to appropriate value (default 192.168.2.0/24
+.. code-block:: bash
 
-   - Set IP Range Start to appropriate value (default 192.168.2.1)
+    $ mkdir -p -m 777 /home/jenkins/tmpdir
 
-   - Set IP Range End to appropriate value (default 192.168.2.254)
+For an AArch64 Jumpserver, the "libvirt" minimum required version is 3.x, 3.5 or newer highly recommended.
+While not mandatory, upgrading the kernel and QEMU on the Jumpserver is also highly recommended
+(especially on AArch64 Jumpservers).
 
-   - Check <VLAN tagging>.
+For CentOS 7.4 (AArch64), distro provided packages are already new enough.
+For Ubuntu 16.04 (arm64), distro packages are too old and 3rd party repositories should be used.
+For convenience, Armband provides a DEB repository holding all the required packages.
 
-   - Set appropriate VLAN tag (default 103)
+To add and enable the Armband repository on an Ubuntu 16.04 system,
+create a new sources list file `/apt/sources.list.d/armband.list` with the following contents:
 
-#. Select the "Neutron L3" Node Networks group on the left pane.
+.. code-block:: bash
 
-   .. figure:: img/neutronl3.png
+    $ cat /etc/apt/sources.list.d/armband.list
+    //for OpenStack Pike release
+    deb http://linux.enea.com/mcp-repos/pike/xenial pike-armband main
 
-#. Update the Floating Network configuration.
+    $ apt-get update
 
-   - Set the Floating IP range start (default 172.16.0.130)
+Fuel@OPNFV has been validated by CI using the following distributions
+installed on the Jumpserver:
 
-   - Set the Floating IP range end (default 172.16.0.254)
+- CentOS 7 (recommended by Pharos specification);
+- Ubuntu Xenial;
 
-   - Set the Floating network name (default admin_floating_net)
+**NOTE**: The install script expects 'libvirt' to be already running on the Jumpserver. In case libvirt
+packages are missing, the script will install them; but depending on the OS distribution, the user
+might have to start the 'libvirtd' service manually, then run the deploy script again. Therefore, it
+is recommended to install libvirt-bin explicitly on the Jumpserver before the deployment.
 
-#. Update the Internal Network configuration.
+**NOTE**: It is also recommended to install the newer kernel on the Jumpserver before the deployment.
 
-   - Set Internal network CIDR to an appropriate value (default 192.168.111.0/24)
+**NOTE**: The install script will automatically install the rest of required distro package
+dependencies on the Jumpserver, unless explicitly asked not to (via -P deploy arg). This includes
+Python, QEMU, libvirt etc.
 
-   - Set Internal network gateway to an appropriate value
+**NOTE**: The install script will alter Jumpserver sysconf and disable `net.bridge.bridge-nf-call`.
 
-   - Set the Internal network name (default admin_internal_net)
+.. code-block:: bash
 
-#. Update the Guest OS DNS servers.
+    $ apt-get install linux-image-generic-hwe-16.04-edge libvirt-bin
 
-   - Set Guest OS DNS Server values appropriately
 
-#. Save Settings.
+==========================================
+OPNFV Software Installation and Deployment
+==========================================
 
-#. Select the "Other" Node Networks group on the left pane (see figure below).
+This section describes the process of installing all the components needed to
+deploy the full OPNFV reference platform stack across a server cluster.
+
+The installation is done with Mirantis Cloud Platform (MCP), which is based on
+a reclass model. This model provides the formula inputs to Salt, to make the deploy
+automatic based on deployment scenario.
+The reclass model covers:
+
+   - Infrastructure node definition: Salt Master node (cfg01) and MaaS node (mas01)
+   - OpenStack node definition: Controller nodes (ctl01, ctl02, ctl03) and Compute nodes (cmp001, cmp002)
+   - Infrastructure components to install (software packages, services etc.)
+   - OpenStack components and services (rabbitmq, galera etc.), as well as all configuration for them
 
-   .. figure:: img/other.png
 
-#. Update the Public network assignment.
+Automatic Installation of a Virtual POD
+=======================================
 
-   - Check the box for "Assign public network to all nodes" (Required by OpenDaylight)
+For virtual deploys all the targets are VMs on the Jumpserver. The deploy script will:
 
-#. Update Host OS DNS Servers.
+   - Create a Salt Master VM on the Jumpserver which will drive the installation
+   - Create the bridges for networking with virsh (only if a real bridge does not already exist for a given network)
+   - Install OpenStack on the targets
+      - Leverage Salt to install & configure OpenStack services
 
-   - Provide the DNS server settings
+.. figure:: img/fuel_virtual.png
+   :align: center
+   :alt: Fuel@OPNFV Virtual POD Network Layout Examples
 
-#. Update Host OS NTP Servers.
+   Fuel@OPNFV Virtual POD Network Layout Examples
 
-   - Provide the NTP server settings
+   +-----------------------+------------------------------------------------------------------------+
+   | cfg01                 | Salt Master VM                                                         |
+   +-----------------------+------------------------------------------------------------------------+
+   | ctl01                 | Controller VM                                                          |
+   +-----------------------+------------------------------------------------------------------------+
+   | cmp01/cmp02           | Compute VMs                                                            |
+   +-----------------------+------------------------------------------------------------------------+
+   | gtw01                 | Gateway VM with neutron services (dhcp agent, L3 agent, metadata, etc) |
+   +-----------------------+------------------------------------------------------------------------+
+   | odl01                 | VM on which ODL runs (for scenarios deployed with ODL)                 |
+   +-----------------------+------------------------------------------------------------------------+
 
-Select Hypervisor type
-======================
 
-#. In the FUEL UI of your Environment, click the "Settings" Tab
+In this figure there are examples of two virtual deploys:
+   - Jumphost 1 has only virsh bridges, created by the deploy script
+   - Jumphost 2 has a mix of Linux and virsh bridges; When Linux bridge exists for a specified network,
+     the deploy script will skip creating a virsh bridge for it
 
-#. Select "Compute" on the left side pane (see figure below)
+**Note**: A virtual network "mcpcontrol" is always created for initial connection
+of the VMs on Jumphost.
 
-   - Check the KVM box and press "Save settings"
 
-   .. figure:: img/compute.png
+Automatic Installation of a Baremetal POD
+=========================================
 
-Enable Plugins
-==============
+The baremetal installation process can be done by editing the information about
+hardware and environment in the reclass files, or by using the files Pod Descriptor
+File (PDF) and Installer Descriptor File (IDF) as described in the OPNFV Pharos project.
+These files contain all the information about the hardware and network of the deployment
+that will be fed to the reclass model during deployment.
 
-#. In the FUEL UI of your Environment, click the "Settings" Tab
+The installation is done automatically with the deploy script, which will:
 
-#. Select Other on the left side pane (see figure below)
+   - Create a Salt Master VM on the Jumpserver which will drive the installation
+   - Create a MaaS Node VM on the Jumpserver which will provision the targets
+   - Install OpenStack on the targets
+      - Leverage MaaS to provision baremetal nodes with the operating system
+      - Leverage Salt to configure the operating system on the baremetal nodes
+      - Leverage Salt to install & configure OpenStack services
 
-   - Enable and configure the plugins of your choice
+.. figure:: img/fuel_baremetal.png
+   :align: center
+   :alt: Fuel@OPNFV Baremetal POD Network Layout Example
 
-   .. figure:: img/plugins.png
+   Fuel@OPNFV Baremetal POD Network Layout Example
 
-Allocate nodes to environment and assign functional roles
-=========================================================
+   +-----------------------+---------------------------------------------------------+
+   | cfg01                 | Salt Master VM                                          |
+   +-----------------------+---------------------------------------------------------+
+   | mas01                 | MaaS Node VM                                            |
+   +-----------------------+---------------------------------------------------------+
+   | kvm01..03             | Baremetals which hold the VMs with controller functions |
+   +-----------------------+---------------------------------------------------------+
+   | cmp001/cmp002         | Baremetal compute nodes                                 |
+   +-----------------------+---------------------------------------------------------+
+   | prx01/prx02           | Proxy VMs for Nginx                                     |
+   +-----------------------+---------------------------------------------------------+
+   | msg01..03             | RabbitMQ Service VMs                                    |
+   +-----------------------+---------------------------------------------------------+
+   | dbs01..03             | MySQL service VMs                                       |
+   +-----------------------+---------------------------------------------------------+
+   | mdb01..03             | Telemetry VMs                                           |
+   +-----------------------+---------------------------------------------------------+
+   | odl01                 | VM on which ODL runs (for scenarios deployed with ODL)  |
+   +-----------------------+---------------------------------------------------------+
+   | Tenant VM             | VM running in the cloud                                 |
+   +-----------------------+---------------------------------------------------------+
 
-#. Click on the "Nodes" Tab in the FUEL WEB UI (see figure below).
+In the baremetal deploy all bridges but "mcpcontrol" are Linux bridges. For the Jumpserver, it is
+required to pre-configure at least the admin_br bridge for the PXE/Admin.
+For the targets, the bridges are created by the deploy script.
 
-    .. figure:: img/addnodes.png
+**Note**: A virtual network "mcpcontrol" is always created for initial connection
+of the VMs on Jumphost.
 
-#. Assign roles (see figure below).
 
-    - Click on the <+Add Nodes> button
+Steps to Start the Automatic Deploy
+===================================
 
-    - Check <Controller>, <Telemetry - MongoDB>  and optionally an SDN Controller role (OpenDaylight controller/ONOS) in the "Assign Roles" Section.
+These steps are common both for virtual and baremetal deploys.
 
-    - Check one node which you want to act as a Controller from the bottom half of the screen
+#. Clone the Fuel code from gerrit
 
-    - Click <Apply Changes>.
+   For x86_64
 
-    - Click on the <+Add Nodes> button
+   .. code-block:: bash
 
-    - Check the <Controller> and <Storage - Ceph OSD> roles.
+       $ git clone https://git.opnfv.org/fuel
+       $ cd fuel
 
-    - Check the two next nodes you want to act as Controllers from the bottom half of the screen
+   For aarch64
 
-    - Click <Apply Changes>
+   .. code-block:: bash
 
-    - Click on <+Add Nodes> button
+       $ git clone https://git.opnfv.org/armband
+       $ cd armband
 
-    - Check the <Compute> and <Storage - Ceph OSD> roles.
+#. Checkout the Fraser release
 
-    - Check the Nodes you want to act as Computes from the bottom half of the screen
+   .. code-block:: bash
 
-    - Click <Apply Changes>.
+       $ git checkout opnfv-6.2.0
 
-    .. figure:: img/computelist.png
+#. Start the deploy script
 
-#. Configure interfaces (see figure below).
+    Besides the basic options,  there are other recommended deploy arguments:
 
-    - Check Select <All> to select all allocated nodes
+    - use **-D** option to enable the debug info
+    - use **-S** option to point to a tmp dir where the disk images are saved. The images will be
+      re-used between deploys
+    - use **|& tee** to save the deploy log to a file
 
-    - Click <Configure Interfaces>
+   .. code-block:: bash
 
-    - Assign interfaces (bonded) for mgmt-, admin-, private-, public- and storage networks
+       $ ci/deploy.sh -l <lab_name> \
+                      -p <pod_name> \
+                      -b <URI to configuration repo containing the PDF file> \
+                      -s <scenario> \
+                      -D \
+                      -S <Storage directory for disk images> |& tee deploy.log
 
-    - Click <Apply>
+Examples
+--------
+#. Virtual deploy
 
-    .. figure:: img/interfaceconf.png
+   To start a virtual deployment, it is required to have the `virtual` keyword
+   while specifying the pod name to the installer script.
 
+   It will create the required bridges and networks, configure Salt Master and
+   install OpenStack.
 
-Target specific configuration
-=============================
+      .. code-block:: bash
 
-#. Set up targets for provisioning with non-default "Offloading Modes"
+          $ ci/deploy.sh -l ericsson \
+                         -p virtual3 \
+                         -s os-nosdn-nofeature-noha \
+                         -D \
+                         -S /home/jenkins/tmpdir |& tee deploy.log
 
-   Some target nodes may require additional configuration after they are
-   PXE booted (bootstrapped); the most frequent changes are in defaults
-   for ethernet devices' "Offloading Modes" settings (e.g. some targets'
-   ethernet drivers may strip VLAN traffic by default).
+   Once the deployment is complete, the OpenStack Dashboard, Horizon, is
+   available at http://<controller VIP>:8078
+   The administrator credentials are **admin** / **opnfv_secret**.
 
-   If your target ethernet drivers have wrong "Offloading Modes" defaults,
-   in "Configure interfaces" page (described above), expand affected
-   interface's "Offloading Modes" and [un]check the relevant settings
-   (see figure below):
+#. Baremetal deploy
 
-   .. figure:: img/offloadingmodes.png
+   A x86 deploy on pod2 from Linux Foundation lab
 
-#. Set up targets for "Verify Networks" with non-default "Offloading Modes"
+      .. code-block:: bash
 
-   **NOTE**: Check *Reference 15* for an updated and comprehensive list of
-   known issues and/or limitations, including "Offloading Modes" not being
-   applied during "Verify Networks" step.
+          $ ci/deploy.sh -l lf \
+                         -p pod2 \
+                         -s os-nosdn-nofeature-ha \
+                         -D \
+                         -S /home/jenkins/tmpdir |& tee deploy.log
 
-   Setting custom "Offloading Modes" in Fuel GUI will only apply those settings
-   during provisiong and **not** during "Verify Networks", so if your targets
-   need this change, you have to apply "Offloading Modes" settings by hand
-   to bootstrapped nodes.
+      .. figure:: img/lf_pod2.png
+         :align: center
+         :alt: Fuel@OPNFV LF POD2 Network Layout
 
-   **E.g.**: Our driver has "rx-vlan-filter" default "on" (expected "off") on
-   the Openstack interface(s) "eth1", preventing VLAN traffic from passing
-   during "Verify Networks".
+         Fuel@OPNFV LF POD2 Network Layout
 
-   - From Fuel master console identify target nodes admin IPs (see figure below):
+   An aarch64 deploy on pod5 from Arm lab
 
-     .. code-block:: bash
+      .. code-block:: bash
 
-         $ fuel nodes
+          $ ci/deploy.sh -l arm \
+                         -p pod5 \
+                         -s os-nosdn-nofeature-ha \
+                         -D \
+                         -S /home/jenkins/tmpdir |& tee deploy.log
 
-     .. figure:: img/fuelconsole1.png
+      .. figure:: img/arm_pod5.png
+         :align: center
+         :alt: Fuel@OPNFV ARM POD5 Network Layout
 
-   - SSH into each of the target nodes and disable "rx-vlan-filter" on the
-     affected physical interface(s) allocated for OpenStack traffic (eth1):
+         Fuel@OPNFV ARM POD5 Network Layout
 
-     .. code-block:: bash
+   Once the deployment is complete, the SaltStack Deployment Documentation is
+   available at http://<proxy public VIP>:8090
 
-         $ ssh root@10.20.0.6 ethtool -K eth1 rx-vlan-filter off
+**NOTE**: The deployment uses the OPNFV Pharos project as input (PDF and IDF files)
+for hardware and network configuration of all current OPNFV PODs.
+When deploying a new POD, one can pass the `-b` flag to the deploy script to override
+the path for the labconfig directory structure containing the PDF and IDF.
 
-   - Repeat the step above for all affected nodes/interfaces in the POD.
+   .. code-block:: bash
 
-Verify Networks
-===============
+       $ ci/deploy.sh -b file://<absolute_path_to_labconfig> \
+                      -l <lab_name> \
+                      -p <pod_name> \
+                      -s <scenario> \
+                      -D \
+                      -S <tmp_folder> |& tee deploy.log
 
-It is important that the Verify Networks action is performed as it will verify
-that communicate works for the networks you have setup, as well as check that
-packages needed for a successful deployment can be fetched.
+   - <absolute_path_to_labconfig> is the absolute path to a local directory, populated
+     similar to Pharos, i.e. PDF/IDF reside in <absolute_path_to_labconfig>/labs/<lab_name>
+   - <lab_name> is the same as the directory in the path above
+   - <pod_name> is the name used for the PDF (<pod_name>.yaml) and IDF (idf-<pod_name>.yaml) files
 
-#. From the FUEL UI in your Environment, Select the Networks Tab and select "Connectivity check" on the left pane (see figure below)
 
-   - Select <Verify Networks>
 
-   - Continue to fix your topology (physical switch, etc) until the "Verification Succeeded" and "Your network is configured correctly" message is shown
+Pod and Installer Descriptor Files
+==================================
 
-   .. figure:: img/verifynet.png
+Descriptor files provide the installer with an abstraction of the target pod
+with all its hardware characteristics and required parameters. This information
+is split into two different files:
+Pod Descriptor File (PDF) and Installer Descriptor File (IDF).
 
-Deploy Your Environment
-=======================
+The Pod Descriptor File is a hardware description of the pod
+infrastructure. The information is modeled under a yaml structure.
+A reference file with the expected yaml structure is available at
+*mcp/config/labs/local/pod1.yaml*
 
-#. Deploy the environment.
+The hardware description is arranged into a main "jumphost" node and a "nodes"
+set for all target boards. For each node the following characteristics
+are defined:
 
-    - In the Fuel GUI, click on the "Dashboard" Tab.
+- Node parameters including CPU features and total memory.
+- A list of available disks.
+- Remote management parameters.
+- Network interfaces list including mac address, speed, advanced features and name.
 
-    - Click on <Deploy Changes> in the "Ready to Deploy?" section
+**Note**: The fixed IPs are ignored by the MCP installer script and it will instead
+assign based on the network ranges defined in IDF.
 
-    - Examine any information notice that pops up and click <Deploy>
+The Installer Descriptor File extends the PDF with pod related parameters
+required by the installer. This information may differ per each installer type
+and it is not considered part of the pod infrastructure.
+The IDF file must be named after the PDF with the prefix "idf-". A reference file with the expected
+structure is available at *mcp/config/labs/local/idf-pod1.yaml*
 
-    Wait for your deployment to complete, you can view the "Dashboard"
-    Tab to see the progress and status of your deployment.
+The file follows a yaml structure and two sections "net_config" and "fuel" are expected.
 
-=========================
-Installation health-check
-=========================
+The "net_config" section describes all the internal and provider networks
+assigned to the pod. Each used network is expected to have a vlan tag, IP subnet and
+attached interface on the boards. Untagged vlans shall be defined as "native".
 
-#. Perform system health-check (see figure below)
+The "fuel" section defines several sub-sections required by the Fuel installer:
 
-    - Click the "Health Check" tab inside your Environment in the FUEL Web UI
+- jumphost: List of bridge names for each network on the Jumpserver.
+- network: List of device name and bus address info of all the target nodes.
+  The order must be aligned with the order defined in PDF file. Fuel installer relies on the IDF model
+  to setup all node NICs by defining the expected device name and bus address.
+- maas: Defines the target nodes commission timeout and deploy timeout. (optional)
+- reclass: Defines compute parameter tuning, including huge pages, cpu pinning
+  and other DPDK settings. (optional)
 
-    - Check <Select All> and Click <Run Tests>
+The following parameters can be defined in the IDF files under "reclass". Those value will
+overwrite the default configuration values in Fuel repository:
 
-    - Allow tests to run and investigate results where appropriate
+- nova_cpu_pinning: List of CPU cores nova will be pinned to. Currently disabled.
+- compute_hugepages_size: Size of each persistent huge pages. Usual values are '2M' and '1G'.
+- compute_hugepages_count: Total number of persistent huge pages.
+- compute_hugepages_mount: Mount point to use for huge pages.
+- compute_kernel_isolcpu: List of certain CPU cores that are isolated from Linux scheduler.
+- compute_dpdk_driver: Kernel module to provide userspace I/O support.
+- compute_ovs_pmd_cpu_mask: Hexadecimal mask of CPUs to run DPDK Poll-mode drivers.
+- compute_ovs_dpdk_socket_mem: Set of amount huge pages in MB to be used by OVS-DPDK daemon
+  taken for each NUMA node. Set size is equal to NUMA nodes count, elements are divided by comma.
+- compute_ovs_dpdk_lcore_mask: Hexadecimal mask of DPDK lcore parameter used to run DPDK processes.
+- compute_ovs_memory_channels: Number of memory channels to be used.
+- dpdk0_driver: NIC driver to use for physical network interface.
+- dpdk0_n_rxq: Number of RX queues.
 
-    .. figure:: img/health.png
 
+The full description of the PDF and IDF file structure are available as yaml schemas.
+The schemas are defined as a git submodule in Fuel repository. Input files provided
+to the installer will be validated against the schemas.
+
+- *mcp/scripts/pharos/config/pdf/pod1.schema.yaml*
+- *mcp/scripts/pharos/config/pdf/idf-pod1.schema.yaml*
 
 =============
 Release Notes
@@ -628,22 +574,30 @@ Please refer to the :ref:`Release Notes <fuel-release-notes-label>` article.
 References
 ==========
 
+OPNFV
+
+1) `OPNFV Home Page <http://www.opnfv.org>`_
+2) `OPNFV documentation <http://docs.opnfv.org>`_
+3) `Software downloads <https://www.opnfv.org/software/download>`_
+
 OpenStack
 
-3) `OpenStack Newton Release Artifacts <http://www.openstack.org/software/newton>`_
-4) `OpenStack Documentation <http://docs.openstack.org>`_
+4) `OpenStack Pike Release Artifacts <http://www.openstack.org/software/pike>`_
+5) `OpenStack Documentation <http://docs.openstack.org>`_
 
 OpenDaylight
 
-5) `OpenDaylight Artifacts <http://www.opendaylight.org/software/downloads>`_
+6) `OpenDaylight Artifacts <http://www.opendaylight.org/software/downloads>`_
 
 Fuel
 
-6) `The Fuel OpenStack Project <https://wiki.openstack.org/wiki/Fuel>`_
-7) `Fuel Documentation Overview <http://docs.openstack.org/developer/fuel-docs>`_
-8) `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_
-9) `Fuel User Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_
-10) `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_
-11) `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_
-12) `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/software/hardware-compatibility/>`_
+7) `Mirantis Cloud Platform Documentation <https://docs.mirantis.com/mcp/latest>`_
+
+Salt
+
+8) `Saltstack Documentation <https://docs.saltstack.com/en/latest/topics>`_
+9) `Saltstack Formulas <http://salt-formulas.readthedocs.io/en/latest/develop/overview-reclass.html>`_
+
+Reclass
 
+10) `Reclass model <http://reclass.pantsfullofunix.net>`_