aboutsummaryrefslogtreecommitdiffstats
path: root/ci/deploy-opnfv-apex-centos.sh
blob: a3a043362ae79f90b37353d471a4a5a0d7d7e6f1 (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
202
203
204
205
206
207
208
209
#!/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 Apex/TripleO, on CentOS, virtual deployment
##################################################################################
# reference manual: https://docs.opnfv.org/en/latest/submodules/apex/docs/release/installation/index.html
# page for virtual deployment: https://docs.opnfv.org/en/latest/submodules/apex/docs/release/installation/virtual.html

echo "*** begin AUTO install: OPNFV Apex/TripleO"

# check OS version
echo "*** print OS version (must be CentOS, version 7 or more)"
cat /etc/*release

# Manage Nested Virtualization
echo "*** ensure Nested Virtualization is enabled on Intel x86"
echo "***   nested flag before:"
cat /sys/module/kvm_intel/parameters/nested
rm -f /etc/modprobe.d/kvm-nested.conf
{ printf "options kvm-intel nested=1\n";\
  printf "options kvm-intel enable_shadow_vmcs=1\n";\
  printf "options kvm-intel enable_apicv=1\n";\
  printf "options kvm-intel ept=1\n"; } >> /etc/modprobe.d/kvm-nested.conf
sudo modprobe -r kvm_intel
sudo modprobe -a kvm_intel
echo "***   nested flag after:"
cat /sys/module/kvm_intel/parameters/nested

echo "*** verify status of modules in the Linux Kernel: kvm_intel module should be loaded for x86_64 machines"
lsmod | grep kvm_
grep kvm_ < /proc/modules

# 3 additional pre-installation preparations, lifted from OPNFV/storperf (they are post-installation there):
# https://wiki.opnfv.org/display/storperf/LaaS+Setup+For+Development#LaaSSetupForDevelopment-InstallOPNFVApex
# (may of may not be needed, to enable first-time Apex installation on blank server)

# 1) Install Docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl start docker

# 2) Install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 3) Install Python
sudo yum install -y python-virtualenv
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel


# update everything (upgrade: riskier than update, as packages supposed to be unused will be deleted)
# (note: can take several minutes; may not be necessary)
sudo yum -y update


# download Apex packages
echo "*** downloading packages:"
sudo yum -y install https://repos.fedorapeople.org/repos/openstack/openstack-pike/rdo-release-pike-1.noarch.rpm
sudo yum -y install epel-release
# note: EPEL = Extra Packages for Enterprise Linux
sudo curl -o /etc/yum.repos.d/opnfv-apex.repo http://artifacts.opnfv.org/apex/fraser/opnfv-apex.repo

# install three required RPMs (RedHat/RPM Package Managers); this takes several minutes
sudo yum -y install http://artifacts.opnfv.org/apex/fraser/opnfv-apex-6.2.noarch.rpm http://artifacts.opnfv.org/apex/fraser/opnfv-apex-undercloud-6.2.noarch.rpm http://artifacts.opnfv.org/apex/fraser/opnfv-apex-python34-6.2.noarch.rpm

# clean-up old Apex versions if any
## precautionary opnfv-clean doesn't work... (even though packages are installed at this point)
opnfv-clean

# Manage DNS references
# probably not needed on an already configured server: already has DNS references
# echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "*** printout of /etc/resolv.conf :"
cat /etc/resolv.conf

# prepare installation directory
mkdir -p /opt/opnfv-TripleO-apex
cd /opt/opnfv-TripleO-apex

# make sure cp is not aliased or a function; same for mv and rm
unalias cp
unset -f cp
unalias mv
unset -f mv
unalias rm
unset -f rm

# 2 YAML files from /etc/opnfv-apex/ are needed for virtual deploys:
# 1) network_settings.yaml : may need to update NIC names, to match the NIC names on the deployment server
# 2) standard scenario file (os-nosdn-nofeature-noha.yaml, etc.), or customized deploy_settings.yaml

# make a local copy of YAML files (not necessary: could deploy from /etc/opnfv-apex); local copies are just for clarity
# 1) network settings
cp /etc/opnfv-apex/network_settings.yaml .
# 2) deploy settings
# copy one of the 40+ pre-defined scenarios (one of the YAML files)
# for extra customization, git clone Apex repo, and copy and customize the generic deploy_settings.yaml
# git clone https://git.opnfv.org/apex
# cp ./apex/config/deploy/deploy_settings.yaml .
cp /etc/opnfv-apex/os-nosdn-nofeature-noha.yaml ./deploy_settings.yaml
# cp /etc/opnfv-apex/os-nosdn-nofeature-ha.yaml ./deploy_settings.yaml

# Note: content of os-nosdn-nofeature-noha.yaml
# ---
# global_params:
#   ha_enabled: false
#
# deploy_options:
#   sdn_controller: false
#   tacker: true
#  congress: true
#   sfc: false
#   vpn: false


# modify NIC names in network settings YAML file, specific to your environment (e.g. replace em1 with ens4f0 in LaaS)
# Note: actually, this should not matter for a virtual environment
sed -i 's/em1/ens4f0/' network_settings.yaml

# launch deploy (works if openvswitch module is installed, which may not be the case the first time around)
echo "*** deploying OPNFV by TripleO/Apex:"
# --debug for detailed debug info
# -v: Enable virtual deployment
# note: needs at least 10G RAM for controllers
sudo opnfv-deploy --debug -v -n network_settings.yaml -d deploy_settings.yaml
# without --debug:
# sudo opnfv-deploy -v -n network_settings.yaml -d deploy_settings.yaml

# with specific sizing:
# sudo opnfv-deploy --debug -v -n network_settings.yaml -d deploy_settings.yaml --virtual-compute-ram 32 --virtual-cpus 16 --virtual-computes 4


# verify that the openvswitch module is listed:
lsmod | grep openvswitch
grep openvswitch < /proc/modules

##{
## workaround: do 2 successive installations... not exactly optimal...
## clean up, as now opnfv-clean should work
#opnfv-clean
## second deploy try, should succeed (whether first one failed or succeeded)
#sudo opnfv-deploy -v -n network_settings.yaml -d deploy_settings.yaml
##}



# verifications: https://docs.opnfv.org/en/latest/submodules/apex/docs/release/installation/verification.html

# {
# if error after deploy.sh: "libvirt.libvirtError: Storage pool not found: no storage pool with matching name 'default'"

# This usually happens if for some reason you are missing a default pool in libvirt:
# $ virsh pool-list |grep default
# You can recreate it manually:
# $ virsh pool-define-as default dir --target /var/lib/libvirt/images/
# $ virsh pool-autostart default
# $ virsh pool-start default
# }

# {
# if error after deploy.sh: iptc.ip4tc.IPTCError
# check Apex jira ticket #521 https://jira.opnfv.org/browse/APEX-521
# }

# OpenvSwitch should not be missing, as it is a requirement from the RPM package:
# https://github.com/opnfv/apex/blob/stable/fraser/build/rpm_specs/opnfv-apex-common.spec#L15



# install python 3 on CentOS
echo "*** begin install python 3.6 (3.4 should be already installed by default)"

sudo yum -y install python36
# install pip and setup tools
sudo curl -O https://bootstrap.pypa.io/get-pip.py
hash -r
sudo /usr/bin/python3.6 get-pip.py --no-warn-script-location



echo "*** end AUTO install: OPNFV Apex/TripleO"