...
...
...
...
...
...
PLEASE REFER TO R1 NETWORK CLOUD RELEASE DOCUMENTATION
NC Family Documentation - Release 1
THIS DOCUMENTATION WILL BE ARCHIVED
This guide instructs how to build and install an Akraino Edge Stack (AES) Regional Controller node.
...
Table of Contents | ||
---|---|---|
|
Overview
The Regional Controller Node installation includes the 'Build Server' remotely installs the OS and SW packages on a 'Bare Metal' server to create the 'Regional Controller' (i.e. the Bare Metal servers becomes the Regional Controller'). Once the RC is build it is used to subsequently deploy either Rover or Unicycle pods. After the Build Server has completed the creation of the Regional Controller node, the Build Server has no further role in any Network Cloud Rover and Unicycle Pod deployment. The Regional Controller Node installation includes the following components:
Operating System
...
- OpenStack Tempest tests
- YAML builds
- ONAP scripts
- Sample VNFs
NOTE: The Regional Controller can be installed on an existing Ubuntu 16.04 server or virtual machine. See the instructions below labeled: Installation on an Existing Ubuntu Server or Virtual Machine
Info |
---|
This installation guide refers to the following by way of example:
Steps herein presume the use of a root account. All steps are performed from the Build Server. A clean, out-of-the-box Ubuntu environment is strongly recommended before proceeding. |
...
- Any server or VM with Ubuntu Release 16.04
- Packages: Latest versions of sshpass, xorriso, and python-requests
- Docker 1.13.1 or later
Bare Metal Server
- Dell PowerEdge R740 server with no installed OS [ Additional types of hardware will be supported in the future release]
- Two interfaces for primary network connectivity bonding
- 802.1q VLAN tagging for primary network interfaces
System Check
Build Server
Ensure Ubuntu Release 16.04 (specifically) and Docker 1.13.1 (or later) are installed:
Code Block | ||
---|---|---|
| ||
# lsb_release -rs
16.04
# docker --version
Docker version 1.13.1, build 092cba3
|
...
- version of the following apt packages:
- docker (used to run dhcp and web containers)
- python (used for redfish api calls to bare metal server)
- python-requests (used for redfish api calls to bare metal server)
- python-pip (used to install hpe redfish tools)
- sshpass (used to copy keys to new server)
- xorriso (used to extract Ubuntu files to web server)
- make (used to build custom ipxe efi file used during bare metal server boot)
- gcc (used to build custom ipxe efi file used during bare metal server boot)
Bare Metal Server
- Dell PowerEdge R740 Gen 14 server or HP DL380 Gen10 with no installed OS [ Additional types of hardware will be supported in the future release]
- Two interfaces for primary network connectivity bonding
- 802.1q VLAN tagging for primary network interfaces
System Check
Build Server
Ensure Ubuntu Release 16.04 (specifically) and Docker version is 1.13.1 or newer:
Code Block | ||
---|---|---|
| ||
# pythonlsb_release --version # Python 2.7.12 rs 16.04 # apt installdocker --upgradeversion sshpassDocker xorriso python-requests Reading package lists... Done Building dependency tree Reading state information... Done python-requests is already the newest version (2.9.1-3). sshpass is already the newest version (1.05-1). xorriso is already the newest version (1.4.2-4ubuntu1). 0 upgraded, 0 newly installed, 0 to remove and 107 not upgraded |
Network Connectivity
The Build Server must have connectivity to the Bare Metal Server iDRAC interface on ports 80 (http) and 443 (https).
- The Bare Metal Server must be reachable from the Build Server.
- The Build Server and Bare Metal Server primary networks must have one of the following characteristics:
- The networks must be located on the same L2 network, or
- DHCP requests must be forwarded from the Bare Metal Server primary network interface to the Build Server (e.g., via a DHCP relay/helper).
Specific steps to achieve this connectivity are beyond the scope of this guide. However, some verification can be performed.
First, verify that at least ports 80 and 443 are open on the Bare Metal Server iDRAC interface:
Code Block | ||
---|---|---|
| ||
# nmap -sS 192.168.41.44
Starting Nmap 7.01 ( https://nmap.org ) at 2018-07-10 13:55 UTC Nmap scan report for 192.168.41.44 Host is up (0.00085s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https 5900/tcp open vnc Nmap done: 1 IP address (1 host up) scanned in 1.77 seconds |
Next, use nmap
to check for a "clean slate" Bare Metal Server. The results will show the host as being down (due to no OS).
Code Block | ||
---|---|---|
| ||
# nmap -sS 192.168.2.42 version 1.13.1, build 092cba3 |
Ensure required packages are installed including python, python-requests, python-pip, sshpass, xorriso, make, and gcc are installed. Install any missing packages with apt-get install -y <package name>
Code Block | ||
---|---|---|
| ||
# apt list python python-requests python-pip sshpass xorriso make gcc
Listing... Done
gcc/xenial,now 4:5.3.1-1ubuntu1 amd64 [installed]
make/xenial,now 4.1-6 amd64 [installed,automatic]
python/xenial-updates,now 2.7.12-1~16.04 amd64 [installed]
python-pip/xenial-updates,xenial-updates,now 8.1.1-2ubuntu0.4 all [installed]
python-requests/xenial-updates,xenial-updates,now 2.9.1-3ubuntu0.1 all [installed]
sshpass/xenial,now 1.05-1 amd64 [installed] xorriso/xenial,now 1.4.2-4ubuntu1 amd64 [installed]
|
Network Connectivity
The Build Server must have connectivity to the Bare Metal Server iDRAC interface on ports 80 (http) and 443 (https).
- The Bare Metal Server iDRAC/iLO interface and bonded production interfaces must be reachable from the Build Server.
- The Build Server and Bare Metal Server primary networks must have one of the following characteristics:
- The networks must be located on the same L2 network, or
- DHCP requests must be forwarded from the Bare Metal Server primary network interface to the Build Server (e.g., via a DHCP relay/helper).
- The switch configuration for the network bond of the Bare Metal Server primary interfaces must be set to bring up the bond on the first interface prior to lacp completing negotiation.
- For Junos OS this option is typically called force-up and should be set on the first interface in the bond.
- For Arista, this option is typically called lacp fallback.
- Please refer to your network switch documentation to determine the correct configuration.
Here are logical views of two supported topologies as examples:
Specific steps to achieve this connectivity are beyond the scope of this guide. However, some verification can be performed.
First, verify that at least port 443 is open on the Bare Metal Server iDRAC/iLO interface:
Code Block | ||
---|---|---|
| ||
# nmap -sS 192.168.41.44 Starting Nmap 7.01 ( https://nmap.org ) at 2018-07-10 13:55 UTC Nmap Note:scan Hostreport seems down. If it is really up, but blocking our ping probes, try -Pnfor 192.168.41.44 Host is up (0.00085s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https 5900/tcp open vnc Nmap done: 1 IP address (01 hostshost up) scanned in 01.6377 seconds |
Verification of the Build Server and Bare Metal Server primary networks is beyond the scope of this guide.
Installation
Repository Cloning
Repositories are located under /opt/akraino
:
Code Block |
---|
mkdir /opt/akraino |
Clone the Redfish Bootstrapping Script repository for use as part of Akraino tools:
Code Block | ||
---|---|---|
| ||
mkdir -p /opt/akraino/tools
## Download the latest redfish artifacts from LF Nexus
## Run the below commands in sequence
NEXUS_URL=https://nexus.akraino.org
PROJECT=redfish
VERSION=0.0.2-SNAPSHOT
XMLFILE="${NEXUS_URL}/service/local/repositories/snapshots/content/org/akraino/${PROJECT}/${PROJECT}/${VERSION}/maven-metadata.xml"
curl -O "${XMLFILE}"
V2=`grep value maven-metadata.xml | sed -e 's;</value>;;' -e 's;.*<value>;;' | uniq`
TGZFILE="${NEXUS_URL}/service/local/repositories/snapshots/content/org/akraino/${PROJECT}/${PROJECT}/${VERSION}/${PROJECT}-${V2}.tgz"
curl -O "${TGZFILE}"
echo “Latest code from LF Nexus is $V2”
tar -xzvf "${PROJECT}-${V2}.tgz" -C /opt/akraino/tools
|
Clone the Akraino Regional Controller repository:
...
language | bash |
---|
...
Next, use nmap
to check for a "clean slate" Bare Metal Server. The results will show the host as being down (due to no OS).
Code Block | ||
---|---|---|
| ||
# nmap -sS 192.168.2.42
Starting Nmap 7.01 ( https://nmap.org ) at 2018-07-10 13:55 UTC
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 0.63 seconds |
Verification of the Build Server and Bare Metal Server primary networks is beyond the scope of this guide.
Installation on Bare Metal server
Repository Cloning
Repositories are located under /opt/akraino. On the Build Server:
Code Block |
---|
mkdir /opt/akraino |
Clone the Redfish Bootstrapping Script repository for use as part of Akraino tools. On the Build Server:
Code Block | ||
---|---|---|
| ||
## Download the latest redfish artifacts from LF Nexus mkdir -p /opt/akraino/redfish NEXUS_URL=https://nexus.akraino.org curl -L "$NEXUS_URL/service/local/artifact/maven/redirect?r=snapshots&g=org.akraino.redfish&a=redfish&v=0.0.2-SNAPSHOT XMLFILE&e="${NEXUS_URL}/service/local/repositories/snapshots/content/org/akraino/${PROJECT}/${PROJECT}/${VERSION}/maven-metadata.xml" curl -O "${XMLFILE}" V2=`grep value maven-metadata.xml | sed -e 's;</value>;;' -e 's;.*<value>;;' | uniq` TGZFILE="${NEXUS_URL}/service/local/repositories/snapshots/content/org/akraino/${PROJECT}/${PROJECT}/${VERSION}/${PROJECT}-${V2}.tgz" curl -O "${TGZFILE}" echo “Latest code from LF Nexus is $V2” tar -xzvf "${PROJECT}-${V2}.tgz" -C /opt/tgz" | tar -xozv -C /opt/akraino/redfish |
Clone the Akraino Regional Controller repository. On the Build Server::
Code Block | ||
---|---|---|
| ||
## Download the latest Regional_controller artifacts from LF Nexus ##
mkdir -p /opt/akraino/region
NEXUS_URL=https://nexus.akraino.org
curl -L "$NEXUS_URL/service/local/artifact/maven/redirect?r=snapshots&g=org.akraino.regional_controller&a=regional_controller&v=0.0.2-SNAPSHOT&e=tgz" | tar -xozv -C /opt/akraino/region
|
Configuration
Copy the Bare Metal Server configuration template into /opt/akraino/server-config/AKRAINO_NODE_RC
, where AKRAINO_NODE_RC
is the Bare Metal Server name followed by rc. On the Build Server:
Code Block | ||
---|---|---|
| ||
mkdir -p /opt/akraino/server-config cp /opt/akraino/toolsredfish/serverrc.template /opt/akraino/server-config/aknode44rc vi /opt/akraino/server-config/aknode44rc |
A sample configuration file followsfor the Regional Controller follows. Ensure the following:
SRV_NAME
is the Bare Metal Server nameSRV_OOB_IP
is the Bare Metal Server iDRAC IPor iLO IPSRV_IP
is the Bare Metal Server IP- Update Ubuntu version to 16.04.5 by setting SRV_BLD_SCRIPT=script-hwe-16.04.5-amd64.ipxe
- Remove all references to
BUILD_WEBIP
andBUILD_WEBPORT
- Passwords are chosen for
SRV_OOB_PWD
andSRV_PWD
- All remaining
SRV_
Passwords are chosen forSRV_OOB_PWD
andSRV_PWD
- All remaining
SRV_
prefixed options are adjusted as deemed appropriate for the Bare Metal server and network
Code Block | ||
---|---|---|
| ||
# host name for server SRV_NAME=aknode44 # server oem - Dell or HPE (case sensitive) SRV_OEM=Dell # out of band interface information for server (idrac/ilo/etc) SRV_OOB_IP=192.168.41.44 SRV_OOB_USR=root SRV_OOB_PWD=ROOT_PASSWORD # mac address of server to be used during the build - not required for Dell servers # SRV_MAC=3c:fd:fe:b8:10:60 # namethe ofboot networkdevice interfaceis usedthe duringdevice buildname whenon ipxe.efiwhich isthe bootedOS andwill whenbe os is bootedloaded SRV_BOOT_DEVICE=sdg # ipxe numbersscript portsto fromuse 0-n inbased pcion busthe order.os #version theand netxkernel valueto willinstall depend# onvalid howoptions many nics are in the server # and which pci device number is assigned to the slot SRV_IPXE_INF=net8 # the build interface is the nic used by the Ubuntu installed to load the OS SRV_BLD_INF=enp135s0f0 # the boot device is the device name on which the OS will be loaded SRV_BOOT_DEVICE=sdg # ipxe script to use - based on the os version and kernel to install # valid options are script-hwe-16.04.5-amd64.ipxe or script-16.04.5-amd64.ipxe SRV_BLD_SCRIPT=script-hwe-16.04.5-amd64.ipxe # template xml file to set bios and raid configuration settings SRV_BIOS_TEMPLATE=dell_r740_g14_uefi_base.xml.template SRV_BOOT_TEMPLATE=dell_r740_g14_uefi_httpboot.xml.template SRV_HTTP_BOOT_DEV=NIC.Slot.7-1-1 # VLAN to use during build and for final network configuration SRV_VLAN=41 # basic network information for dhcp config and final server network settings SRV_MTU=9000 SRV_IP=192.168.2.44 SRV_SUBNET=192.168.2.0 SRV_NETMASK=255.255.255.0 SRV_GATEWAY=192.168.2.200 SRV_DNS=192.168.2.85 SRV_DOMAIN=lab.akraino.org SRV_DNSSEARCH=lab.akraino.org SRV_NTP=ntp.ubuntu.org # root password for server being built SRV_PWD=SERVER_PASSWORD # network bond information SRV_BOND=bond0 SRV_SLAVE1=enp135s0f0 SRV_SLAVE2=enp135s0f1 |
Operating System
Pre-requisites:
Install docker using following link (typically docker-ce latest version)
https://docs.docker.com/install/linux/docker-ce/ubuntu/
If behind proxy and docker to use proxy
Code Block |
---|
mkdir /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-proxy.conf
echo '[Service]
Environment="HTTP_PROXY=<proxy>"
Environment="HTTPS_PROXY=<proxy>"' > /etc/systemd/system/docker.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart docker
docker info |
Install the following packages:
Code Block |
---|
apt install -y make gcc |
Begin the OS installation:
Code Block | |
---|---|
language | are script-hwe-16.04.5-amd64.ipxe or script-16.04.5-amd64.ipxe
SRV_BLD_SCRIPT=script-hwe-16.04.5-amd64.ipxe
# template xml file to set bios and raid configuration settings
SRV_BIOS_TEMPLATE=dell_r740_g14_uefi_base.xml.template
SRV_BOOT_TEMPLATE=dell_r740_g14_uefi_httpboot.xml.template
SRV_HTTP_BOOT_DEV=NIC.Slot.7-1-1
# VLAN to use during build and for final network configuration
SRV_VLAN=41
# basic network information for dhcp config and final server network settings
SRV_MTU=9000
SRV_IP=192.168.2.44 #Note: This address is the same as the 'TARGET_SERVER_IP' defined below and in the akrainorc file#
SRV_SUBNET=192.168.2.0
SRV_NETMASK=255.255.255.0
SRV_GATEWAY=192.168.2.200
SRV_DNS=192.168.2.85
SRV_DOMAIN=lab.akraino.org
SRV_DNSSEARCH=lab.akraino.org
SRV_NTP=ntp.ubuntu.org
# root password for server being built
SRV_PWD=SERVER_PASSWORD
# network bond information
SRV_BOND=bond0
SRV_SLAVE1=enp135s0f0
SRV_SLAVE2=enp135s0f1 |
Operating System
Begin the Regional Controller OS installation from the Build Server. You must be root on the Build Server to fully install:
Code Block | ||
---|---|---|
| ||
/opt/akraino/redfish/install_server_os.sh --rc /opt/akraino/server-config/aknode44rc --skip-confirm |
This will take time. This is an excellent time to enjoy a favorite beverage.
Warning | ||
---|---|---|
| ||
The Operating System installation may produce errors. As of this writing, the following errors may be safely ignored:
|
A successful installation will start and end as follows:
Code Block | ||
---|---|---|
| ||
/opt/akraino/tools/install_server_os.sh --rc /opt/akraino/server-config/aknode44rc --skip-confirm |
This will take time. This is an excellent time to enjoy a favorite beverage.
Warning | ||
---|---|---|
| ||
The Operating System installation may produce errors. As of this writing, the following errors may be safely ignored:
|
A successful installation will start and end as follows:
Code Block | ||
---|---|---|
| ||
/opt/akraino/tools/install_server_os.sh --rc /opt/akraino/server-config/aknode44rc --skip-confirm
Beginning /opt/akraino/tools/install_server_os.sh as user [root] in pwd [/opt/akraino/server-config] with home [/root] Tools are ready in [/opt/akraino] WARNING: Preparing to build server [aknode44] using oob ip [192.168.41.44]. Beginning in 10 seconds .......... Beginning bare metal install of os at Mon Jul 2 18:57:32 UTC 2018 ... Processing triggers for libc-bin (2.23-0ubuntu10) ... SUCCESS: Completed bare metal install of regional server [aknode44] at Mon Jul 2 20:09:35 UTC 2018 SUCCESS: Try connecting with 'ssh root@192.168.2.42' as user root Elapsed time was 9 minutes and 22 seconds |
Note that any time estimates (e.g., "This step could take up to 15 minutes") and elapsed times are likely inaccurate. The total install time is longer, on the order of hours. Enjoy that beverage.
Regional Controller
Update the Akraino run command (rc) file in /opt/akraino/region
:
Code Block | ||
---|---|---|
| ||
vim /opt/akraino/region/akrainorc |
Set TARGET_SERVER_IP
to the Bare Metal Server IP. This is the IP address of the Regional Controller. All other values may be left as-is.
Code Block | ||
---|---|---|
| ||
export TARGET_SERVER_IP=192.168.2.44 |
Begin the region server software installation:
Code Block | ||
---|---|---|
| ||
/opt/akraino/region/install_akraino_portal.sh |
This will take time. This is an excellent time to enjoy another favorite beverage.
Warning | ||
---|---|---|
| ||
The Regional Controller installation is not idempotent at this time. If errors are encountered during this phase, it is recommended that the errors be triaged and resolved, followed by an Operating System re-installation. This will ensure a "clean slate" Bare Metal Server before trying again. |
A successful installation will end as follows. Note that any time estimates (e.g., "This step could take up to 15 minutes") and elapsed times are likely inaccurate.
Code Block | ||
---|---|---|
| ||
...
Setting up tempest repository
Setting up yaml builds repository
Setting up ONAP repository
Setting up sample vnf repository
Setting up airshipinabottle repository
SUCCESS: Portal install completed |
The Regional Controller Node installation is now complete.
## Prerequisites on regional controller node ##
- Login to regional controller node: ssh root@regional_node_ip
- Clone airship-treasuremap under /root:
git clone https://git.openstack.org/openstack/airship-treasuremap.git
cd /root/airship-treasuremap
git checkout 059857148ad142730b5a69374e44a988cac92378
git checkout -b stable
3. Install required components on regional controller node
apt-get install python-pip
python -m pip install --upgrade pip setuptools wheel
pip install --user jinja2 PyYAML
4. mkdir -p /var/log/yaml_builds
5. mkdir –p /opt/akraino/tools
...
Beginning /opt/akraino/tools/install_server_os.sh as user [root] in pwd [/opt/akraino/server-config] with home [/root] Tools are ready in [/opt/akraino] WARNING: Preparing to build server [aknode44] using oob ip [192.168.41.44]. Beginning in 10 seconds .......... Beginning bare metal install of os at Mon Jul 2 18:57:32 UTC 2018 ... Processing triggers for libc-bin (2.23-0ubuntu10) ... SUCCESS: Completed bare metal install of regional server [aknode44] at Mon Jul 2 20:09:35 UTC 2018 SUCCESS: Try connecting with 'ssh root@192.168.2.42' as user root Elapsed time was 9 minutes and 22 seconds |
Note that any time estimates (e.g., "This step could take up to 15 minutes") and elapsed times are likely inaccurate. The total install time is longer, on the order of hours. Enjoy that beverage.
Regional Controller
On the Build Server, update the Akraino run command (rc) file in /opt/akraino/region
:
Code Block | ||
---|---|---|
| ||
vim /opt/akraino/region/akrainorc |
Set TARGET_SERVER_IP
to the Bare Metal Server IP. This is the IP address of the Regional Controller. All other values may be left as-is.
Code Block | ||
---|---|---|
| ||
export TARGET_SERVER_IP=192.168.2.44 |
On the Build Server, begin the Regional Controller's software installation:
Code Block | ||
---|---|---|
| ||
/opt/akraino/region/install_akraino_portal.sh |
This will take time. This is an excellent time to enjoy another favorite beverage.
Warning | ||
---|---|---|
| ||
The Regional Controller installation is not idempotent at this time. If errors are encountered during this phase, it is recommended that the errors be triaged and resolved, followed by an Operating System re-installation. This will ensure a "clean slate" Bare Metal Server before trying again. |
A successful installation will end as follows. Note that any time estimates (e.g., "This step could take up to 15 minutes") and elapsed times are likely inaccurate.
Code Block | ||
---|---|---|
| ||
...
Setting up tempest content/repositories
Setting up ONAP content/repositories
Setting up sample vnf content/repositories
Setting up airshipinabottle content/repositories
Setting up redfish tools content/repositories
SUCCESS: Portal can be accessed at http://192.168.2.44:8080/AECPortalMgmt/
SUCCESS: Portal install completed |
The Regional Controller Node installation is now complete.
Please note: It will be necessary to generate rsa keys on the RC which must be copied and inserted into the 'genesis_ssh_public_key' attribute in site input yaml file used when subsequently deploying each Unicycle pod at any edge site controlled by the newly built RC.
Installation on an Existing Ubuntu Server or Virtual Machine
Repository Cloning
Manually install Ubuntu 16.04 on a physical server or virtual machine in your environment that will be used as the Regional Controller. On the server or virtual machine that you just installed, clone the Akraino Regional Controller repository:
Code Block | ||
---|---|---|
| ||
## Download the latest Regional_controller artifacts from LF Nexus ##
mkdir -p /opt/akraino/region
NEXUS_URL=https://nexus.akraino.org
curl -L "$NEXUS_URL/service/local/artifact/maven/redirect?r=snapshots&g=org.akraino.regional_controller&a=regional_controller&v=0.0.2-SNAPSHOT&e=tgz" | tar -xozv -C /opt/akraino/region
|
Regional Controller Installation
Change to the /opt/akraino/region directory and run the start_regional_controller.sh script:
Code Block | ||
---|---|---|
| ||
cd /opt/akraino/region/
./start_akraino_portal.sh |
The install should take 15 to 45 minutes depending on the speed of the internet connection. A successful installation will end as follows.
Code Block | ||
---|---|---|
| ||
...
Setting up tempest content/repositories
Setting up ONAP content/repositories
Setting up sample vnf content/repositories
Setting up airshipinabottle content/repositories
Setting up redfish tools content/repositories
SUCCESS: Portal can be accessed at http://192.168.2.44:8080/AECPortalMgmt/
SUCCESS: Portal install completed |
The Regional Controller installation is now complete.
Akraino Portal Operations
...