diff options
-rw-r--r-- | book-enea-nfv-core-installation-guide/doc/book.xml | 2 | ||||
-rw-r--r-- | book-enea-nfv-core-installation-guide/doc/high_availability.xml | 28 | ||||
-rw-r--r-- | book-enea-nfv-core-installation-guide/doc/images/dns.png | bin | 11639 -> 10997 bytes | |||
-rw-r--r-- | book-enea-nfv-core-installation-guide/doc/images/dns.svg | 2 | ||||
-rw-r--r-- | book-enea-nfv-core-installation-guide/doc/installation_instructions.xml | 169 | ||||
-rw-r--r-- | book-enea-nfv-core-installation-guide/doc/post_deploy_config.xml | 119 |
6 files changed, 79 insertions, 241 deletions
diff --git a/book-enea-nfv-core-installation-guide/doc/book.xml b/book-enea-nfv-core-installation-guide/doc/book.xml index 62d46f6..fcba092 100644 --- a/book-enea-nfv-core-installation-guide/doc/book.xml +++ b/book-enea-nfv-core-installation-guide/doc/book.xml | |||
@@ -10,7 +10,7 @@ | |||
10 | <xi:include href="../../s_docbuild/template/docsrc_common/bookinfo_userdoc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 10 | <xi:include href="../../s_docbuild/template/docsrc_common/bookinfo_userdoc.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
11 | <xi:include href="about_release.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 11 | <xi:include href="about_release.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
12 | <xi:include href="installation_instructions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 12 | <xi:include href="installation_instructions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
13 | <xi:include href="post_deploy_config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 13 | <!-- <xi:include href="post_deploy_config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> |
14 | <xi:include href="hw_features.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 14 | <xi:include href="hw_features.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
15 | <xi:include href="high_availability.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 15 | <xi:include href="high_availability.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
16 | <xi:include href="use_cases_per_target_node.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> | 16 | <xi:include href="use_cases_per_target_node.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> |
diff --git a/book-enea-nfv-core-installation-guide/doc/high_availability.xml b/book-enea-nfv-core-installation-guide/doc/high_availability.xml index 4fe02fe..6d1a9c7 100644 --- a/book-enea-nfv-core-installation-guide/doc/high_availability.xml +++ b/book-enea-nfv-core-installation-guide/doc/high_availability.xml | |||
@@ -305,7 +305,7 @@ | |||
305 | 305 | ||
306 | <para>The Zabbix configuration dashboard is available at the same IP | 306 | <para>The Zabbix configuration dashboard is available at the same IP |
307 | address where OpenStack can be reached, e.g. | 307 | address where OpenStack can be reached, e.g. |
308 | <literal>http://<vip__zbx_vip_mgmt>/zabbix</literal>.</para> | 308 | <literal>http://10.0.6.42/zabbix</literal>.</para> |
309 | 309 | ||
310 | <para>To forward zabbix events to Vitrage, a new media script needs to | 310 | <para>To forward zabbix events to Vitrage, a new media script needs to |
311 | be created and associated with a user. Follow the steps below as a | 311 | be created and associated with a user. Follow the steps below as a |
@@ -550,8 +550,8 @@ root@node-6:~# systemctl restart vitrage-graph</programlisting> | |||
550 | <title>Pacemaker High Availability</title> | 550 | <title>Pacemaker High Availability</title> |
551 | 551 | ||
552 | <para>Many of the OpenStack solutions which offer High Availability | 552 | <para>Many of the OpenStack solutions which offer High Availability |
553 | characteristics employ pacemaker for achieving highly available OpenStack | 553 | characteristics employ Pacemaker for achieving highly available OpenStack |
554 | services. Traditionally pacemaker has been used for managing only the | 554 | services. Traditionally Pacemaker has been used for managing only the |
555 | control plane services, so it can effectively provide redundancy and | 555 | control plane services, so it can effectively provide redundancy and |
556 | recovery for the Controller nodes only. A reason for this is that | 556 | recovery for the Controller nodes only. A reason for this is that |
557 | Controller nodes and Compute nodes essentially have very different High | 557 | Controller nodes and Compute nodes essentially have very different High |
@@ -572,9 +572,9 @@ root@node-6:~# systemctl restart vitrage-graph</programlisting> | |||
572 | understood and experimented with, and the basis for this is Pacemaker | 572 | understood and experimented with, and the basis for this is Pacemaker |
573 | using Corosync underneath.</para> | 573 | using Corosync underneath.</para> |
574 | 574 | ||
575 | <para>Extending the use of pacemaker to Compute nodes was thought as a | 575 | <para>Extending the use of Pacemaker to Compute nodes was thought as a |
576 | possible solution for providing VNF high availability, but the problem | 576 | possible solution for providing VNF high availability, but the problem |
577 | turned out to be more complicated. On one hand, pacemaker as a clustering | 577 | turned out to be more complicated. On one hand, Pacemaker as a clustering |
578 | tool, can only scale properly up to a limited number of nodes, usually | 578 | tool, can only scale properly up to a limited number of nodes, usually |
579 | less than 128. This poses a problem for large scale deployments where | 579 | less than 128. This poses a problem for large scale deployments where |
580 | hundreds of compute nodes are required. On the other hand, Compute node | 580 | hundreds of compute nodes are required. On the other hand, Compute node |
@@ -584,20 +584,20 @@ root@node-6:~# systemctl restart vitrage-graph</programlisting> | |||
584 | <section id="pm_remote"> | 584 | <section id="pm_remote"> |
585 | <title>Pacemaker Remote</title> | 585 | <title>Pacemaker Remote</title> |
586 | 586 | ||
587 | <para>As mentioned earlier, pacemaker and corosync do not scale well | 587 | <para>As mentioned earlier, Pacemaker and corosync do not scale well |
588 | over a large cluster, since each node has to talk to every other, | 588 | over a large cluster, since each node has to talk to every other, |
589 | essentially creating a mesh configuration. A solution to this problem | 589 | essentially creating a mesh configuration. A solution to this problem |
590 | could be partitioning the cluster into smaller groups, but this has its | 590 | could be partitioning the cluster into smaller groups, but this has its |
591 | limitations and it is generally difficult to manage.</para> | 591 | limitations and it is generally difficult to manage.</para> |
592 | 592 | ||
593 | <para>A better solution is using <literal>pacemaker-remote</literal>, a | 593 | <para>A better solution is using <literal>pacemaker-remote</literal>, a |
594 | feature of pacemaker, which allows for extending the cluster beyond the | 594 | feature of Pacemaker, which allows for extending the cluster beyond the |
595 | usual limits by using the pacemaker monitoring capabilities. It | 595 | usual limits by using the Pacemaker monitoring capabilities. It |
596 | essentially creates a new type of resource which enables adding light | 596 | essentially creates a new type of resource which enables adding light |
597 | weight nodes to the cluster. More information about pacemaker-remote can | 597 | weight nodes to the cluster. More information about pacemaker-remote can |
598 | be found on the official clusterlabs website.</para> | 598 | be found on the official clusterlabs website.</para> |
599 | 599 | ||
600 | <para>Please note that at this moment pacemaker remote must be | 600 | <para>Please note that at this moment Pacemaker remote must be |
601 | configured manually after deployment. Here are the manual steps for | 601 | configured manually after deployment. Here are the manual steps for |
602 | doing so:</para> | 602 | doing so:</para> |
603 | 603 | ||
@@ -629,7 +629,7 @@ controller, vitrage | | 1 | 1</programlisting> | |||
629 | </listitem> | 629 | </listitem> |
630 | 630 | ||
631 | <listitem> | 631 | <listitem> |
632 | <para>Each controller has a unique pacemaker authkey. One needs to | 632 | <para>Each controller has a unique Pacemaker authkey. One needs to |
633 | be kept and propagated to the other servers. Assuming node-1, node-2 | 633 | be kept and propagated to the other servers. Assuming node-1, node-2 |
634 | and node-3 are the controllers, execute the following from the Fuel | 634 | and node-3 are the controllers, execute the following from the Fuel |
635 | console:</para> | 635 | console:</para> |
@@ -711,7 +711,7 @@ RemoteOnline: [ node-4.domain.tld node-5.domain.tld ]</programlisting> | |||
711 | <title>Pacemaker Fencing</title> | 711 | <title>Pacemaker Fencing</title> |
712 | 712 | ||
713 | <para>ENEA NFV Core 1.0 makes use of the fencing capabilities of | 713 | <para>ENEA NFV Core 1.0 makes use of the fencing capabilities of |
714 | pacemaker to isolate faulty nodes and trigger recovery actions by means | 714 | Pacemaker to isolate faulty nodes and trigger recovery actions by means |
715 | of power cycling the failed nodes. Fencing is configured by creating | 715 | of power cycling the failed nodes. Fencing is configured by creating |
716 | <literal>STONITH</literal> type resources for each of the servers in the | 716 | <literal>STONITH</literal> type resources for each of the servers in the |
717 | cluster, both Controller nodes and Compute nodes. The | 717 | cluster, both Controller nodes and Compute nodes. The |
@@ -756,7 +756,7 @@ controller, vitrage | | 1 | 1</programlisting> | |||
756 | </listitem> | 756 | </listitem> |
757 | 757 | ||
758 | <listitem> | 758 | <listitem> |
759 | <para>Configure pacemaker fencing resources. This needs to be done | 759 | <para>Configure Pacemaker fencing resources. This needs to be done |
760 | once on one of the controllers. The parameters will vary, depending | 760 | once on one of the controllers. The parameters will vary, depending |
761 | on the BMC addresses of each node and credentials.</para> | 761 | on the BMC addresses of each node and credentials.</para> |
762 | 762 | ||
@@ -779,7 +779,7 @@ ipaddr=10.0.100.155 login=ADMIN passwd=ADMIN op monitor interval="60s"</programl | |||
779 | 779 | ||
780 | <listitem> | 780 | <listitem> |
781 | <para>Activate fencing by enabling the <literal>stonith</literal> | 781 | <para>Activate fencing by enabling the <literal>stonith</literal> |
782 | property in pacemaker (disabled by default). This also needs to be | 782 | property in Pacemaker (disabled by default). This also needs to be |
783 | done only once, on one of the controllers.</para> | 783 | done only once, on one of the controllers.</para> |
784 | 784 | ||
785 | <programlisting>[root@node-1:~]# pcs property set stonith-enabled=true</programlisting> | 785 | <programlisting>[root@node-1:~]# pcs property set stonith-enabled=true</programlisting> |
@@ -805,7 +805,7 @@ ipaddr=10.0.100.155 login=ADMIN passwd=ADMIN op monitor interval="60s"</programl | |||
805 | <para>The work for Compute node High Availability is captured in an | 805 | <para>The work for Compute node High Availability is captured in an |
806 | OpenStack user story and documented upstream, showing proposed solutions, | 806 | OpenStack user story and documented upstream, showing proposed solutions, |
807 | summit talks and presentations. A number of these solutions make use of | 807 | summit talks and presentations. A number of these solutions make use of |
808 | OpenStack Resource Agents, which are a set of specialized pacemaker | 808 | OpenStack Resource Agents, which are a set of specialized Pacemaker |
809 | resources capable of identifying failures in compute nodes and can perform | 809 | resources capable of identifying failures in compute nodes and can perform |
810 | automatic evacuation of the instances affected by these failures.</para> | 810 | automatic evacuation of the instances affected by these failures.</para> |
811 | 811 | ||
diff --git a/book-enea-nfv-core-installation-guide/doc/images/dns.png b/book-enea-nfv-core-installation-guide/doc/images/dns.png index f6467bb..b3b08ba 100644 --- a/book-enea-nfv-core-installation-guide/doc/images/dns.png +++ b/book-enea-nfv-core-installation-guide/doc/images/dns.png | |||
Binary files differ | |||
diff --git a/book-enea-nfv-core-installation-guide/doc/images/dns.svg b/book-enea-nfv-core-installation-guide/doc/images/dns.svg index 1da972e..a7d3459 100644 --- a/book-enea-nfv-core-installation-guide/doc/images/dns.svg +++ b/book-enea-nfv-core-installation-guide/doc/images/dns.svg | |||
@@ -1,3 +1,3 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | 2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> |
3 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid meet" viewBox="-95.85148514851477 180.58126056508095 833.7029702970294 280.83747886983815" width="829.7" height="276.84"><defs><path d="M-94.85 181.58L734.85 181.58L734.85 458.42L-94.85 458.42L-94.85 181.58Z" id="c1pLuhuAjA"></path><clipPath id="clipbIpSVUFK3"><use xlink:href="#c1pLuhuAjA" opacity="1"></use></clipPath></defs><g><g><g clip-path="url(#clipbIpSVUFK3)" opacity="1"><image xlink:href="data:image/png;base64,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" x="0" y="0" width="829.7" height="276.84" transform="matrix(1 0 0 1 -94.85148514851477 181.58126056508095)"></image></g></g></g></svg> \ No newline at end of file | 3 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid meet" viewBox="-54.50000000000006 153 751 336" width="747" height="332"><defs><path d="M-53.5 154L693.5 154L693.5 486L-53.5 486L-53.5 154Z" id="acA2kJSb8"></path><clipPath id="clipe2txL8P71P"><use xlink:href="#acA2kJSb8" opacity="1"></use></clipPath></defs><g><g><g clip-path="url(#clipe2txL8P71P)" opacity="1"><image xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAusAAAFMCAIAAAD9amWhAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhdEVYdENyZWF0aW9uIFRpbWUAMjAxNzowOToyOCAxNjo1ODoxOLK8UeEAACpdSURBVHhe7d0Nduu4kYbh9JzZYmeRuYubmRVkSirmc7nwQ5AiJYJ6n/g4YLFQAClKREu271//87//9w8AAICp/PWvf/1raQIAAEziv5b/BwAAmMdf//7776UZ/KkFR/z95483xit4l5ivIm611Nb8fWyUMyqnwy/PxouOqu8d5YxTURXHHR9UvcoutmukTjpek3p5wmqpzkzc4Hxka/7ZBs/Dqjcflx6XyCeQdp00q9Z5O+k8lMf7nrOtcc8e7qTz9m3e9ngd5b80UWu8PumtFcrnlUd8Ml6tzIm25u9zRs25+LlV420nJI07QpeE2jI+7ThutdSg/rS31tw3h+t7/3GVj6/zmXjQ4++c23lj6RjffFwa91Tvv37u6j2P14Hyp0jvPAAuuymUD9N7XgFfr7/vYh4c14pP92w/wz3Ow/sPgesHeN1/L///ZK/del7563jZ1qbsfh7G4lWdXVWD+a35V+Mx6O0Y77TV0eM7qIJTnVZ8k8F5prGqqvNR/WfsIaadN26iYEz29u5xjdJikRisDhGDcaBqctLJj7vMSB3LUa9qnRSMNWOkLGJisJpslB+DMVmbEoc4lg1kxXfXr84zHYuJEXVRQiyS+sZdJtY8RLV+mmGc0tZ814pI6pgKtsQiaYhq/Y5WfoynYKypyKZxU524Wa1TJqS2enm8o1o/ivW16VKwOm6MxFKxjinzneJ9P+/BpP4tmop/KXK4rWVfnH8rrs3UblFfJXudrVrzacW3Ut9OHY3lm1Vb56OcTv4r46paKqu01I6q41qwjJfdlWNfrToeiZnPPb/aLa38WM2DHmlRTpnvkRTs8+Qozkft5556fUVSO9bx4OCUtkplNZZ/KdKinDTP2FZDpdQQdU/tVv3drHuczGp95cf2eL43TEr2Rlmn1W5R99Ru1W/p5FeDLVvHbdlaJ+aM5K/Wt80UryZrM+3y7x5UO8VjpBVf9bOC8W6DrLp/LdtH0/H45qrx/HR2bDP28oPS3g/6+Dy9eBz0PTaNW54Hddw689a4R52Bo+qcpzyZx9pRf0eXrdLj4mNZ0L8U6avOU909ngYalOagWe1W7e6T1Cii5NRra77zYOzVqmOqFc6T5mabmkBnki07uhxl33mLx+vKOgceVFnKh1OknE/Lr5+DGexjfAB9LdFDbS07nu+Z6Qw6Pxx9LdEP8Ql8ZJ4+4iGVq/Nv2TquzoB/LdHt+uN6fPwoZqQz8Mpp7NhX3/P1tUSP9nrlOMlYTe0Y3Mr72gk86gpUQd80FolfS7Rta37Lap1W/Aw+UDrP3t46Dc/X1xJ9o8PH3XceWryOvhS07+n8r7ro34PRUQ3aka/z5ZFr+sg8dbH65tsMjnv4qfjU8U4hXX6cq03SedvNTnh6IHCG8fOc0rzhQew2fv7l1RWMjTQ+2CFeHDF275ys1iit+OHiQDvmuZtX6z8VR3Kc5rY6ycGarToWXx0iUr5/HzmWU+2e/xvo8vMRTz1XreMq463Mz4qz8oadLp3AZ3iI6qhhqnViwuu2Vjtq9I/XiR0HHy+leaZvJrHslX1qnho3TmDTdf7rL9qlxyBW9Ha1dOwVd6VqpXJCq/VNnInr55da+SPjmjLfIt72Xf06pVb+1njLpjoWrBbsDNqvr7L9tjXUMfKEJPaVMtgvqPzBNLW16apBEzumTXUxKWFVmV8dtyPOoWz7Zoy7MmLUxWhXDJoy3qlvVuu4ssImsXi1sqwOUc0vpxcjI6MrXq0v5UBVqWzsVa2vhFZD9uWbTh2nzBHq2K/fsTpPi3g7lmpFZOu4xru06ihuEY0ek1dHdNX6sbg2y11lvJPvPGi2xl2sHPHvIh2vda6vZpZ5TocT6zgPwCa3fMqcelAX/TkYYC72LPUn6pfjPAD7nHqnf7O3vQ7wHszB4sN25WtxlnlOhFPqOA/AoHSbv9Pz5T2vA6xgAADAfPgUCQAAzIcVDAAAmM9f/n/xs6R//vOf9p1PlwAAwGUt78H4qiU2AAAALmt5D6bEezAAAOCyeiuY9H6Mr2n0GZP2pnhqAwAAHG75FEmrDTW0CnEx4u0UBwAAeJuf30XSiiSy1YlbtgEAAC5g5bepfVkjSxQAAOCj+HswAABgPqMrGD5LAgAA19FcwfhnRr5wMYq0xHy1n3sAAAAOxr/sCAAA5sPPwQAAgPmwggEAAPNhBQMAAObDCgYAAMyHFQwAAJgPv4v0pdLvuusy8Hh1s9XlWBqlX38wbZwVPOmI3mP2+QPAVrwH86V0t/NGWp2kTeMRS3aKHM6LrxpMG3TSsbzN7PMHgB1YwWB0EQMAwHXwKdL38jVKXL5Yu7pwSTnP2LpYSr3KgWLBapeWVCoNIf14CpoYV3FveyN2KYOpu9qiLi2t/Go8BU1rAqmtjh4HgOmwgvlenRtbvMMZXST7bntxoLRZbaf8Fk8zsUvquxqvbroYHExo6Q8UpQRttuLVTRMjneSyIwDMgk+RUFe9q1nQ437n67Mct2x3eVp10L7BLmnaj8PYPpZ7HtPDsh2oZiq+dBg4Fd5RmY9ZhlJexCzbAPDFWMGgKd47I4/376O+93n/rRd5P027P/O+fcfl+bJEGzyhOk/vLksUAL4SKxgMqd5Qp6Mb/8WPZZZ5AsAHsYLBz/sKvnlLj/XXf1YDncVBTDvDav2YsGOerTgA3A8/yful0n1Ol4HHq5utLi3Kt8yyTqvtmzFeFZO1meo4FWnFXSpoypqpvm0qvtoQiyythlZ+v472lvmag+/q1wGAWbCCAb5LXM0AwLz4FAkAAMyHFQzwRfQRUvosCQCmw6dIAABgPrwHAwAA5sMKBgAAzGfzp0jVj893fxSlaqsV0i9QpE1stft8WuYZp90n4K7wsMb5yAfPT59muzp0Oi7le7y62epS1Z9Jf++I3RXiEcnr8zncp6Zk446M+NkzptHN4AQGj+twnxr32+T3YOy8m2WjRo+KNV5/hF6vAFl97Epn54/TlXCRSyLOZ3xK552fvvEZKtMbacLl/D3yOAVPirR4Tkt/74jXK4gOTe0rOPAAx40f/kemJxp9cBqfelivcznd3q8VTHxKD/rsBY3IH4utT56zn2xW/+wh3uCW13n1grnBg1VlB9t6EFtxABf38ymSv3KNPJmVaY1q91TKNyUNkZJbqjXjcNIfVx21V/n3EM9MRzo5Lp4iqQaNhqjmy+B8TCuzVT/GUzAWUaRVpyV2XK1fSl3E47H4M7wSN7GOgqKOvtkRM8vhopTzjK2LpcpeZbVqvtK0t9yV2h1lETPY16Xkcg4Sg2W7L5ZKY0m/jsZSr36dFDT9+iYNUa2fgrFm6i4xp6M6aKzmu1Jxk7pIzG/VKeOmUydSfkvsEpOr9c3Z8bks78H4wWw6hnT8LarsFDlKq34r3mrfxqaD8uSoc958M7Vb+aL4Pp36S6g2aGl1ni0pLfUty2rT261xV9uP7BA3HjExeCwvnmjETYOOz/NxSE/WVr42y13iEd/bV+aoWll2E83BKbJD9XC21ldOym/V0WZqr/IhvOER725isKU1n63UN9XRZmq3xl1tP7JDXHtdilgjtTs8zVjbi6ix7BgY96j4dB4rGB3MMzJqU74N4Zbt46Sz/3g0wsR8ULNsBzHtZvzQqkddOuQ8+Ek2y/bRluq/6y+hLYMuHbZ0Kc+PTq/XGTmBnmyW7WD8/C8ltkx+h+p8LOjxTaMPdnke08OyPcbzfYgd1HF3hWO9eDjvV071+Rg+LNsDlg4bH/rXLaPWxt30ECxVXpv/UqJbxGZVnViKL4VCKd+riPJb8ek8VjDpYMaNH/Pz/PxYogfxgo/HrTgEH06WaNCKT83Pw/hxvX4GnmfxxxI9zlL3PyyiY/TNQZ4vS3RNmanIYJHHYMESDVpx2Xe8+7SG8Hj5LHvFO48L53nn8/F1y3j/sUSDVjzxNFmiWxx7/XsdUdC+20A+lrTic1k+RdLB+OZ0Hg/X5IdwFD8Dfjau4PH82PWg7OuVLgNvHHI24nxS/RuzA7zmMfJ8n8J5z0eMsxOeHgjXik/k53eR3nMkVv/YIWLBziHEtBvzY/TzcKrW+WzFt2oVGamvy8Azq2dDewfFZG9bWQ30DP/yqL4l/hE+k+r5mULn/GOf5+V58PnUw+SVq9eb9p6kVb8V36pVpxXfqlVnNa6Gic+XVlxiwpXlv2jnk65eZC4eVbWvsXisk05E7NWpVmrV2RTfNOJc/NAGDyolx83qeRPtTX1lcAJJKuL684kz8XYcuhWRuKuUkt3IQOpYRpzHYzBWM7Fg2fbNGDedaknMNKlCdbPVpaWTH3elsYxFynFTOybb95jToV4mdnSr3V3s4spSRtUUt4i3+wO18lv1W8q+I3W0t18/pVXr22aMu1ZE4q6W2EX5sXJnlJQvsaOL3U2rfrWOaG+Kl2LmSP2z4873puAF8S87AsA2s7y+A/f28ykSAGAVyxfgIngPBgBW9N9yB/ARrGAAAMB8+BQJAADMhxUMAACYz+ZPkdJPsY3/UJtlnvGJlT6fHi++7yPtk+YPAAB2yO/B2H063eCrRnKirfnjtq4qfCbWyynSd978D2STnGKeAAC87tcKxu9/fl9fxc3yasYXZAAAzO7nU6TB5Uv1Blm9d7ZuqDEeh1OkUyfuVd9YKrZbWjmq7GLBqByo2lZHj79NnAwAAHe1vAez9bZXZqqCS5FHxu92S6dOtR3FvR3qHiuor0uRR8bvdosnWF8lx1He4CODAgDwZo8VjG7Vz8ioar6Vcsv2CVrz9EEHj8LSPDNN9Tn3h2V7TtVDAwDgTh4rmN03PO8YPdYFwRLtei4Y9gw9WL/DK8TRvaws0dn4Ec07fwAAVi2fIvndbsdK4joGD8ESpj7MVX50LF8AAPf287tIxy5inuuESqkUVzsGdzvwEB6zHJj/1fjcWL4AAG4v/0W71VtgSoib6dZerWw6fTt1YjBWTmVjnZZqfdOKuzSQiZE4br/OeeIcAAC4N/5lx+OxkgAA4Gw/nyIBAADMghXMwfQRUvosCQAAHIhPkQAAwHxYwQBo4q1EAJfFp0gAAGA+e96DSf9Z9uZ3cVq/6WPxF2ey77heH/cj/v7zx77/+fvv6uYOVuGV7rim9HRLz5GtjqoDACa/B2OvLP0XF99rr0ROkc96fQ77jusKxy42mU/NxxdAuKX4dPD2bp+6PgHc0q8VzCEvUmd7rC+uPcNP8dPCTQIn4dICcCk/nyKNL19amekFLlWWeKPttNVLdUwZVETKmuVmVSsnDRHrR+W41bY6evxwcdCOzqdI6Q2VlCPVZBPj1lZCtU4ZTN3VFnXBG9jlFC9gSVe12tqUTkcAeMWygomvRCPKV6tUQZsj8WqOKbubMmJW06q9Sp5mWh1Xy8ZIJ7nseKCR4mlZ4GxxEJcORputeHXTxeBgQkt/ILyHX1euvIzLdrlpyggA7PP4FCm+9Ayy5OorkW26ZbugjqsG046l6aVD8IMyy/a1VQ+hypYC/rVst3mO1hmDvaqsiH8t24FqpuKdLjiVrqJNF78/j8yyDQAneKxg/IVmx+257Ph81fqxRF9wVJ1NfMRTj+tUPvPD56lFzCsrCe+7dQHk+fpaorgquwKjJQoAh1p+ktfvdiOvNXd9SbrNcflRnLTM0gKCt0MAAJ/187tI44uYEc/1QKVUK36UT9Vvxd/M53DG8iW+9dJZxMS0M5xdH8eyS/GMqxEATP6LdiO3wHSrVvLuuEU0bkxWpnT2xmreiMmuLBil/Fad8XEt4m3f1a/zujjWKl8H6BOZuJmWCClHFHfa26mZ6tum4qsNscjSwnu1LmCLxys8XYGxV9yVqgHAVt/y7yJVX1vf7ApzADZhnQHgsn79Rbu7YukAAMDN3PY9mPTfjh8/zDgf1lKYBe/BALisb/kUCcAOrGAAXNZXfIoEAABuhhUMAACYz+ZPkcp3lb2Cx2O1zvvP/UFTx8EZWq+tx/LN3vYryvqlaN/EXPRk1JOr87x+hdd/vbjVKYt0Jn/2cQE4T34Pxp7G/WeynvDW8PbW/D6v5slGkb6RnNuzkzB+HrSk8EZa0ADJFE8xf8UodSY/xXEBqPq1gvEnc+tVoC+tNlql9hXHiPQQjDt1EWPFeQMGq+y63XHpAvhmP58i+cvHyAojZqZe8TWorGyNrfWjWNx4QgqaGO+01dHjtxEPti9+vlO2JQX7+R6R1MuoY7kLF1ReTq0nTsqMm50iLvUy6ljuqorFXXWI1rimXx/ABS3vwfizt3wV6LAuZS+1y1KePML7qr7ztu1yKfLI+N1u8QTrq+Q4yg28eFBaYfiXImKbiqwmezBSWqsLrqZ6RSnoFBHbVMQbS2ot2YOR0p49Kl0SpaV2h2blmwCm81jB+HO4/wJRsny3bK8ZzzSqnF5fHq9MT8s2aqqn7hBakcSliS1B/GvZxo3su5aUHzs+n9MPy/ZH+TR4JQGm9ljBHPhkrr5yydYXr3JiFomWKH7zM/ae8+MLF72hAlT51WhXZnw6A8Arlk+R9Prim/t498fKolutP4rt7Segz8+ePwQAANzVz+8i9Zcdq9KNs1XtqNWJ1amWasW/hB/71uWL3kfxTeD67CLvXOf9vQDu4WcFY/w5318BaO/gQiHmj3TRHJwirbiLMy/z417xXdaIdaa26XD0Yytp+eINC/qXIi0xX+3nnge1YxAT0UVl4gUW40aRllYdp3YM7lDO0JX1+/MBMIVv/JcdecECBsV1AABcyq/3YAAAAKbwdSsY/Tcl/3EJAMC8vvFTJACDWOgDuKy/lv/HTbFCxStYwQC4LH4OBgAAzGfzezDpv+n1n2ger262unSoy2pyZ9x9rMIr3a8mnfwo/YZz/7emj6JBB4d72yR9oPechImkZ5Y56dnx+jPXVZ+/ncmffVwAzpPfg7Hns57SVXqeeyMll309YslOkQ51Uftt3jzcsWzy4/PXDdu/FDnb1iWC8t85SZT8+Xhxreu/M/kpjgtA1ea/aBdVFxnjN1Ecq/pw3MmpixgrvnV1hQPZ1esXMAAM+vkUaXz5EjPVrt44U84zNkTVVnul4nEzTSnlSDXZxLi1lVCtUwZTd7VFXY4VR9RmVetzk7REUEKMp6Btam8137S6KN4S08q2pGA/3yOSehl1LHd9lfLSbV1aKTNudoq41MuoY7mrKhZ31SFa45p+fQAXtKxgqk/vlpisdmo4FVRwZIiYrLIeKcXhpOyozVa8uulicDChpT/QUcbn07lzVzddNcdYRLs6dar5Hqkq+5YdU7wUh0h9XRmMkWqXb2BXkS6n8rrSBZxySso0qa8rgzFS7VLqpHXqDxYHcDWPT5GOfQJX61jQ4z5WR5zM+MSe5R+W7TbP0TQGe1VZEbdsB6qZii8d1k7Ci3zQkVHslhzv0GKb/rVsP1WD0r+7ayDp579IxeMo/fmjyq+irc+R6vX/vPAflu2P8mlsPS4Al/JYwYzf8Aa1Xhc2DXTei4um8cohe18rtWmeni9L9Giam2+u8tt8vLVbJH5ZxPdqs2U14VMG54+T7Hu+AEDH8pO8/rLyyh29xWqeUfZFeiW94Nxe5EfkR9fBuxEAgKn9/C7Sjjv64M3yUmzOOsbOIce0M5xU32se+IgctdA5pI5X4E0UmP4zqL8XwD38+m3qkUWM9npj9Wapmk6Rlpg/Mp+W1rituIsjxngp1om9WmK+UeRAm8r6OsAXFnFlMBJXW99jw7XqpLRVyo9F1PDiaVdVzC9nonYMwrSu863Xc6uOUzsGdyhn6Mr6/fkAmAL/LtLN8bqMV8R1AABcyq/3YAAAAKbACgYAAMyHFQwAAJjPX/ycBIAWfg4GwGXxHgwAAJjP5vdgyv8me/FdHCu4qcLW/EPEo77Hu1bVXxvu/0Ky028jv5Nmuzp0Oi7le7y62eoCUz7dyleA5Gr5AO4qvwdjLwf9VwS9fFjD26+8gmzt+8pYr4hH7Y0Lejxyw+dH92lrjN+z083+bcZnGI/LvqcJl/PXUsa/FIHTc9wp0nK1fAA39msFwyvC1PTi7pub6MZ/J4OLGADAjH4+RRpfvsTMsi2pslSTzb58j1tbCdU6KVjN71PHuGk8Evdql4nFY5dWvolddoiV+/T2gzW0glHQN03rlp+6SFw3ePFneCVuYh0FRR19syNmlsNFKecZQ0W8dONmKSV8PB/AjS0rGH8J8Paq9HpRraDNVry6abbmGw8ai3cSqkWq+VXVIqVYqjVQq11u7jNYJN7U4/27ugJ47Kjd7DsJ3vbNMl62ZTxYVa2fGk7VFByp/1XsWkoXkl9dHVfLB3BXj0+R/CVg9YaXWL53OfYVJNXUKKvKNCvilu0TaNA4+jLqlnGXDgdN1SczWK28Z3vEbuq66z/DPZ6sdUA0viboFDlQdT4W1FF7BE7XklOk5Wr5AG7ssYLRi8Iz8nnxRcoj46xvPBxtvs2+cT1fluhemoNvripv6opU7/clXwHoa4kGrbj40mE17RCtITzOIgYAprD8JK/f7XasGE7yvI9fa0qz2Lp8kXjnVvv2t3M7QJYsADCjn99F+uyKwcb1odUwnSnFtDt58bi87yHLF70dUr3Bt278rfhH+Eze8KbON7OLbdP1dnY+gO+R/6Ld6i2wvL8qOe1ajTvt3ZcfkzuZ3i67mNSrqhxFBVuNFLTvijsPmlZ8qzjWquo6w2725V0/RdSxjDiPx2CsZmLBsu2bMW461ZKYaVKF6marC4xdVOmKql6uMfjZfADf4xv/XSR/yfvggX98AsAg1gcALuvXX7TDeexOwM0AAICjfN17MHEZ8eZj/+DQwD4suwFc1jd+igRgECsYAJfFCgYAAMyHn4MBAADz2fweTOtdZdXxhDPe2klD8+4RAABfK78HY6uEtFCo0urhbcsIn5UN5xSBPB86zgkA4Cv8WsH4/c/XBx0podxMEbyHn3YWMQCAb/DzKdLg8kWq+bp9prIm3l9jW1aH7oyYhrPN1PC2NxRxqeDs0gkBAOCWlvdgjrrtdSrYED5KbFu+8+BzZ5PSVjONkp/lf+r7dw8aRW7jlgcFAEDyWMHopv6MnELF0yg2tFu211h3rzDepU8F7+TYUwQAwAU9VjAfvOE91w8/lugaz+QO3eJnZvx8AgAwneVTpOuvCWxuV57edfhZYvkCALi3n99F+uwi5rk++cDQnxr3JH4sLF8AALeX/6Ld4C0w3vVjchlXwVZDYp2qVn6KG9+lgaptWR13FvEYAQC4t7v9u0jcxQEA+AY/nyLdAMsXAAC+xPTvwdz1IyEAANBxt0+RAADAN2AFA6ApvccJANdxq5+DAQAAX2LzezDlf5O9+C6OFRypcPi4Z9OErznPv//8se9//v67urmDVXil++GOms+b6/gDIeri8epmq8sh7vEejJ6D9zgcAC6/B2PP8P6TXK8F1vD2Ky8K432PHfcNNOG3eTxyHzon6Sb6cUfN5/11tP6ork7KOh6xZP9SBNHFXysA7PNrBePP8/ffenGIKRZ2GDe4iOmzfNY0AG7p51Ok8eVLzCzbkipLNdmsDj0ybixSHddU47GgU6Sfr71lXxfjb6CJ+WaL39X8Hpk20w0v5Ujrv/hj3NpKqNYpg6m72qIuVSnZVMc1h9epxjt1WrxL7G7tso5JOc9Y1t87qHU9j8djJFFHy4nJsaBRhdV4quNaEYm7qlbHdR5XMG6uDgFgk2UFk551fel5WK2gzVa8utnnyVL2itVaAw3GjUdcma+2b5bxFHynkXFbd8R0w9NmK17ddDE4mNDSH6hUpqXI4XX69cs6HTG5rO8Nl+qbwSG20qVu4nU1Ho+RKO5ttePmSDzluFbH6mapld+PlzpDANjq8SmSP6laT7mWrflHsXHdsv2cv1u2nzxBQXVpxXdL3b3yizVf5KOnE1JlNzz/WrbbPCfeKUd6VVkR/1q2A9VMxTtdPqKcz4Hnp69aVsNd5xRN4fHkf1q2h9mTa+T5pZyRZABbPVYw/gTe8Rzb3fFAPvrzVSi/DGl6aYatuGvF+57j5wl8is//8PnoHvnKbdL76o47yPP1tUQ/pzofb7x4fkZoxEQT8M1jta7wrfFL8Se7LFEAk1h+ktdfa+73HNbLaDq0VvwG/Ij86A6nG/bZN+lJvf/8rC6YVhMAYFI/v4v02Tu6jXvs0LFgPLRW3KkdgxPxaZ+xfIk3ws5N+uz75db6R82nVUfxmHDU+fFMr/ZZuqLSpbU1bixSBj+unFUZifp7AbxH/ot2q7dA3do9J+anu76KtOIuFWyJRToVvO0JrXH78di3UycGVcFpl8VjnbNtGivdHeNmusWmHEl3Vu3t1Ez1bVPx1YZYZGl1qZfyz67Tr1/WqeoXr272x32RXVTxgn+l7VoR0a6j4ibuGsk3vrdVxPTrqHvZsO8ADsG/iwSg6Z133KPu8awVgC/x6y/aAcA72WrDFxwvOqoOgInwHgyApje8kxFfgl4Z7qg6AGbBCgZAE0sBAJfFCgYAAMyHn4MBAADz2fkeTHxv+cUKg93Ld7Mv/u7R1gMEAADj8nswdt8t1wqJJ9iN2e/Nq/lVW+/ryn8Ou3/ct9GE3+bxyF37nAAAcJRfKxi///VvvSnn/fdptEyxsAMA4BA/nyKNLF9MK01x3UHjDbVsa9OVBUutUq06MW6q45qyoFOkn6+9ZV8X42+gifkmAAC3tLwH8/ptz/vGOvEu3rEp2VimJ2u21nDWVh3lOEVa8ZZWfquthgffL00GAIBbeqxg9t1xrZcsoacdd+5NN11Ldst2mMmy/eQJCqpLK75b6u6VX6z5Ih89nRAAAO7ksYLZd8OzXt6xqr/3QFoxlMN5xBLSobXirhXve47/juMd4fO/znwAADjc8imS3+123Lkv7rmuqBxaK34DLF8AAN/g53eRBu/os9z4bYaaZJxzK+7UjsGJ+LRZvgAAbi//RbvBW6Bu8JZpbf/uEVOtaZTmCbGLSb2SA+v347Fvp04MqoLTLovHOmd751gAAHwW/y4SAACYz8+nSAAAALNgBQMAAObDCgYAAMyHn4P5Uv+0/+H7/Mv+V8P18J24HhC1rofL4j0YAAAwn83vwaRfLXavvJFjBXkf6P32/TfWv//+99KyS+fPX/ZdEd/c7ag66Dv2v7nL6+E9uFqOcvh7MPbQvP6g8Ph+yvTvwdh6orpGEa02rPH6yqM/FjZZfew67CUj3o2qPMFeU/xlRZuPfS/jpepwI49py0hfXQDxengPrpYdRh7TlsG+nrN7FOHxfYPBx/Tifq1g/P63aV3y+iIGR/HHYscixq/j/qtGyuEl5vr8MdrxIsX1cEunXg8mpu0YBW92j0fq51Ok8eWLMq0R89O9M1V21aDzXSreaqtjq5TiLbFCKjteX/mt9mCdw8XJdOhd4h0vT4l2pZz03BiM+2Yqhd3SmVz91GDwzHfSfJdTgvK1N+2S1bhTQd/EoHTeTroetJka3rbvrbgoYWQTu6UzOeunSIO3vSjdj1XBKdIPlu0WT4jz9HZn3KqYH6v59xjxdsw3irQoJ+VvrbPbpuIHvhBYKa/jNVXZv1bjkXJ8E69oneSqQ868P7JpXG2mXRpxMI4XbTqZehR8cwcNlx7HVhxvNvvJf6xgdHN9RkZV862UW7afltBBN+zxcffZeh4GpYWFbZ40kEljtcSXktdV69gQ/rVsF/T6JcfOCsZPZudRcEedeX/EV4erStfDK6XQct71wOM1o8Hr4ZoeK5jBG16pvAc/bsuBRbysNo+SCvqmLNEXHFUn8oJ2Qnac6k10zn2z5Q0Xrg0Rv5Yo3ssf4tXz7wkvXg8a65CH2+voa4niNeddDzxSMxq8Hq5p+RRJN1ffxEkey6KTT/Xg8sXteJGSfb1WvTIllDa9PF3wesCx3nY9YAqbrocL+vldpGPvrFZnU6mt+S1H1TlcnNh5ixivObh8cYMvUilt64ua5Ve7VOO8bh7Fz+Gml6f3XA8tVqdaqhXHJn4Oz7geMKMd18PV5L9ot3oLjPfdal/RXsUtUtaPe71RzVfQxO4m7jJpb6mav6O+4hbxdlnKlPkujfK6OIdV6S9WDV7K8YUsvbTFzeqrnopX45062Kd6Dgf/gtng+Y8PpZLjQxnr9NtS1nGKm7grxtERz7kcdT2khLgZHyyTciQWj7ta+SZ2wVbxMZLpfhfpq/9dpE23/HEnlT1WeoXClxi8Y+FLvOF6qN4pTSs+4pW+6JhuBfPzKdKXsOWFrzAAANNh+QL5uhWMvzWidcxJb8DEBgB8J19txIZrxVssTV+2yfIF7qs/RfpmfGrwnfgUCRHXA6LpPkViBQMAAObzdZ8iAQCAG9jzHkz6CQ/9ZEncHNTqNV4tTmbHsZS84CGlAADASfJ7MHb/jmuCkm7wLkYeuzdq9Rqvpsx9E7iT50PXe+wAALiNXyuYV9Yit2GHP+kZ8GmziAEAfIOfT5HGly+tTMVTQrqnpo6r1Xyzo19ByvlYJPWNu7yhhHLXNaUjAgDglpb3YDbd9jzNunivxIJK0HeLOEXO1ho3xtW27y62nUcs89HhjfPfbYpJAgDwoscKpryRr3rezet3ymodS3PLNs7UemgAALiNxwpm9w1vvKNlRksU5/BHhPMMALix5VMkv9uNrEUsZyTtgy4+vbP54bN8AQDc28/vIo0vYl7xWP6cOcTZ8784P3yWLwCA28t/0W7kFphWCWnpEzfTLheLx10j8VIq7vrjbp2PB2PN2OU6rjw3AACO9dX/LhK3fAAAJvXzKdKXsFWLL1wAAMC8vvE9mLiC4Q0YAABm9NWfIgEAgEl93adIAADgBljBAACA+Wz+FKn8MdgXP4eyglN8ktWaZydu36c4NAAAppPfg7H7rt96W3RLtoa3+/l9r/R9p9Y8LzV/m8yl5gMAwHl+rWD8/qc1Cl6hFd7b+HAsYgAA3+DnU6Tx5UvMLNuSKks12YzkW1t7+/kdrfzOuFE/7rQ3FbfN1i6jvb5Lcaf8vlgBAIC7WlYwm2571TtrqqDNVry6aToJ3vZNxTv5Va38fp1W2VbclLtiRO1qMLXLzb5NyQAAzOjxKdK+G14130q5Zfs/aYrYZrXjuGp3H9Qs223eXZnP6fwU9CJm2f6c/jz7Ul8AAO7nsYLZfcMrOz5us4GC9t3SdgzREusb35Ql2uAJ1fl4d1miH+ITqM6zz/M/Pn8AAM6z/CSvbpa+ebjHcuDkITa52nxadsyT5QsA4Bv8/C7S1jtln9XxUmqYzhAx7RWrdWLCjvlsje8WC44/NJ7D8gUAcHv5L9qt3gKrt9XqLVZFWnGXCppqfgy2Kri0t9TK79fR3pF4LJXq+2bZlpQvsX5VrAkAwL3xLzteCEsQAAAG/fqLdng/W7X4wgUAAIzjPZjPiysYHg4AAEawggEAAPPhUyQAADAfVjAAAGA+ez5FSj95OljBe5XJFt9UQcZ77ThGAABwZfk9GLvfp4VC4nttTeAU2We8775xX5nbdOxgv+p4AQDf7NcKxu9/vj44nFYeOImfXhYxAIBv8PMp0uDyJaVpM8bLUh4xqWMU86vKsi6VinOIYrzTVkePTyceFAAAd7W8B3P2ba+sbBEFY7vDc2yqPlunmbsUeWSM1fcE66vkOMpEpp48AACDHisY3fKfkUt7ri4qd2jbdMv2d6ueIgAA7uSxgpnuhldO+LGuCZbot/Izw3kAANzY8imS3+02LWLevOKx4d484qT8LLF8AQDc28/vIn12EfNYnhxRrVWnFb8ZP0aWLwCA28t/0W7kFpiWAkpW3CKpTuxSHdH0BzWr47rV+jHibd/Vr3N98VgAALi3l/5lx5vdMlkBAAAwi59PkXZLb10AAACc7aX3YO4krsM4JwAAXBwrGAAAMJ8DPkUCAAB4M1YwAABgPqxgAADAfFjBAACA+bCCAQAA82EFAwAA5sMKBgAAzIcVDAAAmA8rGAAAMB9WMAAAYD6sYAAAwHxYwQAAgPmwggEAAPNhBQMAAObDCgYAAMyHFQwAAJgPKxgAADAfVjAAAGA+rGAAAMB8WMEAAID5sIIBAADzYQUDAADmwwoGAADMhxUMAACYDysYAAAwH1YwAABgPqxgAADAfFjBAACA+bCCAQAA82EFAwAA5sMKBgAAzIcVDAAAmA8rGAAAMB9WMAAAYD6sYAAAwHxYwQAAgPmwggEAAPNhBQMAAObDCgYAAMyHFQwAAJgPKxgAADAfVjAAAGA+rGAAAMB8WMEAAID5sIIBAADzYQUDAADmwwoGAADMhxUMAACYDysYAAAwH1YwAABgPqxgAADAfFjBAACA+bCCAQAA82EFAwAA5sMKBgAAzIcVDAAAmA8rGAAAMB9WMAAAYD6sYAAAwHxYwQAAgPmwggEAAPNhBQMAAObDCgYAAMyHFQwAAJgPKxgAADAfVjAAAGA+rGAAAMB8WMEAAID5sIIBAADzYQUDAADmwwoGAADMhxUMAACYDysYAAAwH1YwAABgPqxgAADAbP7xj/8HJ8QIZdg3kZUAAAAASUVORK5CYII=" x="0" y="0" width="747" height="332" transform="matrix(1 0 0 1 -53.50000000000006 154)"></image></g></g></g></svg> \ No newline at end of file |
diff --git a/book-enea-nfv-core-installation-guide/doc/installation_instructions.xml b/book-enea-nfv-core-installation-guide/doc/installation_instructions.xml index 2b89490..fe93e1a 100644 --- a/book-enea-nfv-core-installation-guide/doc/installation_instructions.xml +++ b/book-enea-nfv-core-installation-guide/doc/installation_instructions.xml | |||
@@ -19,8 +19,9 @@ | |||
19 | Armband project is out of the scope of this document but information is | 19 | Armband project is out of the scope of this document but information is |
20 | available online on the OPNFV wiki.</para> | 20 | available online on the OPNFV wiki.</para> |
21 | 21 | ||
22 | <para>The OPNFV download page provides general instructions for building and | 22 | <para>The <ulink url="https://www.opnfv.org/software/downloads">OPNFV |
23 | installing the Fuel Installer .iso and also on how to deploy OPNFV Danube | 23 | download page</ulink> provides general instructions for building and |
24 | installing the Fuel Installer ISO and also on how to deploy OPNFV Danube | ||
24 | using Fuel on a Pharos compliant test lab.</para> | 25 | using Fuel on a Pharos compliant test lab.</para> |
25 | 26 | ||
26 | <note> | 27 | <note> |
@@ -43,8 +44,8 @@ | |||
43 | <section id="other-preparations"> | 44 | <section id="other-preparations"> |
44 | <title>Other Preparations</title> | 45 | <title>Other Preparations</title> |
45 | 46 | ||
46 | <para>Reading the following addition and optional documents aides in | 47 | <para>Reading the following documents aides in familiarizing yourself with |
47 | familiarizing yourself with Fuel:</para> | 48 | Fuel:</para> |
48 | 49 | ||
49 | <itemizedlist> | 50 | <itemizedlist> |
50 | <listitem> | 51 | <listitem> |
@@ -62,13 +63,13 @@ | |||
62 | <listitem> | 63 | <listitem> |
63 | <para><ulink | 64 | <para><ulink |
64 | url="https://docs.openstack.org/fuel-docs/latest/devdocs/develop.html">Fuel | 65 | url="https://docs.openstack.org/fuel-docs/latest/devdocs/develop.html">Fuel |
65 | Developer Guide</ulink></para> | 66 | Developer Guide</ulink> (optional)</para> |
66 | </listitem> | 67 | </listitem> |
67 | 68 | ||
68 | <listitem> | 69 | <listitem> |
69 | <para><ulink | 70 | <para><ulink |
70 | url="http://docs.openstack.org/developer/fueldocs/plugindocs/fuel-plugin-sdk-guide.html">Fuel | 71 | url="http://docs.openstack.org/developer/fueldocs/plugindocs/fuel-plugin-sdk-guide.html">Fuel |
71 | Plugin Developers Guide</ulink></para> | 72 | Plugin Developers Guide</ulink> (optional)</para> |
72 | </listitem> | 73 | </listitem> |
73 | 74 | ||
74 | <listitem> | 75 | <listitem> |
@@ -101,7 +102,8 @@ | |||
101 | </listitem> | 102 | </listitem> |
102 | 103 | ||
103 | <listitem> | 104 | <listitem> |
104 | <para>Network overlay you plan to deploy (VLAN, VXLAN, FLAT)</para> | 105 | <para>Network overlay planned for deployment (VLAN, VXLAN, FLAT). Only |
106 | VLAN is supported in this release.</para> | ||
105 | </listitem> | 107 | </listitem> |
106 | 108 | ||
107 | <listitem> | 109 | <listitem> |
@@ -306,7 +308,7 @@ | |||
306 | 308 | ||
307 | <mediaobject> | 309 | <mediaobject> |
308 | <imageobject> | 310 | <imageobject> |
309 | <imagedata contentwidth="600" fileref="images/dns.svg" /> | 311 | <imagedata contentwidth="610" fileref="images/dns.svg" /> |
310 | </imageobject> | 312 | </imageobject> |
311 | </mediaobject> | 313 | </mediaobject> |
312 | </listitem> | 314 | </listitem> |
@@ -331,23 +333,14 @@ | |||
331 | </listitem> | 333 | </listitem> |
332 | 334 | ||
333 | <listitem> | 335 | <listitem> |
334 | <para>Enable Experimental features:</para> | 336 | <para>In the <literal>Feature groups</literal> section, enable the |
335 | 337 | checkbox for <literal>Experimental</literal> features. Move to the | |
336 | <itemizedlist> | 338 | <Apply> button and press <Enter></para> |
337 | <listitem> | ||
338 | <para>In the <literal>Feature groups</literal> section, enable the | ||
339 | checkbox for <literal>Experimental</literal> features.</para> | ||
340 | </listitem> | ||
341 | |||
342 | <listitem> | ||
343 | <para>Move to the <Apply> button and press | ||
344 | <Enter></para> | ||
345 | </listitem> | ||
346 | </itemizedlist> | ||
347 | 339 | ||
348 | <mediaobject> | 340 | <mediaobject> |
349 | <imageobject> | 341 | <imageobject> |
350 | <imagedata contentwidth="600" fileref="images/experimental.svg" /> | 342 | <imagedata contentwidth="600" fileref="images/experimental.svg" |
343 | format="SVG" /> | ||
351 | </imageobject> | 344 | </imageobject> |
352 | </mediaobject> | 345 | </mediaobject> |
353 | </listitem> | 346 | </listitem> |
@@ -385,8 +378,8 @@ | |||
385 | <para>Enable PXE booting:</para> | 378 | <para>Enable PXE booting:</para> |
386 | 379 | ||
387 | <para>For every controller and compute server, enable PXE Booting as | 380 | <para>For every controller and compute server, enable PXE Booting as |
388 | the first boot device in the UEFI (EDK2) boot order menu, with the | 381 | the first boot device in the BIOS boot menu (for x86) or UEFI boot |
389 | hard disk as the second boot device in the same menu.</para> | 382 | order menu (for aarch64).</para> |
390 | </listitem> | 383 | </listitem> |
391 | 384 | ||
392 | <listitem> | 385 | <listitem> |
@@ -394,21 +387,18 @@ | |||
394 | </listitem> | 387 | </listitem> |
395 | 388 | ||
396 | <listitem> | 389 | <listitem> |
390 | <para>Connect to the FUEL UI via the URL provided in the Console | ||
391 | (default: https://10.20.0.2:8443)</para> | ||
392 | </listitem> | ||
393 | |||
394 | <listitem> | ||
397 | <para>Wait for the availability of nodes to appear in the Fuel | 395 | <para>Wait for the availability of nodes to appear in the Fuel |
398 | GUI.</para> | 396 | GUI.</para> |
397 | </listitem> | ||
399 | 398 | ||
400 | <itemizedlist> | 399 | <listitem> |
401 | <listitem> | 400 | <para>Wait until all nodes are displayed in top right corner of the |
402 | <para>Connect to the FUEL UI via the URL provided in the Console | 401 | Fuel GUI: Total nodes and Unallocated nodes (see figure below).</para> |
403 | (default: https://10.20.0.2:8443)</para> | ||
404 | </listitem> | ||
405 | |||
406 | <listitem> | ||
407 | <para>Wait until all nodes are displayed in top right corner of | ||
408 | the Fuel GUI: Total nodes and Unallocated nodes (see figure | ||
409 | below).</para> | ||
410 | </listitem> | ||
411 | </itemizedlist> | ||
412 | 402 | ||
413 | <mediaobject> | 403 | <mediaobject> |
414 | <imageobject role="fo"> | 404 | <imageobject role="fo"> |
@@ -441,6 +431,10 @@ | |||
441 | <listitem> | 431 | <listitem> |
442 | <para>Tacker VNF Manager</para> | 432 | <para>Tacker VNF Manager</para> |
443 | </listitem> | 433 | </listitem> |
434 | |||
435 | <listitem> | ||
436 | <para>KVM For NFV Plugin</para> | ||
437 | </listitem> | ||
444 | </itemizedlist> | 438 | </itemizedlist> |
445 | 439 | ||
446 | <para>Login to the Fuel Master via <literal>ssh</literal> using the | 440 | <para>Login to the Fuel Master via <literal>ssh</literal> using the |
@@ -449,7 +443,8 @@ | |||
449 | 443 | ||
450 | <programlisting>$ fuel plugins --install /opt/opnfv/vitrage-1.0-1.0.4-1.noarch.rpm | 444 | <programlisting>$ fuel plugins --install /opt/opnfv/vitrage-1.0-1.0.4-1.noarch.rpm |
451 | $ fuel plugins --install zabbix_monitoring-2.5-2.5.3-1.noarch.rpm | 445 | $ fuel plugins --install zabbix_monitoring-2.5-2.5.3-1.noarch.rpm |
452 | $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | 446 | $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm |
447 | $ fuel plugins --install /opt/opnfv/fuel-plugin-kvm-1.0-1.0.0-1.noarch.rpm</programlisting> | ||
453 | 448 | ||
454 | <para>Expected output: <programlisting>Plugin ....... was successfully installed.</programlisting></para> | 449 | <para>Expected output: <programlisting>Plugin ....... was successfully installed.</programlisting></para> |
455 | </section> | 450 | </section> |
@@ -472,8 +467,10 @@ $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | |||
472 | </listitem> | 467 | </listitem> |
473 | 468 | ||
474 | <listitem> | 469 | <listitem> |
475 | <para>Select ”aarch64 or x86_64” and press | 470 | <para>Only Debian 9 is supported in this release. Select |
476 | <Next></para> | 471 | <filename>Newton on Debian 9 (x86_64)</filename> or <filename>Newton |
472 | on Debian 9 (aarch64)</filename> depending on your | ||
473 | configuration:</para> | ||
477 | 474 | ||
478 | <mediaobject> | 475 | <mediaobject> |
479 | <imageobject> | 476 | <imageobject> |
@@ -489,23 +486,10 @@ $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | |||
489 | </listitem> | 486 | </listitem> |
490 | 487 | ||
491 | <listitem> | 488 | <listitem> |
492 | <para>Select <literal>network mode</literal>:</para> | 489 | <para>Select <filename>Neutron With VLAN segmenation</filename>. |
493 | 490 | <filename>Neutron with tunneling segmentation</filename> is available | |
494 | <itemizedlist> | 491 | but not supported in this release. DPDK scenarios only work with VLAN |
495 | <listitem> | 492 | segmentation.</para> |
496 | <para>Select <literal>Neutron with ML2 plugin</literal></para> | ||
497 | </listitem> | ||
498 | |||
499 | <listitem> | ||
500 | <para>Select <literal>Neutron with VLAN segmentation</literal> | ||
501 | (needed when enabling DPDK). VXLAN is available but not | ||
502 | supported.</para> | ||
503 | </listitem> | ||
504 | |||
505 | <listitem> | ||
506 | <para>Press [Next]</para> | ||
507 | </listitem> | ||
508 | </itemizedlist> | ||
509 | 493 | ||
510 | <mediaobject> | 494 | <mediaobject> |
511 | <imageobject> | 495 | <imageobject> |
@@ -516,7 +500,12 @@ $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | |||
516 | 500 | ||
517 | <listitem> | 501 | <listitem> |
518 | <para>Select <literal>Storage Back-ends</literal>, then <filename>Ceph | 502 | <para>Select <literal>Storage Back-ends</literal>, then <filename>Ceph |
519 | for block storage</filename> and press [Next]</para> | 503 | for block storage</filename>. <literal></literal></para> |
504 | |||
505 | <para><literal>Ceph</literal> for <filename>Image Storage</filename>, | ||
506 | <literal>Object storage</literal> and <literal>Ephemeral | ||
507 | storage</literal> have not been validated for this release. It is | ||
508 | advisable to only use the option mentioned above.</para> | ||
520 | 509 | ||
521 | <mediaobject> | 510 | <mediaobject> |
522 | <imageobject> | 511 | <imageobject> |
@@ -548,8 +537,8 @@ $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | |||
548 | <section id="config_net_env"> | 537 | <section id="config_net_env"> |
549 | <title>Configure the Network Environment</title> | 538 | <title>Configure the Network Environment</title> |
550 | 539 | ||
551 | <para>To configure the network environment specifically to a DPDK based | 540 | <para>To configure the network environment, please follow these |
552 | scenario, please follow these steps:</para> | 541 | steps:</para> |
553 | 542 | ||
554 | <orderedlist> | 543 | <orderedlist> |
555 | <listitem> | 544 | <listitem> |
@@ -655,34 +644,6 @@ $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | |||
655 | </listitem> | 644 | </listitem> |
656 | 645 | ||
657 | <listitem> | 646 | <listitem> |
658 | <para>Update the Private Network information:</para> | ||
659 | |||
660 | <itemizedlist> | ||
661 | <listitem> | ||
662 | <para>It is recommended to keep the default CIDR</para> | ||
663 | </listitem> | ||
664 | |||
665 | <listitem> | ||
666 | <para>Set IP Range Start to an appropriate value (default | ||
667 | 192.168.2.1)</para> | ||
668 | </listitem> | ||
669 | |||
670 | <listitem> | ||
671 | <para>Set IP Range End to an appropriate value (default | ||
672 | 192.168.2.254)</para> | ||
673 | </listitem> | ||
674 | |||
675 | <listitem> | ||
676 | <para>Check <VLAN tagging></para> | ||
677 | </listitem> | ||
678 | |||
679 | <listitem> | ||
680 | <para>Set an appropriate VLAN tag (default 103)</para> | ||
681 | </listitem> | ||
682 | </itemizedlist> | ||
683 | </listitem> | ||
684 | |||
685 | <listitem> | ||
686 | <para>Select the <literal>Neutron L3</literal> Node Networks group on | 647 | <para>Select the <literal>Neutron L3</literal> Node Networks group on |
687 | the left pane:</para> | 648 | the left pane:</para> |
688 | 649 | ||
@@ -780,24 +741,19 @@ $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | |||
780 | <section id="add_rm_repos"> | 741 | <section id="add_rm_repos"> |
781 | <title>Adding/Removing Repositories</title> | 742 | <title>Adding/Removing Repositories</title> |
782 | 743 | ||
783 | <para>Fuel by default, uses a set of repositories as package sources, that | 744 | <para>Enea NFV Core has been validated for complete offline deployment. To |
784 | hold both OpenStack components as well as other needed packages. In order | 745 | this end, two repositories are defined and used. The first, |
785 | to speed up the deployment process, Fuel will create two mirrors. The | 746 | <literal>debian-testing-local</literal> (<filename>deb |
786 | first, a local mirror, reachable on the Admin interface (e.g. | 747 | http://10.20.0.2:8080/mirrors/debian testing main</filename>), contains a |
787 | <literal>10.20.0.2:8080/newton-10.0/ubuntu/x86-64</literal>), will add | 748 | snapshot of the Debian base OS, while the second, <literal>mos</literal>, |
788 | additional repositories that need external connections. The second, a | 749 | (<literal>deb http://10.20.0.2:8080/newton-10.0/ubuntu/x86_64 mos10.0 main |
789 | debian testing main: | 750 | restricted</literal>), stores the Enea NFV Core specific Openstack and |
790 | <literal>http://10.20.0.2:8080/mirrors/debian</literal>, requires no other | 751 | Openstack related packages.</para> |
791 | repositories to be added that need external connections, having only (even | 752 | |
792 | for offline): <filename>debian-testing-local</filename> and | 753 | <para>These repositories provide only the minimum necessary packages, but |
793 | <literal>mos</literal>.</para> | 754 | it is possible to add extra repositories as needed. It is recommended |
794 | 755 | however, that the first deployment be performed without extra | |
795 | <para>It is possible to avoid using external repositories and make the | 756 | repositories.</para> |
796 | entire process completely offline. In this way only the most basic | ||
797 | packages will be installed, but the process will be more efficient and not | ||
798 | depend on an Internet connection. To do this, just make sure that the | ||
799 | Repositories list contains only <filename>ubuntu-local</filename>, | ||
800 | <literal>mos</literal> and <literal>Auxilliary</literal>.</para> | ||
801 | 757 | ||
802 | <itemizedlist> | 758 | <itemizedlist> |
803 | <listitem> | 759 | <listitem> |
@@ -827,7 +783,8 @@ $ fuel plugins --install tacker-1.0-1.0.0-1.noarch.rpm</programlisting> | |||
827 | <para>In the FUEL UI of your Environment, click the | 783 | <para>In the FUEL UI of your Environment, click the |
828 | <literal>Settings</literal> tab and select <literal>OpenStack | 784 | <literal>Settings</literal> tab and select <literal>OpenStack |
829 | Services</literal> on the left side pane, make sure Tacker is NOT enabled | 785 | Services</literal> on the left side pane, make sure Tacker is NOT enabled |
830 | and save your settings:</para> | 786 | and save your settings. Tacker functionality will be enabled after |
787 | deployment is performed.</para> | ||
831 | 788 | ||
832 | <mediaobject> | 789 | <mediaobject> |
833 | <imageobject> | 790 | <imageobject> |
diff --git a/book-enea-nfv-core-installation-guide/doc/post_deploy_config.xml b/book-enea-nfv-core-installation-guide/doc/post_deploy_config.xml deleted file mode 100644 index 9875f58..0000000 --- a/book-enea-nfv-core-installation-guide/doc/post_deploy_config.xml +++ /dev/null | |||
@@ -1,119 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="post_deploy_config"> | ||
3 | <title>Post-Deploy Configurations</title> | ||
4 | |||
5 | <para>For running DPDK applications it is useful to isolate the available | ||
6 | CPUs between the Linux kernel, <literal>ovs-dpdk</literal> and | ||
7 | <literal>nova-compute</literal>.</para> | ||
8 | |||
9 | <para>All of the Hardware nodes can be accessed through | ||
10 | <literal>ssh</literal> from the Fuel console. Simply create an | ||
11 | <literal>ssh</literal> connection to Fuel (e.g. root@10.20.0.2 pwd: r00tme) | ||
12 | and run the following command to get a list of the servers and the IPs where | ||
13 | they can be reached.</para> | ||
14 | |||
15 | <programlisting>[root@fuel ~]# fuel node | ||
16 | id | status | name | cluster | ip | mac | roles / | ||
17 | | pending_roles | online | group_id | ||
18 | ---+--------+------------------+---------+-----------+-------------------+----------/ | ||
19 | -----------------+---------------+--------+--------- | ||
20 | 4 | ready | Untitled (8c:c2) | 1 | 10.20.0.6 | 68:05:ca:46:8c:c2 | ceph-osd,/ | ||
21 | compute | | 1 | 1 | ||
22 | 2 | ready | Untitled (8c:45) | 1 | 10.20.0.5 | 68:05:ca:46:8c:45 | controller,/ | ||
23 | mongo, tacker | | 1 | 1 | ||
24 | 1 | ready | Untitled (8c:d4) | 1 | 10.20.0.4 | 68:05:ca:46:8c:d4 | ceph-osd,/ | ||
25 | controller | | 1 | 1 | ||
26 | 5 | ready | Untitled (8c:c9) | 1 | 10.20.0.7 | 68:05:ca:46:8c:c9 | ceph-osd,/ | ||
27 | compute | | 1 | 1 | ||
28 | 3 | ready | Untitled (8b:64) | 1 | 10.20.0.3 | 68:05:ca:46:8b:64 | controller,/ | ||
29 | vitrage | | 1 | 1 | ||
30 | [root@fuel ~]# | | 1 | 2 | ||
31 | [root@fuel ~]# ssh node-3 | ||
32 | Warning: Permanently added 'node-3' (ECDSA) to the list of known hosts. | ||
33 | |||
34 | The programs included with the Debian GNU/Linux system are free software; | ||
35 | the exact distribution terms for each program are described in the | ||
36 | individual files in /usr/share/doc/*/copyright. | ||
37 | |||
38 | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
39 | permitted by applicable law. | ||
40 | Last login: Thu Aug 24 19:40:06 2017 from 10.20.0.2 | ||
41 | root@node-3:~#</programlisting> | ||
42 | |||
43 | <section id="cpu_isolation_config"> | ||
44 | <title>CPU isolation configuration</title> | ||
45 | |||
46 | <para>It is a good idea to isolate the cores that will perform packet | ||
47 | processing and run QEMU. The example below shows how to set | ||
48 | <literal>isolcpus</literal> on a compute node that has one Intel Xeon | ||
49 | processor E5-2660 v4, 14 cores, and 28 hyper-threaded cores.</para> | ||
50 | |||
51 | <programlisting>root@node-3:~# cat /etc/default/grub | head -n 10 | ||
52 | # If you change this file, run 'update-grub' afterwards to update | ||
53 | # /boot/grub/grub.cfg. | ||
54 | # For full documentation of the options in this file, see: | ||
55 | # info -f grub -n 'Simple configuration' | ||
56 | |||
57 | GRUB_DEFAULT="Advanced options for Ubuntu, with Linux 4.4.50-rt62nfv" | ||
58 | GRUB_TIMEOUT=10 | ||
59 | GRUB_DISTRIBUTOR='lsb_release -i -s 2 /dev/null || echo Debian' | ||
60 | GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" | ||
61 | GRUB_CMDLINE_LINUX=" console=tty0 net.ifnames=1 biosdevname=0 rootdelay=90 / | ||
62 | nomodeset hugepagesz=2M hugepages=1536 isolcpus=10-47,58-95" | ||
63 | root@node-6:~# update-grub | ||
64 | Generating grub configuration file ... | ||
65 | Found linux image: /boot/vmlinuz- 4.10.0-9924-generic | ||
66 | Found initrd image: /boot/initrd.img- 4.10.0-9924-generic | ||
67 | done | ||
68 | root@node-3:~# reboot | ||
69 | Connection to node-3 closed by remote host. | ||
70 | Connection to node-3 closed.</programlisting> | ||
71 | </section> | ||
72 | |||
73 | <section id="nova_config"> | ||
74 | <title>Nova Compute configurations</title> | ||
75 | |||
76 | <para>In order to isolate the OpenStack instances on dedicated CPUs, nova | ||
77 | must be configured with <literal>vcpu_pin_set</literal>. Please refer to | ||
78 | the Nova configuration guide for more information.</para> | ||
79 | |||
80 | <para>The example below applies again, to an Intel Xeon processor E5-2660 | ||
81 | v4. Here the <literal>vcpu_pin_set</literal> is configured so that a pair | ||
82 | of thread siblings are chosen.</para> | ||
83 | |||
84 | <programlisting>root@node-3:~# cat /etc/nova/nova.conf | grep vcpu_pin_set | ||
85 | vcpu_pin_set = "16-47,64-95" | ||
86 | root@node-3:~#</programlisting> | ||
87 | |||
88 | <para>After modifying Nova configuration options on the Compute nodes, it | ||
89 | is necessary to restart <literal>nova-compute</literal> to put them into | ||
90 | effect.</para> | ||
91 | |||
92 | <programlisting>root@node-3:~# systemctl restart nova-compute | ||
93 | root@node-3:~#</programlisting> | ||
94 | </section> | ||
95 | |||
96 | <section id="ovs_dpdk"> | ||
97 | <title>OpenvSwitch with DPDK configuration</title> | ||
98 | |||
99 | <para>Enea NFV Core 1.0 comes with OpenvSwitch as the virtual switch | ||
100 | option. In the selected scenario, OpenvSwitch also uses DPDK for passing | ||
101 | traffic to and from the VMs. One of the features that comes with | ||
102 | OpenvSwitch v2.7.0 is the ability to set <literal>pmd-cpu-mask</literal>. | ||
103 | This effectively isolates userspace PMD (poll-mode-drivers) on the | ||
104 | specified set of CPUs.</para> | ||
105 | |||
106 | <para>By default, the OpenvSwitch that comes installed on the compute | ||
107 | nodes has no <literal>pmd-cpu-mask</literal>. There is an option to set it | ||
108 | from the Fuel menu before deploy, but it can always be manually set | ||
109 | post-deploy as follows:</para> | ||
110 | |||
111 | <programlisting>root@node-3:~# ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=7e0 | ||
112 | root@node-3:~# ovs-vsctl get Open_vSwitch . other_config:pmd-cpu-mask | ||
113 | "7e0" | ||
114 | root@node-3:~#</programlisting> | ||
115 | |||
116 | <para>No restart is required, OpenvSwitch automatically spawns new pmd | ||
117 | threads and sets the affinity as necessary.</para> | ||
118 | </section> | ||
119 | </chapter> \ No newline at end of file | ||