aboutsummaryrefslogtreecommitdiffstats
path: root/ci/deploy-opnfv-compass-ubuntu.sh
blob: efccf78e46ce6669f47812235f3dcc8e7314e75d (plain)
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
#!/usr/bin/env bash

# /usr/bin/env bash or /bin/bash ? /usr/bin/env bash is more environment-independent
# beware of files which were edited in Windows, and have invisible \r end-of-line characters, causing Linux errors

##############################################################################
# Copyright (c) 2018 Wipro Limited and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

# OPNFV contribution guidelines Wiki page:
# https://wiki.opnfv.org/display/DEV/Contribution+Guidelines

# OPNFV/Auto project:
# https://wiki.opnfv.org/pages/viewpage.action?pageId=12389095


# localization control: force script to use default language for output, and force sorting to be bytewise
# ("C" is from C language, represents "safe" locale everywhere)
# (result: the script will consider only basic ASCII characters and disable UTF-8 multibyte match)
export LANG=C
export LC_ALL=C

#################################################################################
## installation of OpenStack via OPNFV Compass4nfv, on Ubuntu, virtual deployment
#################################################################################
# reference manual: https://docs.opnfv.org/en/latest/submodules/compass4nfv/docs/release/installation/index.html
# page for virtual deployment: https://docs.opnfv.org/en/latest/submodules/compass4nfv/docs/release/installation/vmdeploy.html

echo "*** begin AUTO install: OPNFV Compass4nfv"

# prepare install directory
export INSTALLDIR=/opt/opnfv-compass
mkdir -p $INSTALLDIR
cd $INSTALLDIR

# premptively install latest pip and clear $PATH cache
# with apt-get (see apt-get -h and man apt-get for details)
apt-get -y update
apt-get -y upgrade
apt-get -y install python-pip
pip install --upgrade pip
hash -r
apt-get -y install python3-openstackclient
apt-get -y autoremove

## note: apt is more recent than apt-get (apt was formally introduced with Ubuntu 16.04)
## APT: Advanced Packaging Tool; apt is more high-level, apt-get has more features;
# apt -y update # Refreshes repository index
# apt -y full-upgrade # Upgrades packages with auto-handling of dependencies
# apt -y install python-pip
# pip install --upgrade pip
# hash -r
# apt -y install python3-openstackclient
# apt -y autoremove


# 2 options: (option 1 is preferable)
# 1) remain in master branch, use build.sh (which builds a tar ball), then launch deploy.sh
# 2) download a tar ball and launch deploy.sh in a branch matching the tar ball release (e.g. fraser 6.2)


##############
# OPTION 1: build.sh + deploy.sh in master branch

# retrieve the repository of Compass4nfv code (this creates a compass4nfv subdir in the installation directory), current master branch
echo "*** begin download Compass4nfv repository"
git clone https://gerrit.opnfv.org/gerrit/compass4nfv
cd compass4nfv

# launch build script
echo "*** begin Compass4nfv build:"
./build.sh |& tee log1-Build.txt

# edit in deploy.sh specific to OPTION 1
# set path to ISO file (tar ball), as built by build.sh previously
# absolute path to tar ball file URL (MUST be absolute path)
sed -i '/#export TAR_URL=/a export TAR_URL=file:///opt/opnfv-compass/compass4nfv/work/building/compass.tar.gz' deploy.sh

# END OPTION 1
##############


##############
# OPTION 2: tar ball + deploy.sh in matching releases/branches

# download tarball of a certain release/version
#echo "*** begin download Compass4nfv tar ball"
#wget http://artifacts.opnfv.org/compass4nfv/fraser/opnfv-6.2.tar.gz
# note: list of tar ball (ISO) files from Compass4NFV in https://artifacts.opnfv.org/compass4nfv.html

# retrieve the repository of Compass4nfv code (this creates a compass4nfv subdir in the installation directory), current master branch
#echo "*** begin download Compass4nfv repository"
#git clone https://gerrit.opnfv.org/gerrit/compass4nfv
#cd compass4nfv
# note: list of compass4nfv branch names in https://gerrit.opnfv.org/gerrit/#/admin/projects/compass4nfv,branches
# checkout to branch (or tag) matching the tarball release
#git checkout stable/fraser

# edit in deploy.sh specific to OPTION 2
# set path to ISO file (tar ball), as downloaded previously
# absolute path to tar ball file URL (MUST be absolute path)
# sed -i '/#export TAR_URL=/a export TAR_URL=file:///opt/opnfv-compass/opnfv-6.2.tar.gz' deploy.sh

# END OPTION 2
##############


# edit remaining deploy.sh entries as needed

# set operating system version: Ubuntu Xenial Xerus
sed -i '/#export OS_VERSION=xenial\/centos7/a export OS_VERSION=xenial' deploy.sh

# set path to OPNFV scenario / DHA (Deployment Hardware Adapter) YAML file
# here, os-nosdn-nofeature-noha scenario
sed -i '/#export DHA=/a export DHA=/opt/opnfv-compass/compass4nfv/deploy/conf/vm_environment/os-nosdn-nofeature-noha.yml' deploy.sh

# set path to network YAML file
sed -i '/#export NETWORK=/a export NETWORK=/opt/opnfv-compass/compass4nfv/deploy/conf/vm_environment/network.yml' deploy.sh

# append parameters for virtual machines (for virtual deployments); e.g., 2 nodes for NOHA scenario, 5 for HA, etc.
# note: this may not be needed in a future release of Compass4nfv

# VIRT_NUMBER – the number of nodes for virtual deployment.
# VIRT_CPUS – the number of CPUs allocated per virtual machine.
# VIRT_MEM – the memory size (MB) allocated per virtual machine.
# VIRT_DISK – the disk size allocated per virtual machine.

# if OPTION 1 (master): OPENSTACK_VERSION is queens, so add the VIRT_NUMBER line after the queens match
#sed -i '/export OPENSTACK_VERSION=queens/a export VIRT_DISK=200G' deploy.sh
#sed -i '/export OPENSTACK_VERSION=queens/a export VIRT_MEM=16384' deploy.sh
#sed -i '/export OPENSTACK_VERSION=queens/a export VIRT_CPUS=4' deploy.sh
sed -i '/export OPENSTACK_VERSION=queens/a export VIRT_NUMBER=2' deploy.sh

# if OPTION 2 (stable/fraser): OPENSTACK_VERSION is pike, so add the VIRT_NUMBER line after the pike match
#sed -i '/export OPENSTACK_VERSION=pike/a export VIRT_DISK=200G' deploy.sh
#sed -i '/export OPENSTACK_VERSION=pike/a export VIRT_MEM=16384' deploy.sh
#sed -i '/export OPENSTACK_VERSION=pike/a export VIRT_CPUS=4' deploy.sh
#sed -i '/export OPENSTACK_VERSION=pike/a export VIRT_NUMBER=5' deploy.sh


# launch deploy script
echo "*** begin Compass4nfv deploy:"
./deploy.sh |& tee log2-Deploy.txt




# To access OpenStack Horizon GUI in Virtual deployment
# source: https://wiki.opnfv.org/display/compass4nfv/Containerized+Compass

# confirm IP@ of the current server (jump server, such as 10.10.100.xyz on LaaS: 10.10.100.42 for hpe32, etc.)
external_nic=$(ip route |grep '^default'|awk '{print $5F}')
echo "external_nic: $external_nic"
ip addr show "$external_nic"

# Config IPtables rules: pick an unused port number, e.g. 50000+machine number, 50032 for hpe32 at 10.10.100.42
# 192.16.1.222:443 is the OpenStack Horizon GUI after a Compass installation
# syntax: iptables -t nat -A PREROUTING -d $EX_IP -p tcp --dport $PORT -j DNAT --to 192.16.1.222:443
# (note: this could be automated: retrieve IP@, pick port number)

# example: hpe15
# iptables -t nat -A PREROUTING -d 10.10.100.25 -p tcp --dport 50015 -j DNAT --to 192.16.1.222:443
# example: hpe33
# iptables -t nat -A PREROUTING -d 10.10.100.43 -p tcp --dport 50033 -j DNAT --to 192.16.1.222:443

# display IPtables NAT rules
iptables -t nat -L

# Enter https://$EX_IP:$PORT in you browser to visit the OpenStack Horizon dashboard
# examples: https://10.10.100.25:50015 , https://10.10.100.43:50033
# The default user is "admin"
# to get the Horizon password for "admin":
sudo docker cp compass-tasks:/opt/openrc ./
sudo cat openrc | grep OS_PASSWORD
source ./openrc

# for OpenStack CLI (generic content from openrc)
export OS_ENDPOINT_TYPE=publicURL
export OS_INTERFACE=publicURL
export OS_USERNAME=admin
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_AUTH_URL=https://192.16.1.222:5000/v3
export OS_NO_CACHE=1
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_REGION_NAME=RegionOne

# For openstackclient
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_VERSION=3



echo "*** end AUTO install: OPNFV Compass4nfv"