From 6a28ba866d3c0cd05041d9196c3bb0e2340bd2e7 Mon Sep 17 00:00:00 2001 From: Trevor Cooper Date: Fri, 22 Jan 2016 13:27:04 -0800 Subject: [PATCH] Removed old lab description template and replaced with new template. Updates for ... 1) Lab description 2) POD description 3) Examples of lab tolpology and POD topology diagrams. These files were created using ideas from existing lab/POD descriptions and lab experience for rls B. (cp) provided some tidying up and random spelling fixes for the toolchain. Change-Id: I72a34be9e1c1509fd310b43562bf6d5aa1c459e7 Signed-off-by: Trevor Cooper --- docs/configguide/lab_update_guide.rst | 2 +- docs/information/pharos.rst | 23 +- docs/jumpserver_install.rst | 4 +- .../images/lab_topology_example.jpg | Bin 0 -> 54609 bytes .../images/pod_topology_example.png | Bin 0 -> 45640 bytes docs/lab-description/lab_description.rst | 51 ++ docs/lab-description/lab_details_template.rst | 71 -- docs/lab-description/pod_description.rst | 90 +++ docs/labs/Dell.rst | 735 ++++++++++----------- .../huawei-us-lab}/huawei-us-lab.png | Bin .../huawei-us-lab}/huawei-us-lab.rst | 50 +- .../huawei-us-lab}/index.rst | 0 .../huawei-us-lab}/pod-network.png | Bin docs/labs/spirent.rst | 18 +- docs/pharos-spec.rst | 51 +- docs/specification/hardwarespec.rst | 2 +- 16 files changed, 572 insertions(+), 525 deletions(-) create mode 100644 docs/lab-description/images/lab_topology_example.jpg create mode 100644 docs/lab-description/images/pod_topology_example.png create mode 100644 docs/lab-description/lab_description.rst delete mode 100644 docs/lab-description/lab_details_template.rst create mode 100644 docs/lab-description/pod_description.rst rename docs/{lab-huawei-us-lab => labs/huawei-us-lab}/huawei-us-lab.png (100%) rename docs/{lab-huawei-us-lab => labs/huawei-us-lab}/huawei-us-lab.rst (60%) rename docs/{lab-huawei-us-lab => labs/huawei-us-lab}/index.rst (100%) rename docs/{lab-huawei-us-lab => labs/huawei-us-lab}/pod-network.png (100%) diff --git a/docs/configguide/lab_update_guide.rst b/docs/configguide/lab_update_guide.rst index fb41f4bc..ca79ed51 100644 --- a/docs/configguide/lab_update_guide.rst +++ b/docs/configguide/lab_update_guide.rst @@ -28,7 +28,7 @@ How to update the Start Page # go to gerrit web and add reviewers, wait to have it merged # after code gets merged http://artifacts.opnfv.org/pharos/docs/pharos.html will contain your change - # edit Wiki page https://wiki.opnfv.org/pharos and look for {{scrape>http://artifacts.opnfv.org/pharos/docs/pharos.html}} + # edit Wiki page https://wiki.opnfv.org/pharos and look for {{scrape>http://artifacts.opnfv.org/pharos/docs/pharos.html}} # click "Preview" and see if your change is shown; if shown add a short "Edit summary" and click "Save" # This must be done as Wiki does not auto update content for now diff --git a/docs/information/pharos.rst b/docs/information/pharos.rst index dc0bcc6a..df3cccb8 100644 --- a/docs/information/pharos.rst +++ b/docs/information/pharos.rst @@ -2,15 +2,24 @@ Project: Testbed infrastructure (Pharos) ######################################### -The Pharos project deals with the creation of a distributed and federated NFV test capability that will be hosted by a number of companies in the OPNFV community. The goals consist in managing the list of community platforms, describing the different community platforms, offering timeslots and tools to perform tests, sharing the results and the best practices, supporting any test campaigns of the projects of the community (e.g. [[opnfv_functional_testing | functional testing project]], [[platform_performance_benchmarking|Qtip]], [[get_started|BGS]], [[oscar/project_proposal|oscar]],...). Pharos shall provide the infrastructure and the tooling needed by the different projects. +The Pharos project deals with the creation of a distributed and federated NFV test capability that will be hosted +by a number of companies in the OPNFV community. The goals consist in managing the list of community platforms, +describing the different community platforms, offering timeslots and tools to perform tests, sharing the results +and the best practices, supporting any test campaigns of the projects of the community (e.g. +[[opnfv_functional_testing | functional testing project]], [[platform_performance_benchmarking|Qtip]], +[[get_started|BGS]], [[oscar/project_proposal|oscar]],...). Pharos shall provide the infrastructure and the tooling +needed by the different projects. -.. image:: images/opnfv-test.jpg +.. image:: ../images/opnfv-test.jpg Community Test Labs -------------------- -A summary of all Community Hosted OPNFV test labs (existing and planned) is also kept on the `wiki home page `. This section here contains additional details and project relationship mappings. //NOTE: Please follow `these instructions ` when updating this list.// +A summary of all Community Hosted OPNFV test labs (existing and planned) is also kept on the `wiki home page +`. This section here contains additional details and project +relationship mappings. //NOTE: Please follow `these instructions ` when +updating this list.// +-----------+---------------+------------------------------------------------------+---------------------------------------------+-------------------------------------+----------------------+ | Map | Hosting | Home page | Contact person | Comments | Location | @@ -97,11 +106,3 @@ Pharos project - Key facts - `meetings `_ - Repository: pharos - -**Documentation tracking** - -Revision: _sha1_ - -Build date: _date_ - - diff --git a/docs/jumpserver_install.rst b/docs/jumpserver_install.rst index 8a7c20a4..731eb490 100644 --- a/docs/jumpserver_install.rst +++ b/docs/jumpserver_install.rst @@ -64,7 +64,9 @@ ``cd /home/qemu`` - ``virt-install -n opnfv-2015-05-22_18-34-07-fuel -r 4096 --vcpus=4 --cpuset=0-3 -c opnfv-2015-05-22_18-34-07.iso --os-type=linux --os-variant=rhel6 --boot hd,cdrom --disk path=/home/qemu/VMs/mirantis-fuel-6.0/disk/fuel-vhd0.qcow2,bus=virtio,size=50,format=qcow2 -w bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0`` + ``virt-install -n opnfv-2015-05-22_18-34-07-fuel -r 4096 --vcpus=4 --cpuset=0-3 -c opnfv-2015-05-22_18-34-07.iso + --os-type=linux --os-variant=rhel6 --boot hd,cdrom --disk path=/home/qemu/VMs/mirantis-fuel-6.0/disk/fuel- + vhd0.qcow2,bus=virtio,size=50,format=qcow2 -w bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0`` 16. Temporarily flush the firewall rules to make things easier: diff --git a/docs/lab-description/images/lab_topology_example.jpg b/docs/lab-description/images/lab_topology_example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d151e9b5e2c1b6fddffa81ee97a8819013dbdd15 GIT binary patch literal 54609 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

o=vX$ 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 literal 0 HcmV?d00001 diff --git a/docs/lab-description/lab_description.rst b/docs/lab-description/lab_description.rst new file mode 100644 index 00000000..4ea0b124 --- /dev/null +++ b/docs/lab-description/lab_description.rst @@ -0,0 +1,51 @@ +Pharos Lab Description Template +=============================== + +Introduction +------------ + +Add an summary of what your lab hosts, its focus areas and purpose + + +Lab Resources +============= + ++----------------+----------------+----------------+----------------+----------------+----------------+----------------+ +| Resource | Project(s) | Project Lead | Email(s) | POD Role* | Status** | Notes | ++----------------+----------------+----------------+----------------+----------------+----------------+----------------+ +| POD1 | example | John Doe | john@intel.com | CI: stable | Active | | ++----------------+----------------+----------------+----------------+----------------+----------------+----------------+ + +* POD Role: CI stable, CI latest, Dev/test, Stand-alone, ... +** Status: Assigned, Configuration in progress, Active, Troubleshooting, Can be re-purposed, ... + + +Code of Conduct +=============== + +Define your lab's policies and expectations here + + +Remote Access Infrastructure +============================ + +Describe your lab remote access setup (type of access (VPN?), link speed, any restrictions, etc.) + + +Remote Access Process +===================== + +Define your lab's process for requesting access to the lab (e.g. VPN guide, how to modify BIOS settings, etc.) + + +Documentation +============= + +List your lab specific documents here + + +Lab Topology +============ + +.. image:: images/_.png|.jpg + :alt: Name of the diagram diff --git a/docs/lab-description/lab_details_template.rst b/docs/lab-description/lab_details_template.rst deleted file mode 100644 index bcc909ad..00000000 --- a/docs/lab-description/lab_details_template.rst +++ /dev/null @@ -1,71 +0,0 @@ -Pharos Lab Details Template -============================ - -Hardware details ------------------ - -**General details** - -+----------------+------------------+----------------------+-----------------------+------------------+-----------+-------------+----------------------------------------------+---------+ -| Hostname | Node type | HW model | Storage | CPU model | # Sockets | Memory [GB] | # NIC [MAC / IP / VLAN id] | BW | -+----------------+------------------+----------------------+-----------------------+------------------+-----------+-------------+----------------------------------------------+---------+ -| galileo | network | Dell R730 | 3 x 1TB (raid 5) | IntelE5-2690 v2 | 2 | 64 | 1 # 00:ae:ff:cc:dd:12 / 192.168.22.10 / 1003 | 10 Gbps | -| | | | | | | | 2 # 00:11:22:33:44:55 / 10.7.8.10 / 1 | 1 Gbps | -+----------------+------------------+----------------------+-----------------------+--------------+-----------+-------------+-------------------------------------------+------+---------+ - -**Lights-out** - -+----------------+-------------------------------+------------------+---------------------+ -| Hostname | Lights-out address | Username | Password | ------------------+-------------------------------+------------------+---------------------+ -| | | | | -+----------------+-------------------------------+------------------+---------------------+ - - -Software ---------- - -**OS** - - -**Pre-provisioned software** - - -Network --------- - -**Subnet allocations** - -+--------------+-------------------+-------------------+---------------+---------+ -| Net name | Address | Mask | Gateway | VLAN id | -+--------------+-------------------+-------------------+---------------+---------+ -| | | | | | -+--------------+-------------------+-------------------+---------------+---------+ - - -**Firewall rules** - - -**Diagrams** - -.. image:: images/_.png|.jpg - :alt: Name of the diagram - -Remote access infrastructure ------------------------------ - -**Explanations** - -**Diagrams** - -.. image:: images/_.png|.jpg - :alt: Name of the diagram - - -Documentation tracking ------------------------ - -Revision: _sha1_ - -Build date: _date_ - diff --git a/docs/lab-description/pod_description.rst b/docs/lab-description/pod_description.rst new file mode 100644 index 00000000..a3fed8c3 --- /dev/null +++ b/docs/lab-description/pod_description.rst @@ -0,0 +1,90 @@ +Pharos Lab POD description Template +=================================== + +Introduction +------------ + +Add an summary of the POD usage (Project, CI stable, CI latest, dev/test, stand-alone servers, etc.) + + +Additional Requirements +----------------------- + +Describe any addional POD requirements beyond a standard Pharos compliant POD e.g. test equipment, +shared usage, ... + + +Systems +------- + +Jump Host +^^^^^^^^^ + ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| | | | | | | Local | Lights-out network | 1GbE: NIC#/IP | 10GbE: NIC#/IP | | +| Hostname | Vendor | Model | Serial Number| CPUs | Memory | storage | (IPMI): IP/MAC, U/P | MAC/VLAN/Network | MAC/VLAN/Network | Notes | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| pod2-jp-jump | Dell | R730 | ABCDEF007 | 2 x E5-2699 | 64 GB | 240GB SSD | 10.10.10.10 | IF0: 10.2.117.36 | IF2: 10.2.12.1 | | +| | | | | | | 1 TB SATA | 00:1E:67:D4:36:9A | 00:1E:67:4F:B7:B1 | 00:1E:67:4F:B7:B4 | | +| | | | | | | | root/root | VLAN 984 | VLAN 202 | | +| | | | | | | | | Public | Private | | +| | | | | | | | | IF1: 10.2.1.1 | IF3: 10.2.13.1 | | +| | | | | | | | | 00:1E:67:4F:B7:B2 | 00:1E:67:4F:B7:B5 | | +| | | | | | | | | VLAN 201 | VLAN 203 | | +| | | | | | | | | Admin | Storage | | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ + + +Nodes +^^^^^ + ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| | | | | | | Local | Lights-out network | 1GbE: NIC#/IP | 10GbE: NIC#/IP | | +| Hostname | Vendor | Model | Serial Number| CPUs | Memory | storage | (IPMI): IP/MAC, U/P | MAC/VLAN/Network | MAC/VLAN/Network | Notes | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| pod2-jp-node1| | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| pod2-jp-node2| | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| pod2-jp-node3| | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| pod2-jp-node4| | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ +| pod2-jp-node5| | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | ++--------------+--------------+--------------+--------------+--------------+--------------+--------------+------------------------+------------------------+------------------------+--------------+ + +VPN Users +--------- + ++--------------+--------------+--------------+--------------+--------------+ +| Name | Email | Project | Role | Notes | ++--------------+--------------+--------------+--------------+--------------+ +| joe user | ju@gmail.com | Pharos | contributer | CI support | ++--------------+--------------+--------------+--------------+--------------+ + + +Firewall Rules +-------------- + ++--------------+--------------+--------------+ +| Port(s) | Service | Note | ++--------------+--------------+--------------+ +| 22, 43, 80 | Jenkins CI | | ++--------------+--------------+--------------+ + + +POD Topology +------------ + +.. image:: images/_.png|.jpg + :alt: Name of the diagram diff --git a/docs/labs/Dell.rst b/docs/labs/Dell.rst index c0c47506..f5916b8e 100644 --- a/docs/labs/Dell.rst +++ b/docs/labs/Dell.rst @@ -1,378 +1,357 @@ -Dell OPNFV Testlab -================================================== - -Overview ------------------- - -Dell is hosting an OPNFV testlab at its Santa Clara facility. The testlab would host baremetal servers for the use of OPNFV community as part of the OPNFV Pharos Project - - -The Dell Testlab consists of 2 PODs - * POD1 for Fuel - * POD2 for Foreman - -.. image:: images/Dell_Overview.jpg - :height: 553 - :width: 449 - :alt: Dell Testlab Overiew - :align: left - -Each of the 2 PODs consists of 6 servers that consist of - * 1 Jump Server - * 3 Servers for Control Nodes - * 2 Servers for Compute Nodes - - - -Hardware details ------------------ - -All the servers within the two PODs reside within a single Dell PowerEdge 620 chassis and have the following specifications: - - - -**POD1-Fuel** - -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Hostname | Model | Memory | Storage | Processor | Socket | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Fuel Jump Server | Dell PowerEdge M620 | 64 GB | 1200GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node2 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node3 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node4 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node5 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node6 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ - - - - -**POD2-Foreman** - -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Hostname | Model | Memory | Storage | Processor | Socket | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Foreman Jump Server | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node7 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node8 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node9 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node11 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ -| Node12 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | -+---------------------+----------------------+----------------+--------------+---------------------+------------+ - - - - - -Software ---------- - -The Jump servers in the Testlab are pre-provisioned with the following softwares: - - * Fuel-Jump Server: - - 1. OS: Ubuntu 14.04 - - - * Foreman-Jump Server: - - 1. OS: CentOS7 - - - - - -Networks ----------- - - - -**POD1-Fuel** - -.. image:: images/Dell_POD1.jpg - :height: 647 - :width: 821 - :alt: POD1-Fuel Overview - :align: left - -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Hostname | NIC Model | Ports|MAC | BW | Roles | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Fuel Jump | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:81 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:84 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:85 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:87 | 10G | Fuel Admin/mgmt/pvt/ storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:89 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:8B | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node2 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:8E | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:91 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:92 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:94 | 10G | Fuel Admin/mgmt/pvt/ storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:96 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:98 | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node3 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:9B | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:9E | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:9F | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:A1 | 10G | Fuel Admin/mgmt/pvt/ storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:A3 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:A5 | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node4 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:A8 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:AB | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:AC | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:AE | 10G | Fuel Admin/mgmt/pvt/ storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:B0 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:B1 | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node5 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:B5 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:B8 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:B9 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:BB | 10G | Fuel Admin/mgmt/pvt/ storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:BD | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:C0 | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node6 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:C2 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:C5 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:C6 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:C8 | 10G | Fuel Admin/mgmt/pvt/ storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:CA | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:CD | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ - - - -**POD2-Foreman** - -.. image:: images/Dell_POD2.jpg - :height: 721 - :width: 785 - :alt: POD2-Foreman Overview - :align: left - - -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Hostname | NIC Model | Ports|MAC | BW | Roles | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Foreman Jump | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B5:1D | 10G | Foreman Admin | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B5:20 | 10G | Foreman Private/ Storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B5:21 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B5:23 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, TBD | p1p1 | A4:1F:72:11:B4:89 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:8B | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node7 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:CF | 10G | Foreman Admin | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:D2 | 10G | Foreman Private/ Storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:D3 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:D5 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:D7 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:DA | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node8 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:DC | 10G | Foreman Admin | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:DF | 10G | Foreman Private/ Storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:E0 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:E2 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:E4 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:E7 | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node9 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:E9 | 10G | Foreman Admin | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B4:EC | 10G | Foreman Private/ Storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:ED | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B4:EF | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:F1 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:F3 | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node11 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B5:03 | 10G | Foreman Admin | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B5:06 | 10G | Foreman Private/ Storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B5:07 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B5:09 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B5:0B | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B5:0D | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ -| Node12 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B5:10 | 10G | Foreman Admin | -| | +------+-------------------+-------+----------------------------------+ -| | | em2 | A4:1F:72:11:B5:13 | 10G | Foreman Private/ Storage | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B5:14 | 10G | Public | -| | +------+-------------------+-------+----------------------------------+ -| | | p3p2 | A4:1F:72:11:B5:16 | 10G | Unused | -| +----------------------------------------------+------+-------------------+-------+----------------------------------+ -| | 3, TBD | p1p1 | A4:1F:72:11:B4:89 | 10G | Unused | -| | +------+-------------------+-------+----------------------------------+ -| | | p1p2 | A4:1F:72:11:B4:8B | 10G | Unused | -+---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ - - - - - - -**Subnet allocations** - -+-------------------+----------------+-------------------+---------------+----------+ -| Network name | Address | Mask | Gateway | VLAN id | -+-------------------+----------------+-------------------+---------------+----------+ -| Fuel Admin | 10.20.0.0 | 255.255.0.0 | 10.20.0.1 | Untagged | -+-------------------+----------------+-------------------+---------------+----------+ -| Fuel Mangement | 192.168.0.0 | 255.255.255.0 | 192.168.0.1 | 101 | -+-------------------+----------------+-------------------+---------------+----------+ -| Fuel Storage | 192.168.1.0 | 255.255.255.0 | 192.168.1.1 | 102 | -+-------------------+----------------+-------------------+---------------+----------+ -| Fuel Public | 172.18.0.64 | 255.255.255.192 | 172.18.0.65 | Untagged | -+-------------------+----------------+-------------------+---------------+----------+ -| Foreman Admin | 10.4.14.0 | 255.255.255.0 | 10.4.14.100 | Untagged | -+-------------------+----------------+-------------------+---------------+----------+ -| Foreman Private | 10.4.5.0 | 255.255.255.0 | 10.4.5.1 | Untagged | -+-------------------+----------------+-------------------+---------------+----------+ -| Foreman Public | 172.18.0.0 | 255.255.255.192 | 172.18.0.1 | Untagged | -+-------------------+----------------+-------------------+---------------+----------+ -| Lights Out | 172.18.0.128 | 255.255.255.128 | 172.18.0.129 | Untagged | -+-------------------+----------------+-------------------+---------------+----------+ - - -**Lights out Network** - -**POD1** - -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Hostname | Lights-out address | MAC | Username | Password | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Fuel-Jump | 172.18.1.131 | A4:1F:72:11:B4:80| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node2 | 172.18.1.132 | A4:1F:72:11:B4:8D| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node3 | 172.18.1.133 | A4:1F:72:11:B4:9A| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node4 | 172.18.1.134 | A4:1F:72:11:B4:A7| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node5 | 172.18.1.135 | A4:1F:72:11:B4:B4| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node6 | 172.18.1.136 | A4:1F:72:11:B4:C1| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ - -**POD2** - -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Hostname | Lights-out address | MAC | Username | Password | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Foreman-Jump | 172.18.1.143 | A4:1F:72:11:B5:1C| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node7 | 172.18.1.137 | A4:1F:72:11:B4:CE| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node8 | 172.18.1.138 | A4:1F:72:11:B4:DB| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node9 | 172.18.1.139 | A4:1F:72:11:B4:E8| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node11 | 172.18.1.141 | A4:1F:72:11:B5:02| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ -| Node12 | 172.18.1.142 | A4:1F:72:11:B5:0F| root | calvin | -+----------------+-------------------------------+------------------+---------------------+---------------------+ - - - - - - -Remote access infrastructure ------------------------------ - -The Dell OPNFV testlab is free to use for the OPNFV community. - -A VPN is used to provide access to the Dell Testlab. - -To access the Testlab, please contact Waqas_Riaz@DELL.com with the following details: - * Name - * Email - * Designation - * Organization - * Purpose of using the lab - - Processing the request can take 2-3 business days. - -*Accessing the Teslab* ------------------------ - -* POD1 JumpServer - - IP: 172.18.0.67 - - User: opnfv - - Passwd: d3ll1234 - - - -* POD2 JumpServer - - IP: 172.18.0.11 - - User: opnfv - - Passwd: d3ll1234 - +Dell OPNFV Testlab +================================================== + +Overview +------------------ + +Dell is hosting an OPNFV testlab at its Santa Clara facility. The testlab would host baremetal servers +for the use of OPNFV community as part of the OPNFV Pharos Project + + +The Dell Testlab consists of 2 PODs + * POD1 for Fuel + * POD2 for Foreman + +.. image:: images/Dell_Overview.jpg + :height: 553 + :width: 449 + :alt: Dell Testlab Overiew + :align: left + +Each of the 2 PODs consists of 6 servers that consist of + * 1 Jump Server + * 3 Servers for Control Nodes + * 2 Servers for Compute Nodes + + + +Hardware details +----------------- + +All the servers within the two PODs reside within a single Dell PowerEdge 620 chassis and have the +following specifications: + +POD1-Fuel +^^^^^^^^^ + ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Hostname | Model | Memory | Storage | Processor | Socket | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Fuel Jump Server | Dell PowerEdge M620 | 64 GB | 1200GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node2 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node3 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node4 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node5 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node6 | Dell PowerEdge M620 | 64 GB | 600GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ + +POD2-Foreman +^^^^^^^^^^^^ + ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Hostname | Model | Memory | Storage | Processor | Socket | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Foreman Jump Server | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node7 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node8 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node9 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node11 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ +| Node12 | Dell PowerEdge M620 | 64 GB | 300GB HDD | Intel Xeon E5-2640 | 2 | ++---------------------+----------------------+----------------+--------------+---------------------+------------+ + +Software +--------- + +The Jump servers in the Testlab are pre-provisioned with the following softwares: + + * Fuel-Jump Server: + + 1. OS: Ubuntu 14.04 + + + * Foreman-Jump Server: + + 1. OS: CentOS7 + +Networks +---------- + +POD1-Fuel +^^^^^^^^^ +.. image:: images/Dell_POD1.jpg + :height: 647 + :width: 821 + :alt: POD1-Fuel Overview + :align: left + ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Hostname | NIC Model | Ports|MAC | BW | Roles | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Fuel Jump | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:81 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:84 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:85 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:87 | 10G | Fuel Admin/mgmt/pvt/ storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:89 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:8B | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node2 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:8E | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:91 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:92 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:94 | 10G | Fuel Admin/mgmt/pvt/ storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:96 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:98 | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node3 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:9B | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:9E | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:9F | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:A1 | 10G | Fuel Admin/mgmt/pvt/ storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:A3 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:A5 | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node4 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:A8 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:AB | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:AC | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:AE | 10G | Fuel Admin/mgmt/pvt/ storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:B0 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:B1 | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node5 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:B5 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:B8 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:B9 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:BB | 10G | Fuel Admin/mgmt/pvt/ storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:BD | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:C0 | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node6 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:C2 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:C5 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:C6 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:C8 | 10G | Fuel Admin/mgmt/pvt/ storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:CA | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:CD | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ + + + +POD2-Foreman +^^^^^^^^^^^^ + +.. image:: images/Dell_POD2.jpg + :height: 721 + :width: 785 + :alt: POD2-Foreman Overview + :align: left + + ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Hostname | NIC Model | Ports|MAC | BW | Roles | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Foreman Jump | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B5:1D | 10G | Foreman Admin | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B5:20 | 10G | Foreman Private/ Storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B5:21 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B5:23 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, TBD | p1p1 | A4:1F:72:11:B4:89 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:8B | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node7 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:CF | 10G | Foreman Admin | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:D2 | 10G | Foreman Private/ Storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:D3 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:D5 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:D7 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:DA | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node8 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:DC | 10G | Foreman Admin | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:DF | 10G | Foreman Private/ Storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:E0 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:E2 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Broadcom NetXtreme II BCM57810 | p1p1 | A4:1F:72:11:B4:E4 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:E7 | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node9 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B4:E9 | 10G | Foreman Admin | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B4:EC | 10G | Foreman Private/ Storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B4:ED | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B4:EF | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B4:F1 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:F3 | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node11 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B5:03 | 10G | Foreman Admin | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B5:06 | 10G | Foreman Private/ Storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B5:07 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B5:09 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, Intel 82599 | p1p1 | A4:1F:72:11:B5:0B | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B5:0D | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ +| Node12 | 1, Broadcom NetXtreme II BCM57810 | em1 | A4:1F:72:11:B5:10 | 10G | Foreman Admin | +| | +------+-------------------+-------+----------------------------------+ +| | | em2 | A4:1F:72:11:B5:13 | 10G | Foreman Private/ Storage | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 2, Intel 82599 | p3p1 | A4:1F:72:11:B5:14 | 10G | Public | +| | +------+-------------------+-------+----------------------------------+ +| | | p3p2 | A4:1F:72:11:B5:16 | 10G | Unused | +| +----------------------------------------------+------+-------------------+-------+----------------------------------+ +| | 3, TBD | p1p1 | A4:1F:72:11:B4:89 | 10G | Unused | +| | +------+-------------------+-------+----------------------------------+ +| | | p1p2 | A4:1F:72:11:B4:8B | 10G | Unused | ++---------------------+----------------------------------------------+------+-------------------+-------+----------------------------------+ + +Subnet allocations +^^^^^^^^^^^^^^^^^^ + ++-------------------+----------------+-------------------+---------------+----------+ +| Network name | Address | Mask | Gateway | VLAN id | ++-------------------+----------------+-------------------+---------------+----------+ +| Fuel Admin | 10.20.0.0 | 255.255.0.0 | 10.20.0.1 | Untagged | ++-------------------+----------------+-------------------+---------------+----------+ +| Fuel Mangement | 192.168.0.0 | 255.255.255.0 | 192.168.0.1 | 101 | ++-------------------+----------------+-------------------+---------------+----------+ +| Fuel Storage | 192.168.1.0 | 255.255.255.0 | 192.168.1.1 | 102 | ++-------------------+----------------+-------------------+---------------+----------+ +| Fuel Public | 172.18.0.64 | 255.255.255.192 | 172.18.0.65 | Untagged | ++-------------------+----------------+-------------------+---------------+----------+ +| Foreman Admin | 10.4.14.0 | 255.255.255.0 | 10.4.14.100 | Untagged | ++-------------------+----------------+-------------------+---------------+----------+ +| Foreman Private | 10.4.5.0 | 255.255.255.0 | 10.4.5.1 | Untagged | ++-------------------+----------------+-------------------+---------------+----------+ +| Foreman Public | 172.18.0.0 | 255.255.255.192 | 172.18.0.1 | Untagged | ++-------------------+----------------+-------------------+---------------+----------+ +| Lights Out | 172.18.0.128 | 255.255.255.128 | 172.18.0.129 | Untagged | ++-------------------+----------------+-------------------+---------------+----------+ + + +Lights out Network +^^^^^^^^^^^^^^^^^^ + +**POD1** + ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Hostname | Lights-out address | MAC | Username | Password | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Fuel-Jump | 172.18.1.131 | A4:1F:72:11:B4:80| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node2 | 172.18.1.132 | A4:1F:72:11:B4:8D| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node3 | 172.18.1.133 | A4:1F:72:11:B4:9A| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node4 | 172.18.1.134 | A4:1F:72:11:B4:A7| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node5 | 172.18.1.135 | A4:1F:72:11:B4:B4| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node6 | 172.18.1.136 | A4:1F:72:11:B4:C1| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ + +**POD2** + ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Hostname | Lights-out address | MAC | Username | Password | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Foreman-Jump | 172.18.1.143 | A4:1F:72:11:B5:1C| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node7 | 172.18.1.137 | A4:1F:72:11:B4:CE| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node8 | 172.18.1.138 | A4:1F:72:11:B4:DB| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node9 | 172.18.1.139 | A4:1F:72:11:B4:E8| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node11 | 172.18.1.141 | A4:1F:72:11:B5:02| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ +| Node12 | 172.18.1.142 | A4:1F:72:11:B5:0F| root | calvin | ++----------------+-------------------------------+------------------+---------------------+---------------------+ + + +Remote access infrastructure +----------------------------- + +The Dell OPNFV testlab is free to use for the OPNFV community. + +A VPN is used to provide access to the Dell Testlab. + +To access the Testlab, please contact Waqas_Riaz@DELL.com with the following details: + * Name + * Email + * Designation + * Organization + * Purpose of using the lab + +Processing the request can take 2-3 business days. + +*Accessing the Teslab* +---------------------- + +POD1 JumpServer +^^^^^^^^^^^^^^^ + + IP: 172.18.0.67 + User: opnfv + Passwd: d3ll1234 + + +POD2 JumpServer +^^^^^^^^^^^^^^^ + IP: 172.18.0.11 + User: opnfv + Passwd: d3ll1234 + diff --git a/docs/lab-huawei-us-lab/huawei-us-lab.png b/docs/labs/huawei-us-lab/huawei-us-lab.png similarity index 100% rename from docs/lab-huawei-us-lab/huawei-us-lab.png rename to docs/labs/huawei-us-lab/huawei-us-lab.png diff --git a/docs/lab-huawei-us-lab/huawei-us-lab.rst b/docs/labs/huawei-us-lab/huawei-us-lab.rst similarity index 60% rename from docs/lab-huawei-us-lab/huawei-us-lab.rst rename to docs/labs/huawei-us-lab/huawei-us-lab.rst index e59c8d92..48b34ba7 100644 --- a/docs/lab-huawei-us-lab/huawei-us-lab.rst +++ b/docs/labs/huawei-us-lab/huawei-us-lab.rst @@ -1,24 +1,16 @@ -.. image:: ../etc/opnfv-logo.png - :height: 40 - :width: 200 - :alt: OPNFV - :align: left - -| -| - Introduction ============ -Huawei's lab located in Santa Clara, CA will provide 1 full POD for baremetal deployment environment, 2 standalone server for virtual deployment, and 1 server with 6 executors for project's building and gate-testing. -All the resources have been attached to jenkins master, you can view the slaves below in https://build.opnfv.org/ci/: +Huawei's lab located in Santa Clara, CA will provide 1 full POD for baremetal deployment environment, 2 +standalone server for virtual deployment, and 1 server with 6 executors for project's building and gate-testing. +All the resources have been attached to Jenkins master, you can view the slaves below +in https://build.opnfv.org/ci/: * huawei-us-build-1 * huawei-us-deploy-vm-1 * huawei-us-deploy-vm-2 * huawei-us-deploy-bare-1 - Overall Description =================== @@ -26,7 +18,7 @@ Hardware -------- * 9 Huawei RH2285H V2 Rack Servers (128 GB RAM , 4.7 TB SATA SSDs, two Intel Xeon E5-2400 v2 series processors) -* 1 Huawei S9300 10G switch for storage, managment and public traffic - 2x10GE to each server. +* 1 Huawei S9300 10G switch for storage, management and public traffic - 2x10GE to each server. * 1 Huawei S5300 1G switch for installing and Lights+out management traffic - 2x1GE to each server. * 1 VPN concentrator for remote access and management. * 1 Huawei firewall and router for public network secure access. @@ -59,30 +51,41 @@ Below you'll find a topological view of the hosting set-up: | | -Figure 2: FullPod network configuration +Figure 2: Full Pod network configuration How to use our resources? ========================= -**Build Resource** +Build Resource +^^^^^^^^^^^^^^ + You can see the slaves named "huawei-us-build-[digit]" or "huawei-build-[digit]" in https://build.opnfv.org/ci/ -These resources are dedicated to CI. If you want to use huawei resource to run some automated jobs, you donnot need to apply for the credentials, just specify the node as "huawei-build" . For other purposes, please contact: [[weidong.shao@huawei.com]] +These resources are dedicated to CI. If you want to use Huawei resource to run some automated jobs, you do +not need to apply for the credentials, just specify the node as "huawei-build" . For other purposes, please +contact: [[weidong.shao@huawei.com]] + +Deployment Resource +^^^^^^^^^^^^^^^^^^^ -**Deployment Resource** -You can see the slaves named "huawei-us-deploy-vm/bare-[digit]" or "huawei-deploy-vm/bare-[digit]" in https://build.opnfv.org/ci/ +You can see the slaves named "huawei-us-deploy-vm/bare-[digit]" or "huawei-deploy-vm/bare-[digit]" in +https://build.opnfv.org/ci/ -We have two types of deployment resources, virtual deployment environment and baremetal deployment environment. Both can be deployed by any types of installer, and provide the same testbed for testing and the same infrastructure for VNF. +We have two types of deployment resources, virtual deployment environment and baremetal deployment environment. +Both can be deployed by any types of installer, and provide the same testbed for testing and the same +infrastructure for VNF. -You can access our deployment resources by applying for the VPN credentials, please see the section below for details. +You can access our deployment resources by applying for the VPN credentials, please see the section below +for details. Access ====== -This environment is free to use by any OPNFV contributor or committer for the purpose of OPNFV approved activities, you just need to obtain VPN credentials to access. +This environment is free to use by any OPNFV contributor or committer for the purpose of OPNFV approved +activities, you just need to obtain VPN credentials to access. Access to this environment can be granted by sending a e-mail to: * [[weidong.shao@huawei.com]] @@ -102,8 +105,3 @@ Following information should be provided in the request: * SSH public key Granting access normally takes 3-5 business days. - - -Revision: _sha1_ - -Build date: |today| diff --git a/docs/lab-huawei-us-lab/index.rst b/docs/labs/huawei-us-lab/index.rst similarity index 100% rename from docs/lab-huawei-us-lab/index.rst rename to docs/labs/huawei-us-lab/index.rst diff --git a/docs/lab-huawei-us-lab/pod-network.png b/docs/labs/huawei-us-lab/pod-network.png similarity index 100% rename from docs/lab-huawei-us-lab/pod-network.png rename to docs/labs/huawei-us-lab/pod-network.png diff --git a/docs/labs/spirent.rst b/docs/labs/spirent.rst index 4ec987bd..d5804ac6 100644 --- a/docs/labs/spirent.rst +++ b/docs/labs/spirent.rst @@ -1,7 +1,8 @@ Spirent Virtual Cloud Test Lab =============================== -A community provided metal resource hosted at Nephoscale, leveraged for SDN/NFV public testing and OpenDaylight, OpenStack, OPNFV projects. +A community provided metal resource hosted at Nephoscale, leveraged for SDN/NFV public testing and OpenDaylight, +OpenStack, OPNFV projects. **Spirent VCT Lab** is currently working on 3 different **OpenStack** environments each one of them deployed on different hardware configuration: @@ -22,8 +23,12 @@ There are a number of different networks referenced in the VPTC Design Blueprint These can be added or removed as specified by the test methodology. There are 8 x 10 gige SFP+ ports available on a typical C100MP used for Avalanche Layer 4-7 testing. The N4U offers 2 x 40 gige QSFP+ ports with the MX-2 Spirent Test Center Layer 2-3 testing. -There are 2 x Cumulus switches with 32 ports of 40 gige QSFP+ ports for a total capacity of 256 ports of 10 gige. We use QSFP+ to SFP+ break out cables to convert a single 40 gige port into 4 x 10 gige ports. -Together these offer a flexible solution to allow up to 8 simultaneous tests to take place with physical traffic generators at the same time. Assuming a 10 to 1 oversubscription ratio we could handle 80 community users with the current environment. +There are 2 x Cumulus switches with 32 ports of 40 gige QSFP+ ports for a total capacity of 256 ports of 10 +gige. We use QSFP+ to SFP+ break out cables to convert a single 40 gige port into 4 x 10 gige ports. +Together these offer a flexible solution to allow up to 8 simultaneous tests to take place with physical +traffic generators at the same time. Assuming a 10 to 1 oversubscription ratio we could handle 80 community +users with the current environment. + For example: * An 80 Gbps test would need 4 port pairs of 10 gige each and require 8 mission networks. @@ -32,10 +37,3 @@ For example: * Stand-alone DUT servers using STCv and AVv traffic generators could easily scale to hundreds of servers as needed. .. image:: iamges/spirent_vptc-public-drawing.png - -**Documentation tracking** - -Revision: _sha1_ - -Build date: _date_ - diff --git a/docs/pharos-spec.rst b/docs/pharos-spec.rst index 0ee06b51..c4d8d7f7 100644 --- a/docs/pharos-spec.rst +++ b/docs/pharos-spec.rst @@ -1,22 +1,22 @@ Pharos Specification ===================== - .. contents:: Table of Contents :backlinks: none - Objectives / Scope ------------------- -The Pharos specification defines the OPNFV hardware environment upon which the OPNFV Arno platform release can be deployed on and tested. This specification defines: +The Pharos specification defines the OPNFV hardware environment upon which the OPNFV Arno +platform release can be deployed on and tested. This specification defines: - A secure, scalable, standard and HA environment - Supports the full Arno deployment lifecycle (this requires a bare metal environment) - Supports functional and performance testing of the Arno release - Provides mechanisms and procedures for secure remote access to the test environment -Deploying Arno in a Virtualized environment is possible and will be useful, however it does not provide a fully featured deployment and test environment for the Arno release of OPNFV. +Deploying Arno in a Virtualized environment is possible and will be useful, however it does not +provide a fully featured deployment and test environment for the Arno release of OPNFV. The high level architecture is outlined in the following diagram: @@ -42,7 +42,9 @@ CPU: Local Storage Configuration: -Below describes the minimum for the Pharos spec, which is designed to provide enough capacity for a reasonably functional environment. Additional and/or faster disks are nice to have and may produce a better result. +Below describes the minimum for the Pharos spec, which is designed to provide enough capacity for a +reasonably functional environment. Additional and/or faster disks are nice to have and may produce +a better result. * Disks: 2 x 1TB + 1 x 100GB SSD * The first 1TB HDD should be used for OS & additional software/tool installation @@ -108,12 +110,14 @@ Provisioning the jump server 12. Begin the installation of the Arno release - Download your preferred ISO from the `OPNFV dowloads page `_ and follow the associated installation instructions. + Download your preferred ISO from the `OPNFV dowloads page `_ + and follow the associated installation instructions. Remote management ------------------ -**Remote access** +Remote access +^^^^^^^^^^^^^ - Remote access is required for … @@ -128,8 +132,8 @@ Remote management - Basic requirement is for SSH sessions to be established (initially on jump server) - Majority of packages installed on a system (tools or applications) will be pulled from an external repo so this scenario must be accomodated. -Firewall rules should include - +Firewall rules should include + - SSH sessions - Jenkins sessions @@ -162,12 +166,15 @@ Linux Foundation - VPN service for accessing Lights-Out Management (LOM) infrast 14. szilard.cserey@ericsson.com 15. trozet@redhat.com -- The people who require VPN access must have a valid PGP key bearing a valid signature from one of these three people. When issuing OpenVPN credentials, LF will be sending TLS certificates and 2-factor authentication tokens, encrypted to each recipient's PGP key. +The people who require VPN access must have a valid PGP key bearing a valid signature from one of +these three people. When issuing OpenVPN credentials, LF will be sending TLS certificates and +2-factor authentication tokens, encrypted to each recipient's PGP key. Networking ----------- Test-bed network +^^^^^^^^^^^^^^^^ * 24 or 48 Port TOR Switch * NICS - 1GE, 10GE - per server can be on-board or PCI-e @@ -175,10 +182,11 @@ Test-bed network * Lights-out network can share with Admin/Management Network Interfaces +^^^^^^^^^^^^^^^^^^ * Option I: 4x1G Control, 2x40G Data, 48 Port Switch - * 1 x 1G for ILMI (Lights out Management ) + * 1 x 1G for ILMI (Lights out Management) * 1 x 1G for Admin/PXE boot * 1 x 1G for control Plane connectivity * 1 x 1G for storage @@ -203,23 +211,20 @@ Documented configuration to include: - May be special NW requirements for performance related projects - Default gateways - Controller node bridge topology overview .. image:: images/bridge1.png - compute node bridge topology overview .. image:: images/bridge2.png - - Architecture ------------- -** Network Diagram ** +Network Diagram +^^^^^^^^^^^^^^^ The Pharos architecture may be described as follow: Figure 1: Standard Deployment Environment @@ -231,19 +236,13 @@ Figure 1: Standard Deployment Environment Sample Network Drawings ----------------------- -Files for documenting lab network layout. These were contributed as Visio VSDX format compressed as a ZIP file. Here is a sample of what the visio looks like. +Files for documenting lab network layout. These were contributed as Visio VSDX format compressed +as a ZIP file. Here is a sample of what the visio looks like. -Download the visio zip file here: `opnfv-example-lab-diagram.vsdx.zip `_ +Download the visio zip file here: +`opnfv-example-lab-diagram.vsdx.zip `_ .. image:: images/opnfv-example-lab-diagram.png - :Authors: Trevor Cooper (Intel) :Version: 1.0 - -**Documentation tracking** - -Revision: _sha1_ - -Build date: _date_ - diff --git a/docs/specification/hardwarespec.rst b/docs/specification/hardwarespec.rst index a861b7dd..b42ecf63 100644 --- a/docs/specification/hardwarespec.rst +++ b/docs/specification/hardwarespec.rst @@ -8,7 +8,7 @@ A pharos compliant OPNFV test-bed provides: - 5 compute / controller nodes (`BGS `_ requires 5 nodes) - A configured network topology allowing for LOM, Admin, Public, Private, and Storage Networks - Remote access as defined by the Jenkins slave configuration guide -http://artifacts.opnfv.org/arno.2015.1.0/docs/opnfv-jenkins-slave-connection.arno.2015.1.0.pdf +http://artifacts.opnfv.org/brahmaputra.1.0/docs/opnfv-jenkins-slave-connection.brahmaputra.1.0.html Hardware requirements --------------------- -- 2.16.6