| .. This work is licensed under a Creative Commons Attribution 4.0 International License. |
| .. http://creativecommons.org/licenses/by/4.0 |
| |
| Introduction |
| ============ |
| The purpose of this document is to explain how to build an ONAP SDNC Instance on vanilla Openstack deployment. |
| The document begins with creation of a network, and a VM. |
| Then, the document explains how to run the installation scripts on the VM. |
| Finally, the document shows how to check that the SDNC installation was completed successfully. |
| This document and logs were created on 22 November, 2018. |
| |
| Infrastructure setup on OpenStack |
| --------------------------------- |
| Create the network, we call it “ONAP-net”: |
| |
| :: |
| |
| cloud@olc-ubuntu2:~$ neutron net-create onap-net |
| neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. |
| Created a new network: |
| +-----------------+--------------------------------------+ |
| | Field | Value | |
| +-----------------+--------------------------------------+ |
| | admin_state_up | True | |
| | id | 662650f0-d178-4745-b4fe-dd2cb735160c | |
| | name | onap-net | |
| | router:external | False | |
| | shared | False | |
| | status | ACTIVE | |
| | subnets | | |
| | tenant_id | 324b90de6e9a4ad88e93a100c2cedd5d | |
| +-----------------+--------------------------------------+ |
| cloud@olc-ubuntu2:~$ |
| |
| Create the subnet, “ONAP-subnet”: |
| |
| :: |
| |
| cloud@olc-ubuntu2:~$ neutron subnet-create --name onap-subnet onap-net 10.0.0.0/16 |
| neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. |
| Created a new subnet: |
| +-------------------+----------------------------------------------+ |
| | Field | Value | |
| +-------------------+----------------------------------------------+ |
| | allocation_pools | {"start": "10.0.0.2", "end": "10.0.255.254"} | |
| | cidr | 10.0.0.0/16 | |
| | dns_nameservers | | |
| | enable_dhcp | True | |
| | gateway_ip | 10.0.0.1 | |
| | host_routes | | |
| | id | 574df42f-15e9-4761-a4c5-e48d64f04b99 | |
| | ip_version | 4 | |
| | ipv6_address_mode | | |
| | ipv6_ra_mode | | |
| | name | onap-subnet | |
| | network_id | 662650f0-d178-4745-b4fe-dd2cb735160c | |
| | tenant_id | 324b90de6e9a4ad88e93a100c2cedd5d | |
| +-------------------+----------------------------------------------+ |
| cloud@olc-ubuntu2:~$ |
| |
| Boot an Ubuntu 14.04 instance, using the correct flavor name according to your Openstack : |
| |
| :: |
| |
| cloud@olc-ubuntu2:~$ nova boot --flavor n2.cw.standard-4 --image "Ubuntu 14.04" --key-name olc- |
| key2 --nic net-name=onap-net,v4-fixed-ip=10.0.7.1 vm1-sdnc |
| +--------------------------------------+-----------------------------------------------------+ |
| | Property | Value | |
| +--------------------------------------+-----------------------------------------------------+ |
| | OS-DCF:diskConfig | MANUAL | |
| | OS-EXT-AZ:availability_zone | | |
| | OS-EXT-STS:power_state | 0 | |
| | OS-EXT-STS:task_state | scheduling | |
| | OS-EXT-STS:vm_state | building | |
| | OS-SRV-USG:launched_at | - | |
| | OS-SRV-USG:terminated_at | - | |
| | accessIPv4 | | |
| | accessIPv6 | | |
| | config_drive | | |
| | created | 2017-11-14T15:48:37Z | |
| | flavor | n2.cw.standard-4 (44) | |
| | hostId | | |
| | id | 596e2b1f-ff09-4c8e-b3e8-fc06566306cf | |
| | image | Ubuntu 14.04 (ac9d6735-7c2b-4ff1-90e9-b45225fd80a9) | |
| | key_name | olc-key2 | |
| | metadata | {} | |
| | name | vm1-sdnc | |
| | os-extended-volumes:volumes_attached | [] | |
| | progress | 0 | |
| | security_groups | default | |
| | status | BUILD | |
| | tenant_id | 324b90de6e9a4ad88e93a100c2cedd5d | |
| | updated | 2017-11-14T15:48:38Z | |
| | user_id | 24c673ecc97f4b42887a195654d6a0b9 | |
| +--------------------------------------+-----------------------------------------------------+ |
| cloud@olc-ubuntu2:~$ |
| |
| Create a floating IP and associate to the SDNC VM so that it can access internet to download needed files: |
| |
| :: |
| |
| cloud@olc-ubuntu2:~$ neutron floatingip-create public |
| neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. |
| Created a new floatingip: |
| +---------------------+--------------------------------------+ |
| | Field | Value | |
| +---------------------+--------------------------------------+ |
| | fixed_ip_address | | |
| | floating_ip_address | 84.39.47.153 | |
| | floating_network_id | b5dd7532-1533-4b9c-8bf9-e66631a9be1d | |
| | id | eac0124f-9c92-47e5-a694-53355c06c6b2 | |
| | port_id | | |
| | router_id | | |
| | status | ACTIVE | |
| | tenant_id | 324b90de6e9a4ad88e93a100c2cedd5d | |
| +---------------------+--------------------------------------+ |
| cloud@olc-ubuntu2:~$ |
| cloud@olc-ubuntu2:~$ neutron port-list |
| neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. |
| +--------------------------------------+--------------------------------------+-------------------+-------------------------------------------------------------------------------------+ |
| | id | name | mac_address | fixed_ips | |
| +--------------------------------------+--------------------------------------+-------------------+-------------------------------------------------------------------------------------+ |
| | 5d8e8f30-a13a-417d-b5b4-f4038224364b | 5d8e8f30-a13a-417d-b5b4-f4038224364b | 02:5d:8e:8f:30:a1 | {"subnet_id": "574df42f-15e9-4761-a4c5-e48d64f04b99", "ip_address": "10.0.7.1"} | |
| +--------------------------------------+--------------------------------------+-------------------+-------------------------------------------------------------------------------------+ |
| cloud@olc-ubuntu2:~$ |
| cloud@olc-ubuntu2:~$ neutron floatingip-associate eac0124f-9c92-47e5-a694-53355c06c6b25d8e8f30-a13a-417d-b5b4-f4038224364b |
| neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. |
| Associated floating IP eac0124f-9c92-47e5-a694-53355c06c6b2 |
| cloud@olc-ubuntu2:~$ |
| |
| Add the security group to the VM in order to open needed ports for SDNC like port 22, 3000, 8282 etc ...: |
| |
| :: |
| |
| cloud@olc-ubuntu2:~$ nova add-secgroup vm1-sdnc olc-onap |
| cloud@olc-ubuntu2:~$ |
| |
| Installing SDNC |
| --------------- |
| |
| Connect to the new VM and change to user "root", and run the following commands to start the installation: |
| |
| :: |
| |
| # Login as root |
| sudo -i |
| # Clone Casablanca branch for demo Repo |
| root@sdnc-test:~# git clone https://gerrit.onap.org/r/demo -b casablanca |
| Cloning into 'demo'... |
| remote: Counting objects: 10, done |
| remote: Finding sources: 100% (10/10) |
| remote: Total 9562 (delta 0), reused 9562 (delta 0) |
| Receiving objects: 100% (9562/9562), 43.00 MiB | 13.84 MiB/s, done. |
| Resolving deltas: 100% (5922/5922), done. |
| Checking connectivity... done. |
| root@sdnc-test:~# |
| |
| Use below commands to update installation environment |
| |
| :: |
| |
| # Create Configuration directory |
| mkdir -p /opt/config |
| # Update configuration folder with variables used during the installation |
| awk '$1 == "artifacts_version:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/artifacts_version.txt |
| awk '$1 == "sdnc_repo:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/remote_repo.txt |
| awk '$1 == "sdnc_branch:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/gerrit_branch.txt |
| echo "no_proxy" > /opt/config/http_proxy.txt |
| echo "no_proxy" > /opt/config/https_proxy.txt |
| echo "https://nexus.onap.org" > /opt/config/nexus_artifact_repo.txt |
| echo "8.8.8.8" > /opt/config/external_dns.txt |
| awk '$1 == "dns_ip_addr:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/dns_ip_addr.txt |
| awk '$1 == "nexus_username:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/nexus_username.txt |
| awk '$1 == "nexus_password:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/nexus_password.txt |
| awk '$1 == "nexus_docker_repo:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/nexus_docker_repo.txt |
| awk '$1 == "sdnc_docker:" {gsub("\"","",$2);print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/docker_version.txt |
| awk '$1 == "dgbuilder_docker:" {gsub("\"","",$2);print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/dgbuilder_version.txt |
| # Add host name to /etc/host to avoid warnings in openstack images |
| echo 127.0.0.1 $(hostname) >> /etc/hosts |
| # Install additional components |
| apt update |
| apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual apt-transport-https ca-certificates wget git ntp ntpdate make jq unzip |
| # Enable autorestart when VM reboots |
| chmod +x /root/demo/heat/ONAP/cloud-config/serv.sh |
| cp /root/demo/heat/ONAP/cloud-config/serv.sh /etc/init.d |
| update-rc.d serv.sh defaults |
| |
| Install docker engine |
| |
| :: |
| |
| echo "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main" | tee /etc/apt/sources.list.d/docker.list |
| apt-get update |
| apt-get install -y --allow-unauthenticated docker-engine |
| |
| Install docker-compose & complete docker configuration |
| |
| :: |
| |
| root@sdnc-test:~# mkdir -p /opt/docker |
| root@sdnc-test:~# curl -L "https://github.com/docker/compose/releases/download/1.16.1/docker-compose-$(uname -s)-$(uname -m)" > /opt/docker/docker-compose |
| % Total % Received % Xferd Average Speed Time Time Time Current |
| Dload Upload Total Spent Left Speed |
| 100 8648k 100 8648k 0 0 3925k 0 0:00:02 0:00:02 --:--:-- 10.3M |
| root@sdnc-test:~# chmod +x /opt/docker/docker-compose |
| # Set the MTU size of docker containers to the minimum MTU size supported by vNICs |
| root@sdnc-test:~# MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1) |
| root@sdnc-test:~# echo "DOCKER_OPTS=\"$DNS_FLAG--mtu=$MTU\"" >> /etc/default/docker |
| root@sdnc-test:~# cp /lib/systemd/system/docker.service /etc/systemd/system |
| root@sdnc-test:~# sed -i "/ExecStart/s/$/ --mtu=$MTU/g" /etc/systemd/system/docker.service |
| root@sdnc-test:~# systemctl daemon-reload |
| root@sdnc-test:~# service docker restart |
| # DNS IP address configuration |
| root@sdnc-test:~# echo "nameserver $(cat /opt/config/external_dns.txt)" >> /etc/resolvconf/resolv.conf.d/head |
| root@sdnc-test:~# resolvconf -u |
| |
| Copy & run installation scripts |
| |
| :: |
| |
| # Copy installation scripts to opt directory |
| root@sdnc-test:~# cp /root/demo/heat/ONAP/cloud-config/sdnc_install.sh /opt/sdnc_install.sh |
| root@sdnc-test:~# cp /root/demo/heat/ONAP/cloud-config/sdnc_vm_init.sh /opt/sdnc_vm_init.sh |
| # Run installation script |
| root@sdnc-test:~# cd /opt |
| root@sdnc-test:~# chmod +x sdnc_install.sh |
| root@sdnc-test:~# chmod +x sdnc_vm_init.sh |
| root@sdnc-test:~# ./sdnc_install.sh |
| Cloning into 'sdnc'... |
| remote: Finding sources: 100% (8962/8962) |
| remote: Total 8962 (delta 3999), reused 8956 (delta 3999) |
| Receiving objects: 100% (8962/8962), 702.76 MiB | 19.20 MiB/s, done. |
| Resolving deltas: 100% (3999/3999), done. |
| Checking connectivity... done. |
| Already up-to-date. |
| Login Succeeded |
| 1.4-STAGING-latest: Pulling from onap/sdnc-image |
| 18d680d61657: Pull complete |
| … output truncated … |
| |
| The following install logs shows the containers are coming up, meaning a successful deployment of the SDNC: |
| |
| :: |
| |
| ... truncated output ... |
| d3565df0a804: Pull complete |
| Digest: sha256:0ba03586c705ca8f79030586a579001c4fab3d6fa8c388b6c1c37c695645b78e |
| Status: Downloaded newer image for mysql/mysql-server:5.6 |
| Creating sdnc_db_container ... |
| Creating sdnc_db_container ... done |
| Creating sdnc_ansible_container ... |
| Creating sdnc_ansible_container ... done |
| Creating sdnc_controller_container ... |
| Creating sdnc_controller_container ... done |
| Creating sdnc_ueblistener_container ... |
| Creating sdnc_portal_container ... |
| Creating sdnc_dgbuilder_container ... |
| Creating sdnc_dmaaplistener_container ... |
| Creating sdnc_ueblistener_container |
| Creating sdnc_portal_container |
| Creating sdnc_dmaaplistener_container |
| Creating sdnc_dgbuilder_container ... done |
| |
| Check that the containers are up and running: |
| |
| :: |
| |
| root@sdnc-test:/opt# docker container list |
| CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
| 9de71aea163a onap/ccsdk-dgbuilder-image:latest "/bin/bash -c 'cd ..." 11 minutes ago Up 11 minutes 0.0.0.0:3000->3100/tcp sdnc_dgbuilder_container |
| adffc0e70758 onap/sdnc-dmaap-listener-image:latest "/opt/onap/sdnc/dm..." 11 minutes ago Up 11 minutes sdnc_dmaaplistener_container |
| 53bfa2e31c44 onap/admportal-sdnc-image:latest "/bin/bash -c 'cd ..." 11 minutes ago Up 11 minutes 0.0.0.0:8843->8843/tcp sdnc_portal_container |
| 2fd18ceb09de onap/sdnc-image:latest "/opt/onap/sdnc/bi..." 11 minutes ago Up 11 minutes 0.0.0.0:8282->8181/tcp sdnc_controller_container |
| 3ddb85174acb onap/sdnc-ansible-server-image:latest "/opt/onap/ccsdk/s..." 11 minutes ago Up 11 minutes 0.0.0.0:32769->8000/tcp sdnc_ansible_container |
| 4a11c393ffa3 mysql/mysql-server:5.6 "/entrypoint.sh my..." 11 minutes ago Up 11 minutes (healthy) 0.0.0.0:32768->3306/tcp sdnc_db_container |
| root@sdnc-test:/opt# |
| |
| Login into APIDOC Explorer and check that you can see Swagger UI interface with all the APIs: |
| |
| :: |
| |
| APIDOC Explorer URL: http://{SDNC-IP}:8282/apidoc/explorer/index.html |
| Username: admin |
| Password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U |
| |
| Login into DG Builder and check that you can see the GUI: |
| |
| :: |
| |
| DG Builder URL: http://dguser:test123@{SDNC-IP}:3000 |