X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=vnfs%2FvCPE%2Fscripts%2Fv_brgemu_install.sh;h=7adda8292cd7baae61f952f12bba48bb82cd4585;hb=e3dd7c24232b7060500fee8805416551fe98c92e;hp=a0a16c765935993a4c206a1aa6480b716076b934;hpb=70c65810123a86ec6b55bd2ed066ebd715b68636;p=demo.git diff --git a/vnfs/vCPE/scripts/v_brgemu_install.sh b/vnfs/vCPE/scripts/v_brgemu_install.sh index a0a16c76..7adda829 100755 --- a/vnfs/vCPE/scripts/v_brgemu_install.sh +++ b/vnfs/vCPE/scripts/v_brgemu_install.sh @@ -1,26 +1,8 @@ #!/bin/bash -REPO_URL_BLOB=$(cat /opt/config/repo_url_blob.txt) -REPO_URL_ARTIFACTS=$(cat /opt/config/repo_url_artifacts.txt) -DEMO_ARTIFACTS_VERSION=$(cat /opt/config/demo_artifacts_version.txt) -INSTALL_SCRIPT_VERSION=$(cat /opt/config/install_script_version.txt) -VPP_SOURCE_REPO_URL=$(cat /opt/config/vpp_source_repo_url.txt) -VPP_SOURCE_REPO_BRANCH=$(cat /opt/config/vpp_source_repo_branch.txt) -VPP_PATCH_URL=$(cat /opt/config/vpp_patch_url.txt) -HC2VPP_SOURCE_REPO_URL=$(cat /opt/config/hc2vpp_source_repo_url.txt) -HC2VPP_SOURCE_REPO_BRANCH=$(cat /opt/config/hc2vpp_source_repo_branch.txt) +SCRIPT_VERSION=$(cat /opt/config/script_version.txt) CLOUD_ENV=$(cat /opt/config/cloud_env.txt) -# Build states are: -# 'build' - just build the code -# 'done' - code is build, install and setup -# 'auto' - bulid, install and setup -BUILD_STATE="auto" - -if [[ -f /opt/config/compile_state.txt ]] -then - BUILD_STATE=$(cat /opt/config/compile_state.txt) -fi # Convert Network CIDR to Netmask cdr2mask () { @@ -31,57 +13,18 @@ cdr2mask () { } # OpenStack network configuration -if [[ $BUILD_STATE != "build" ]] +if [[ $CLOUD_ENV == "openstack" ]] then - if [[ $CLOUD_ENV == "openstack" ]] - then - echo 127.0.0.1 $(hostname) >> /etc/hosts + echo 127.0.0.1 $(hostname) >> /etc/hosts - # Allow remote login as root - mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bk - cp /home/ubuntu/.ssh/authorized_keys /root/.ssh - fi -fi # endif BUILD_STATE != "build" + # Allow remote login as root + mv /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bk + cp /home/ubuntu/.ssh/authorized_keys /root/.ssh +fi -if [[ $BUILD_STATE != "done" ]] -then - # Download required dependencies - echo "deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list - echo "deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu $(lsb_release -c -s) main" >> /etc/apt/sources.list.d/java.list - apt-get update - apt-get install --allow-unauthenticated -y wget openjdk-8-jdk apt-transport-https ca-certificates g++ libcurl4-gnutls-dev - sleep 1 - # Install the tools required for download codes - apt-get install -y expect git patch make linux-image-extra-`uname -r` - #Download and build the VPP codes - cd /opt - git clone ${VPP_SOURCE_REPO_URL} -b ${VPP_SOURCE_REPO_BRANCH} vpp - wget -O VPP-Add-Option82-Nat-Filter-For-vBRG.patch ${VPP_PATCH_URL} - - cd vpp - patch -p1 < ../VPP-Add-Option82-Nat-Filter-For-vBRG.patch - expect -c " - set timeout 60; - spawn make install-dep; - expect { - \"Do you want to continue?*\" {send \"Y\r\"; interact} - } - " - - cd build-root - ./bootstrap.sh - make V=0 PLATFORM=vpp TAG=vpp install-deb - - # Install the VPP package - dpkg -i *.deb - systemctl stop vpp -fi # endif BUILD_STATE != "done" - -if [[ $BUILD_STATE != "build" ]] -then - # Auto-start configuration for the VPP - cat > /etc/vpp/startup.conf << EOF +# Auto-start configuration for the VPP +cat > /etc/vpp/startup.conf << EOF unix { nodaemon @@ -188,7 +131,8 @@ EOF #Get list of network device PCI bus addresses get_nic_pci_list() { while read -r line ; do - if [ "$line" != "${line#*network device}" ]; then + if [ "$line" != "${line#*network device}" ]; + then echo -n "${line%% *} " fi done < <(lspci) @@ -196,7 +140,6 @@ EOF NICS=$(get_nic_pci_list) NICS=`echo ${NICS} | sed 's/[0]\+\([0-9]\)/\1/g' | sed 's/[.:]/\//g'` - echo $NICS BRG_BNG_NIC=GigabitEthernet`echo ${NICS} | cut -d " " -f 2` # second interface in list echo $BRG_BNG_NIC > /opt/config/brg_nic.txt @@ -205,12 +148,6 @@ EOF cat > /etc/vpp/setup.gate << EOF set int state ${BRG_BNG_NIC} up set dhcp client intfc ${BRG_BNG_NIC} hostname brg-emulator - -tap connect lstack -set int state tap-0 up - -set interface l2 bridge tap-0 10 0 -set bridge-domain arp term 10 EOF echo "sdnc_ip: $(cat /opt/config/sdnc_ip.txt)" > /opt/config/ip.txt @@ -233,34 +170,34 @@ done BRG_BNG_NIC=$(cat /opt/config/brg_nic.txt) sdnc_ip=$(cat /opt/config/sdnc_ip.txt) -vppctl tap connect tap0 +lstack_tap=$(vppctl tap connect lstack) +vppctl set int state $lstack_tap up + +vppctl set interface l2 bridge $lstack_tap 10 0 +vppctl set bridge-domain arp term 10 + +tap0_tap=$(vppctl tap connect tap0) sleep 3 -vppctl set int state tap-1 up -vppctl set int ip addr tap-1 20.0.0.40/24 +vppctl set int state $tap0_tap up +vppctl set int ip addr $tap0_tap 20.0.0.40/24 ifconfig tap0 192.168.4.20/24 route add -host $sdnc_ip tap0 route add -host 20.0.0.40 tap0 -vppctl ip route add 192.168.4.0/24 via tap-1 -vppctl set interface snat in tap-1 out ${BRG_BNG_NIC} +vppctl ip route add 192.168.4.0/24 via $tap0_tap +vppctl set interface snat in $tap0_tap out ${BRG_BNG_NIC} vppctl snat add interface address ${BRG_BNG_NIC} -#Get vBNG ip addr -output=$(vppctl show dhcp client) -vbng_ip=${output##*gw } - -vppctl ip route add $vbng_ip/32 via $vbng_ip ${BRG_BNG_NIC} -vppctl ip route add $sdnc_ip/32 via $vbng_ip ${BRG_BNG_NIC} - -#Get HW addr of tap-1 +#Get HW addr of $tap0_tap while read -r hw do - if [[ "$hw" = tap-1* ]]; + if [[ "$hw" = $tap0_tap* ]]; then read -r hw hw_addr=${hw##* } break fi done < <(vppctl show hardware) + arp -s $sdnc_ip $hw_addr arp -s 20.0.0.40 $hw_addr @@ -270,7 +207,7 @@ var=${var##*HWaddr} var=${var%inet*} tap0_addr=${var%inet*} -vppctl set ip arp tap-1 192.168.4.20 $tap0_addr +vppctl set ip arp $tap0_tap 192.168.4.20 $tap0_addr EOF chmod +x /opt/bind_nic.sh @@ -332,145 +269,21 @@ do sleep 1 done EOF + chmod +x /opt/set_nat.sh -fi # endif BUILD_STATE != "build" -if [[ $BUILD_STATE != "done" ]] -then + #Create script to run bind_nic.sh and set_nat.sh + cat > /opt/nat_service.sh << 'EOF' +#! /bin/bash - # Download and install HC2VPP from source - cd /opt - git clone ${HC2VPP_SOURCE_REPO_URL} -b ${HC2VPP_SOURCE_REPO_BRANCH} hc2vpp - - apt-get -f -y install - apt-get install -y maven - mkdir -p /root/.m2 - cat > ~/.m2/settings.xml << EOF - - - - - - - fd.io-release - - - fd.io-mirror - fd.io-mirror - https://nexus.fd.io/content/groups/public/ - - true - never - - - false - - - - - - fd.io-mirror - fd.io-mirror - https://nexus.fd.io/content/repositories/public/ - - true - never - - - false - - - - - - - fd.io-snapshots - - - fd.io-snapshot - fd.io-snapshot - https://nexus.fd.io/content/repositories/fd.io.snapshot/ - - false - - - true - - - - - - fd.io-snapshot - fd.io-snapshot - https://nexus.fd.io/content/repositories/fd.io.snapshot/ - - false - - - true - - - - - - opendaylight-snapshots - - - opendaylight-snapshot - opendaylight-snapshot - https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ - - false - - - true - - - - - - opendaylight-shapshot - opendaylight-snapshot - https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ - - false - - - true - - - - - - - - fd.io-release - fd.io-snapshots - opendaylight-snapshots - - -EOF +sleep 15 +/opt/bind_nic.sh +/opt/set_nat.sh - cd hc2vpp - mvn clean install - l_version=$(cat pom.xml | grep "" | head -1) - l_version=$(echo "${l_version%<*}") - l_version=$(echo "${l_version#*>}") - mv vpp-integration/minimal-distribution/target/vpp-integration-distribution-${l_version}-hc/vpp-integration-distribution-${l_version} /opt/honeycomb - sed -i 's/127.0.0.1/0.0.0.0/g' /opt/honeycomb/config/honeycomb.json +EOF + chmod +x /opt/nat_service.sh - # Disable automatic upgrades - if [[ $CLOUD_ENV != "rackspace" ]] - then - echo "APT::Periodic::Unattended-Upgrade \"0\";" >> /etc/apt/apt.conf.d/10periodic - sed -i 's/\(APT::Periodic::Unattended-Upgrade\) "1"/\1 "0"/' /etc/apt/apt.conf.d/20auto-upgrades - fi -fi # endif BUILD_STATE != "done" -if [[ $BUILD_STATE != "build" ]] -then # Create systemctl service for Honeycomb cat > /etc/systemd/system/honeycomb.service << EOF [Unit] @@ -489,10 +302,28 @@ WantedBy=multi-user.target EOF systemctl enable /etc/systemd/system/honeycomb.service + + # Create systemctl service for nat script + cat > /etc/systemd/system/nat.service << EOF +[Unit] +Description=Runs vbrg scripts for nat configuration +Requires=vpp.service +After=vpp.service + +[Service] +RemainAfterExit=True +ExecStart=/opt/nat_service.sh +Restart=always + +[Install] +WantedBy=multi-user.target +EOF + systemctl enable /etc/systemd/system/nat.service + # Download DHCP config files cd /opt - wget $REPO_URL_BLOB/org.onap.demo/vnfs/vcpe/$INSTALL_SCRIPT_VERSION/v_brgemu_init.sh - wget $REPO_URL_BLOB/org.onap.demo/vnfs/vcpe/$INSTALL_SCRIPT_VERSION/v_brgemu.sh + unzip -p -j /opt/vcpe-scripts-$SCRIPT_VERSION.zip v_brgemu_init.sh > /opt/v_brgemu_init.sh + unzip -p -j /opt/vcpe-scripts-$SCRIPT_VERSION.zip v_brgemu.sh > /opt/v_brgemu.sh sed -i '/# Provides:/c\# Provides: vbrg ' /opt/v_brgemu.sh chmod +x v_brgemu_init.sh chmod +x v_brgemu.sh @@ -511,4 +342,6 @@ EOF fi ./v_brgemu_init.sh -fi # endif BUILD_STATE != "build" + +# Indicate script has finished executing + echo 'Execution of vBRG install script completed' > /opt/script_status.txt