1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
|
.. 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
|