diff options
Diffstat (limited to 'ci/deploy-opnfv-apex-centos.sh')
-rw-r--r-- | ci/deploy-opnfv-apex-centos.sh | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/ci/deploy-opnfv-apex-centos.sh b/ci/deploy-opnfv-apex-centos.sh new file mode 100644 index 0000000..a3a0433 --- /dev/null +++ b/ci/deploy-opnfv-apex-centos.sh @@ -0,0 +1,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" + |