From 7d8d435891f23504683a6e7d7a8fb5a4c5cd7585 Mon Sep 17 00:00:00 2001 From: Prasad Miriyala Date: Tue, 25 Aug 2015 11:27:47 -0700 Subject: [PATCH] port smlite related changes from R2.22-dev to R2.20 Closes-Bug: 1513743 This is a combination of 21 commits. ------------------------------------------------------------------- The first commit's message is: Partial-Bug: #1488259 smlite changes for packaging changes - Add server manager lite deb packaging changes - Modify setup.sh to include server manager lite option - Add provision shell script to install server manager, create server manager objects and issue provision - Pre check/config for testbey.py specified servers for a cluster - Local repo pinning changes Change-Id: I45b4cf957a4c1f393e8068ee8eee2d9580d397a3 (cherry picked from commit 2d45ba3e72322c7a8b4420a03b6a47106693d4d3) This is the 2nd commit message: ------------------------------------------------------------------- Related-Bug: #1488259 Bug introduced by preceding merge to R2.22-dev. The package libpython2.7=2.7.6-8ubuntu0.2 should only be installed in Ubuntu 14.04 Bug seen: the version 2.7.6-8ubuntu0.2 is not in precise repos Smgr install on Ubuntu12.04 fails. Change-Id: I3a7c212af4e091fd08b8725630657fd2fb4c4b2c (cherry picked from commit 4a7fbecee4bb2766c4dbe996e99622ebfb37eb93) This is the 3rd commit message: ------------------------------------------------------------------- Related-Bug: #1488259 - Simplifying setup script and moving configuration to Post Install Bulk of the changes made in setup script for server manager has been moved to Post install script of various packages Some packages added as dependencies in control files Rules files changes to prevent same files being overwritten with each install Remaining: Some packages are still being installed explicitly -> cobbler, puppetmaster-common, puppetmaster-python, libpython2.7 These packages have to be added to server-manager local repo Patch 2: Server Manager Install shows minimal outputs on console named.template and named.conf.options are now manual config steps Puppet agent certs are moved and not deleted on fresh install Other review comments implemented Patch 3: Found bug in the name of sendmail and ntp conf samples being copied Patch 4: set +e, set -e for a grep bug in puppet cert generate service restart for sm lite moved from postinst to setup script Change-Id: If871e843d0f9ef17fb67833ae18df13c283f3664 (cherry picked from commit 2ff50b696a446e980fd64b672fef831e9f7a8b5d) This is the 4th commit message: ------------------------------------------------------------------- updates for sm-lite packages - use interface_setup.py from client package Closes-Bug: 1490779 Change-Id: I6b9b17d3113e58624d64d665af99b75d26614675 (cherry picked from commit 89d7c936695bd3bdadd6383cea6aa09c030e918f) This is the 5th commit message: ------------------------------------------------------------------- Related-Bug: #1488259 - Package xmltodict missing from SMlite and SMgr install The package xmltodict was being installed as part of client postinst Now brought in through Smgr postinst and SMLite postinst This will allow starting of SMgr service before Client is installed Change-Id: Ice433d0c54e9feaf860494c2f07baa7e5f3093cf (cherry picked from commit cc79d090efd698a1d70a820a2d946ade7722a525) This is the 6th commit message: ------------------------------------------------------------------- Partial-Bug: #1488259 smlite changes for packaging changes -Set correct permission for provision log dir. Change-Id: I94bae0af87936e2d805b3765347128330c01f5e9 (cherry picked from commit 16dfcb3e5154fee01906cc0d5a013c2289b04989) This is the 7th commit message: ------------------------------------------------------------------- Closes-Bug: #1491183, Move debugs to a log file for provision script Change-Id: Ib21b9fb01af5479e85d0b6061375313b0480d33c (cherry picked from commit 5eea5596dbd87f792e34c47c524dee5e54b8c3bb) This is the 8th commit message: ------------------------------------------------------------------- Partial-Bug: #1488259 Corrected typo in earlier checkin (https://review.opencontrail.org/#/c/13498/). Change-Id: Ib76be37fdc479857454bfdc2e4b943ac0ca162e5 (cherry picked from commit 28682004eca39712d7f3f3e14c88847708936dfc) This is the 9th commit message: ------------------------------------------------------------------- Closes-Bug: #1491955 - Sources.list needs to be cleaned up to prevent apt-get update errors In upgrade scenario, /etc/apt/sources.list needs to be cleaned to remove old Smgr repo entry The repo we are adding needs to be removed if present at time of install Temp files used to create local repo in Smgr sources file need to be removed if present Patch 2: Implemented review comments. Check for --all --nonsm-mon case was missing, added Patch 3: Bharat setup bug fix: exit_status wrong location for apt.conf -> TESTED Cleanup of setup repo put in main function before setup repos -> TESTED local repo in sources.list -> TESTED Monitoring set to false by default and set to true by monitoring install Change-Id: Idfde6c04543a4c721239ad106da19a472998f6f9 (cherry picked from commit 870877640b7598765a540ae9f1e31b4174a53c5b) This is the 10th commit message: ------------------------------------------------------------------- Closes-Bug: #1492063 - Avoiding manual steps during upgrade/purge using preinst/postrm scripts These scripts clean up the leftover /opt/contrail/contrail_server_manager folder created by installer deb The purge of installer deb doesn't autoremove this dir due to creation of Packages.gz Change-Id: If5f7786eee6a37112ca45e769174fea2dc93fb77 (cherry picked from commit 2c3f954e5399474fddbc17dc6256586427b1ea3f) This is the 11th commit message: ------------------------------------------------------------------- Closes-bug: #1494017, Modify postinstall to use the new configuration changes to support server manager lite Change-Id: Idfef75d06ac533507736cb9b86fab141ced57d50 (cherry picked from commit b87a362866f6867ffc2f90c6e338e771cb2357a9) This is the 12th commit message: ------------------------------------------------------------------- Closes-Bug: #1495739 - Puppet config should come in with installer for cert gen Without the correct conf, the new certs generated for puppet master will not have DNS alt names as puppet This will cause provisioning to fail for SM as well as SM LITE Change-Id: I49f3c92e8d9e569ef417f56d0b72573d159564f7 (cherry picked from commit c7589458b2a0cb9732e8bcc0e13abd771560e84a) This is the 13th commit message: ------------------------------------------------------------------- Related-Bug: #1488259 - SM Lite needs to replace apache mpm_event with mpm_worker Puppetmaster Passenger brings in mpm_event but SM Lite needs mpm_worker This change is already present in SMgr Change-Id: Ifce49d6ed39575d63660e4ab628883bb33239c01 (cherry picked from commit f9363034b3a80236bda696f9073f704e6f45785e) This is the 14th commit message: ------------------------------------------------------------------- Closes-Bug: #1497407 - Server Manager Upgrade fix to bring in dirs Dir /opt/contrail/contrail_server_manager/ is deleted in preinst It should be brought in by rules file Patch 2: Moved post rm removal of files to pre rm (Incorrect order) In purge case: pre rm removes files In upgrade case: pre rm removes files In install case: pre install removes files Change-Id: I117787a0fc687abecbfd6df47faed7cec8a73c53 (cherry picked from commit 606714dbdf540cf4b5340e24a8d97bb46fe7b233) This is the 15th commit message: ------------------------------------------------------------------- Related-Bug: #1463208 - Moving Server Manager Client CLI to Cliff Framework This check-in: - Added packaging scripts - Packaging pip installable .tar.gz package - Packaging additional wrapper debian for above .tar.gz Patch 2: - Added scripts to package with server-manager-installer package - Debian can be installed with or without installer - Setup script changes to include cliff client Change-Id: I275416207e090f420e1edfaafd95313b31b50899 (cherry picked from commit 0b570f02c7774426677ce7871ebde42f23d74933) This is the 16th commit message: ------------------------------------------------------------------- Closes-Bug: #1503143 - Adding static route support to SM Lite provision New script called from preconfig.py: https://github.com/Juniper/contrail-provisioning/blob/master/contrail_provisioning/common/staticroute_setup.py This script added to SM client package in this check-in Change-Id: Ib8bbe3c85568ce8d209c5b6269db99e56120b363 (cherry picked from commit 3d05521751e93b9355be7685350f050af9b1fd21) This is the 17th commit message: ------------------------------------------------------------------- Closed-Bug: #1503963, server manager lite options for installing webui and monitoring functions Change-Id: Ia78b33953784e65807a4ed68d7004f928bc25c2c (cherry picked from commit 2326328c969ba7847d9ed804d256a9e35e94b7a4) This is the 18th commit message: ------------------------------------------------------------------- Closes-Bug: #1503868, SM-Lite should have an option to take the domain name Change-Id: Idf589bbf1a32b98b8fb208a83eb575aae912c8c3 (cherry picked from commit a9b53592844c1387b3e945d4b30333de581f33b3) This is the 19th commit message: ------------------------------------------------------------------- Closes-Bug: #1511549, server manager setup is failing, if host_ip option is specified Change-Id: I1bb4ce850b8a9bdc85b8a0cbea4c234494766099 (cherry picked from commit 95f32b7537034cd2a59179aff9b85ce5d40299ab) This is the 20th commit message: ------------------------------------------------------------------- Bring python-xmltodict in ubuntu1404/icehosue server-manager package Change-Id: Iff52db8c9959a99964a19b8370680376a80d32d2 Closes-Bug: 1505903 (cherry picked from commit 30a553da07e3cbbe4ee97f49fdf5a745508bf39e) This is the 21st commit message: ------------------------------------------------------------------- Related-Bug: #1463208 - Adding Cliff Client to Icehouse Builds also Missing package config for 14.04 icehouse to add Cliff Client Package to Smgr Installer Change-Id: I4b74f4dcb62e7bfb952a23792b88012fe2495adf (cherry picked from commit 945005e8a5d778fe7621cf936daa16df84b2cd8d) --- build/contrail_local_preferences | 7 + build/deb_server_manager_setup.sh | 791 ++++++------------ .../contrail_server_manager_packages.cfg | 5 + .../contrail_server_manager_packages.cfg | 5 + .../contrail_server_manager_packages.cfg | 10 + .../depends_server_manager_packages.cfg | 4 + .../juno/contrail_server_manager_packages.cfg | 10 + common/debian/Makefile | 21 + .../debian/postinst | 1 + .../debian/rules | 6 +- .../debian/changelog.in | 6 + .../debian/compat | 1 + .../debian/control | 21 + .../debian/copyright | 5 + .../debian/postinst | 8 + .../debian/rules | 55 ++ .../debian/postinst | 3 +- .../debian/preinst | 6 + .../debian/prerm | 6 + .../debian/provision.sh | 221 +++++ .../debian/provision_status.sh | 3 + .../debian/rules | 21 +- .../debian/changelog.in | 6 + .../debian/compat | 1 + .../debian/control | 14 + .../debian/copyright | 5 + .../debian/postinst | 103 +++ .../contrail-server-manager-lite/debian/rules | 137 +++ .../debian/postinst | 4 +- .../debian/rules | 7 +- .../contrail-server-manager/debian/control | 2 +- .../contrail-server-manager/debian/postinst | 177 ++-- .../contrail-server-manager/debian/rules | 26 +- .../debian/postinst | 135 ++- 34 files changed, 1213 insertions(+), 620 deletions(-) create mode 100755 build/contrail_local_preferences create mode 100644 common/debian/contrail-server-manager-cliff-client/debian/changelog.in create mode 100644 common/debian/contrail-server-manager-cliff-client/debian/compat create mode 100644 common/debian/contrail-server-manager-cliff-client/debian/control create mode 100644 common/debian/contrail-server-manager-cliff-client/debian/copyright create mode 100644 common/debian/contrail-server-manager-cliff-client/debian/postinst create mode 100755 common/debian/contrail-server-manager-cliff-client/debian/rules create mode 100644 common/debian/contrail-server-manager-installer/debian/preinst create mode 100644 common/debian/contrail-server-manager-installer/debian/prerm create mode 100755 common/debian/contrail-server-manager-installer/debian/provision.sh create mode 100755 common/debian/contrail-server-manager-installer/debian/provision_status.sh create mode 100755 common/debian/contrail-server-manager-lite/debian/changelog.in create mode 100755 common/debian/contrail-server-manager-lite/debian/compat create mode 100755 common/debian/contrail-server-manager-lite/debian/control create mode 100755 common/debian/contrail-server-manager-lite/debian/copyright create mode 100755 common/debian/contrail-server-manager-lite/debian/postinst create mode 100755 common/debian/contrail-server-manager-lite/debian/rules diff --git a/build/contrail_local_preferences b/build/contrail_local_preferences new file mode 100755 index 000000000..081a23529 --- /dev/null +++ b/build/contrail_local_preferences @@ -0,0 +1,7 @@ +Package: * +Pin: origin "" +Pin-Priority: 990 + +Package: * +Pin: release o=Debian +Pin-Priority: -10 diff --git a/build/deb_server_manager_setup.sh b/build/deb_server_manager_setup.sh index a949e7323..7d336a72a 100644 --- a/build/deb_server_manager_setup.sh +++ b/build/deb_server_manager_setup.sh @@ -1,44 +1,146 @@ #!/bin/bash -set -x +set -e + +start_time=$(date +"%s") datetime_string=`date +%Y_%m_%d__%H_%M_%S` mkdir -p /var/log/contrail/install_logs/ -exec > /var/log/contrail/install_logs/install_$datetime_string.log -# copy files over +log_file=/var/log/contrail/install_logs/install_$datetime_string.log +exec &> >(tee -a "$log_file") space=" " +arrow="---->" +install_str=" Installing package " + +echo "$arrow This install is being logged at: $log_file" ALL="" SM="" SMCLIENT="" +SMCLIFFCLIENT="" HOSTIP="" SMMON="" +NOSMMON="" WEBUI="" +NOWEBUI="" WEBCORE="" -DOMAIN="" -APPARMOR="" -PASSENGER="" -BINDLOGGING="" +CERT_NAME="" +SMLITE="" HOST_IP_LIST=`ifconfig | sed -n -e 's/:127\.0\.0\.1 //g' -e 's/ *inet addr:\([0-9.]\+\).*/\1/gp'` -LOCALHOSTIP=`echo $HOST_IP_LIST | cut -d' ' -f1` -echo $LOCALHOSTIP +HOSTIP=`echo $HOST_IP_LIST | cut -d' ' -f1` +rel=`lsb_release -r` +rel=( $rel ) + function usage() { - echo "Usage" + echo "Usage:" echo "" - echo "$0" - echo "\t-h --help" - echo "\t--sm=$SM" - echo "\t--sm-client=$SMCLIENT" - echo "\t--webui=$WEBUI" - echo "\t--sm-mon=$SMMON" - echo "\t--hostip=$HOSTIP" - echo "\t--domain=$DOMAIN" - echo "\t--all" - echo "\t*extra options* --bind_apparmor --no_passenger" + echo "-h --help" + echo "--smlite" + echo "--nowebui" + echo "--nosm-mon" + echo "--sm" + echo "--sm-client" + echo "--sm-cliff-client" + echo "--webui" + echo "--sm-mon" + echo "--hostip=" + echo "--cert-name=" + echo "--all" echo "" } +function cleanup_smgr_repos() +{ + + echo "$space$arrow Cleaning up existing sources.list and Server Manager sources file" + local_repo="deb file:/opt/contrail/contrail_server_manager ./" + sed -i "s|$local_repo||g" /etc/apt/sources.list + if [ -f /etc/apt/sources.list.d/smgr_sources.list ]; then + rm /etc/apt/sources.list.d/smgr_sources.list + fi + +} + +function setup_smgr_repos() +{ + # Push this to makefile - Copy only the file we need into installer. + if [ ${rel[1]} == "14.04" ]; then + cp /opt/contrail/contrail_server_manager/ubuntu_14_04_1_sources.list /etc/apt/sources.list.d/smgr_sources.list + elif [ ${rel[1]} == "12.04" ]; then + cp /opt/contrail/contrail_server_manager/ubuntu_12_04_3_sources.list /etc/apt/sources.list.d/smgr_sources.list + else + echo "$space$arrow This version of Ubuntu ${rel[1]} is not supported" + exit + fi + + echo "$space$arrow Setting up the repositories for Server Manager Install" + apt-get update >> $log_file 2>&1 + + echo "$space$arrow Installing dependent packages for Setting up repos" + #scan pkgs in local repo and create Packages.gz + apt-get --no-install-recommends -y install dpkg-dev >> $log_file 2>&1 + # Dependencies to add apt-repos + apt-get --no-install-recommends -y install python-software-properties debmirror >> $log_file 2>&1 + apt-get --no-install-recommends -y install software-properties-common >> $log_file 2>&1 + + pushd /opt/contrail/contrail_server_manager >> $log_file 2>&1 + dpkg-scanpackages . | gzip -9c > Packages.gz | >> $log_file 2>&1 + popd >> $log_file 2>&1 + + echo "deb file:/opt/contrail/contrail_server_manager ./" > /tmp/local_repo + cat /tmp/local_repo /etc/apt/sources.list.d/smgr_sources.list > /tmp/new_smgr_sources.list + mv /tmp/new_smgr_sources.list /etc/apt/sources.list.d/smgr_sources.list + + # Allow unauthenticated pacakges to get installed. + # Do not over-write apt.conf. Instead just append what is necessary + # retaining other useful configurations such as http::proxy info. + apt_auth="APT::Get::AllowUnauthenticated \"true\";" + set +e + grep --quiet "$apt_auth" /etc/apt/apt.conf + exit_status=$? + set -e + if [ $exit_status != "0" ]; then + echo "$apt_auth" >> /etc/apt/apt.conf + fi + + puppet_list_file="/etc/apt/sources.list.d/puppet.list" + passenger_list_file="/etc/apt/sources.list.d/passenger.list" + dist='precise' + if [ ${rel[1]} == "14.04" ]; then + dist='trusty' + fi + # Add puppet sources + if [ ! -f "$puppet_list_file" ]; then + echo "deb http://apt.puppetlabs.com $dist main" >> $puppet_list_file + echo "deb-src http://apt.puppetlabs.com $dist main" >> $puppet_list_file + echo "deb http://apt.puppetlabs.com $dist dependencies" >> $puppet_list_file + echo "deb-src http://apt.puppetlabs.com $dist dependencies" >> $puppet_list_file + fi + + # Add passenger's sources + if [ ! -f "$passenger_list_file" ]; then + echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger $dist main" >> $passenger_list_file + fi + + # Repo to add for redis - required for contrail-web-core + add-apt-repository ppa:rwky/redis --yes >> $log_file 2>&1 + + # Cobbler repo to be added if this is not an SMLITE install + if [ "$SMLITE" == "" ]; then + if [ ${rel[1]} == "14.04" ]; then + wget -qO - http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_14.04/Release.key | apt-key add - >> $log_file 2>&1 + add-apt-repository "deb http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_14.04/ ./" >> $log_file 2>&1 + elif [ ${rel[1]} == "12.04" ]; then + wget -qO - http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_12.04/Release.key | apt-key add - >> $log_file 2>&1 + add-apt-repository "deb http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_12.04/ ./" >> $log_file 2>&1 + fi + fi + apt-get update >> $log_file 2>&1 + +} + + if [ "$#" -eq 0 ]; then usage exit @@ -50,36 +152,49 @@ while [ "$1" != "" ]; do case $PARAM in -h | --help) usage - exit + exit 1 ;; --all) ALL="all" + SM="contrail-server-manager" + WEBUI="contrail-web-server-manager" + WEBCORE="contrail-web-core" + SMCLIENT="contrail-server-manager-client" + SMCLIFFCLIENT="contrail-server-manager-cliff-client" + SMMON="contrail-server-manager-monitoring" ;; + --smlite) + SMLITE="smlite" + ;; + --nowebui) + NOWEBUI="nowebui" + ;; + --nosm-mon) + NOSMMON="nosm-mon" + ;; --sm) - SM=$VALUE + SM="contrail-server-manager" ;; --webui) - WEBUI=$VALUE + WEBUI="contrail-web-server-manager" + WEBCORE="contrail-web-core" ;; --sm-mon) - SMMON=$VALUE + SMMON="contrail-server-manager-monitoring" ;; --sm-client) - SMCLIENT=$VALUE + SMCLIENT="contrail-server-manager-client" + ;; + --sm-cliff-client) + SMCLIFFCLIENT="contrail-server-manager-cliff-client" ;; --hostip) HOSTIP=$VALUE - rm -rf ./IP.txt - echo $HOSTIP >> ./IP.txt + rm -rf /opt/contrail/contrail_server_manager/IP.txt + echo $HOSTIP >> /opt/contrail/contrail_server_manager/IP.txt ;; - --domain) - DOMAIN=$VALUE - ;; - --no_passenger) - PASSENGER="no" - ;; - --bind_logging) - BINDLOGGING="yes" + --cert-name) + CERT_NAME=$VALUE ;; *) echo "ERROR: unknown parameter \"$PARAM\"" @@ -90,534 +205,160 @@ while [ "$1" != "" ]; do shift done -if [ "$ALL" != "" ]; then - output="$(find ./ -name "contrail-*.deb")" - printf "%s\n" "${output}" >> temp.txt - while read line; - do - if [[ "$line" == *client* ]]; - then - SMCLIENT=$line - elif [[ "$line" == *monitoring* ]]; - then - SMMON=$line - elif [[ "$line" == *web-server-manager* ]]; - then - WEBUI=$line - elif [[ "$line" == *web-core* ]]; - then - WEBCORE=$line - elif [[ "$line" != *client* && "$line" != *monitoring* && "$line" != *web* ]]; - then - SM=$line - fi - done < temp.txt - rm temp.txt -fi +cleanup_smgr_repos +setup_smgr_repos -cd /etc/apt/ -# create repo with only local packages -datetime_string=`date +%Y_%m_%d__%H_%M_%S` -cp sources.list sources.list.$datetime_string -echo "deb file:/opt/contrail/contrail_server_manager ./" > local_repo - -#modify /etc/apt/soruces.list/ to add local repo on the top -grep "deb file:/opt/contrail/contrail_server_manager ./" sources.list - -if [ $? != 0 ]; then - cat local_repo sources.list > new_sources.list - mv new_sources.list sources.list - apt-get update --yes -fi - -# Allow unauthenticated pacakges to get installed. -# Do not over-write apt.conf. Instead just append what is necessary -# retaining other useful configurations such as http::proxy info. -apt_auth="APT::Get::AllowUnauthenticated \"true\";" -grep --quiet "$apt_auth" apt.conf -if [ "$?" != "0" ]; then - echo "$apt_auth" >> apt.conf -fi - -#scan pkgs in local repo and create Packages.gz -cd /opt/contrail/contrail_server_manager -apt-get -y install dpkg-dev -dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz -apt-get update --yes - -# install base packages and fabric utils -#DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes --allow-unauthenticated install contrail-setup -#pip install --upgrade --no-deps --index-url='' /opt/contrail/python_packages/ecdsa-0.10.tar.gz - -apt-get -y install gdebi-core - -cd /opt/contrail/contrail_server_manager - - -function save_cobbler_state() -{ - echo "$space### Begin: Saving Cobbler State" - mkdir -p /cobbler_save_state - cp /etc/mail/sendmail.cf /cobbler_save_state/ - cp /etc/ntp.conf /cobbler_save_state/ - cp /etc/contrail_smgr/tags.ini /cobbler_save_state/ - cp -r /etc/cobbler/* /cobbler_save_state/ - cp /etc/bind/named.conf.options /cobbler_save_state/ - echo "$space### End: Saving Cobbler State" -} - -function replace_cobbler_state() -{ - echo "$space### Begin: Replacing Cobbler State" - cp /cobbler_save_state/named.conf.options /etc/bind/ - cp /cobbler_save_state/dhcp.template /etc/cobbler/ - cp /cobbler_save_state/named.template /etc/cobbler/ - cp /cobbler_save_state/zone.template /etc/cobbler/ - cp /cobbler_save_state/settings /etc/cobbler/ - cp /cobbler_save_state/modules.conf /etc/cobbler/ - cp -r /cobbler_save_state/zone_templates /etc/cobbler/ - cp /cobbler_save_state/sendmail.cf /etc/mail/ - cp /cobbler_save_state/ntp.conf /etc/ - cp /cobbler_save_state/tags.ini /etc/contrail_smgr/ - echo "$space### End: Replacing Cobbler State" -} +if [ "$SM" != "" ]; then + echo "$arrow Server Manager" + # Removing the existing puppet agent certs, so that puppet master certs can take its place + # Check if below logic will work in pre-install of contrail-smgr + puppetmaster_installed=`dpkg -l | grep "puppetmaster-passenger" || true` -function passenger_install() -{ - rel=`lsb_release -r` - rel=( $rel ) - if [ ${rel[1]} == "14.04" ]; then - passenger_install_14 - else - passenger_install_12 - fi -} -function passenger_install_14() -{ - apt-get -y install libcurl4-openssl-dev libssl-dev zlib1g-dev apache2-threaded-dev ruby-dev libapr1-dev libaprutil1-dev - gem install rack - gem install passenger --version 4.0.59 - apt-get -y install puppetmaster-passenger="3.7.3-1puppetlabs1" - service apache2 stop - if [ -e /etc/apt/preferences.d/00-puppet.pref ]; then - rm /etc/apt/preferences.d/00-puppet.pref - fi - echo -e "# /etc/apt/preferences.d/00-puppet.pref\nPackage: puppet puppet-common puppetmaster-passenger\nPin: version 3.7.3\nPin-Priority: 501" >> /etc/apt/preferences.d/00-puppet.pref - passenger-install-apache2-module --auto --languages 'ruby,python,nodejs' &> /dev/null - mkdir -p /usr/share/puppet/rack/puppetmasterd - mkdir -p /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp - cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/ - chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru - if [ -e /etc/apache2/sites-available/puppetmaster.conf ]; then - mv /etc/apache2/sites-available/puppetmaster.conf /etc/apache2/sites-available/puppetmaster.conf.save - fi - cp ./puppetmaster /etc/apache2/sites-available/puppetmaster.conf - # passenger version is hard coded at puppetmasterd, hence the following change - rel=`passenger --version` - rel=( $rel ) - sed -i "s|LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so|LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-${rel[3]}/buildout/apache2/mod_passenger.so|g" /etc/apache2/sites-available/puppetmaster.conf - sed -i "s|PassengerRoot /var/lib/gems/1.8/gems/passenger-4.0.53|PassengerRoot /var/lib/gems/1.9.1/gems/passenger-${rel[3]}|g" /etc/apache2/sites-available/puppetmaster.conf - sed -i "s|PassengerDefaultRuby /usr/bin/ruby1.8|PassengerDefaultRuby /usr/bin/ruby1.9.1|g" /etc/apache2/sites-available/puppetmaster.conf - a2ensite puppetmaster - host=`echo $HOSTNAME | awk '{print tolower($0)}'` - if [ "$DOMAIN" != "" ]; then - output="$(find /var/lib/puppet/ssl/certs/ -name "${host}.${DOMAIN}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateFile.*|SSLCertificateFile ${output[0]}|g" /etc/apache2/sites-available/puppetmaster.conf - output="$(find /var/lib/puppet/ssl/private_keys/ -name "${host}.${DOMAIN}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateKeyFile.*|SSLCertificateKeyFile ${output[0]}|g" /etc/apache2/sites-available/puppetmaster.conf - sed -i "s|ErrorLog .*|ErrorLog /var/log/apache2/${host}.${DOMAIN}_ssl_error.log|g" /etc/apache2/sites-available/puppetmaster.conf - sed -i "s|CustomLog .*|CustomLog /var/log/apache2/${host}.${DOMAIN}_ssl_access.log combined|g" /etc/apache2/sites-available/puppetmaster.conf - else - output="$(find /var/lib/puppet/ssl/certs/ -name "${host}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateFile.*|SSLCertificateFile ${output[0]}|g" /etc/apache2/sites-available/puppetmaster.conf - output="$(find /var/lib/puppet/ssl/private_keys/ -name "${host}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateKeyFile.*|SSLCertificateKeyFile ${output[0]}|g" /etc/apache2/sites-available/puppetmaster.conf - sed -i "s|ErrorLog .*|ErrorLog /var/log/apache2/${host}_ssl_error.log|g" /etc/apache2/sites-available/puppetmaster.conf - sed -i "s|CustomLog .*|CustomLog /var/log/apache2/${host}_ssl_access.log combined|g" /etc/apache2/sites-available/puppetmaster.conf + if [[ -d /var/lib/puppet/ssl && $puppetmaster_installed == "" ]]; then + datetime_string=`date +%Y_%m_%d__%H_%M_%S` + echo "$space$arrow Puppet agent certificates have been moved to /var/lib/puppet/ssl_$datetime_string" + mv /var/lib/puppet/ssl /var/lib/puppet/ssl_$datetime_string fi - /etc/init.d/puppetmaster start - /etc/init.d/puppetmaster stop - /etc/init.d/apache2 restart - update-rc.d -f puppetmaster remove - sed -i "s|START=.*|START=no|g" /etc/default/puppetmaster - echo "$space### End: Install Passenger" -} - -function passenger_install_12() -{ - echo "$space### Begin: Install Passenger" - apt-get -y install apache2 ruby1.8-dev rubygems libcurl4-openssl-dev libssl-dev zlib1g-dev apache2-threaded-dev libapr1-dev libaprutil1-dev - a2enmod ssl - a2enmod headers - gem install rack passenger - passenger-install-apache2-module --auto --languages 'ruby,python,nodejs' &> /dev/null - mkdir -p /usr/share/puppet/rack/puppetmasterd - mkdir -p /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp - cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/ - chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru - if [ -e /etc/apache2/sites-available/puppetmasterd ]; then - mv /etc/apache2/sites-available/puppetmasterd /etc/apache2/sites-available/puppetmasterd.save - fi - cp ./puppetmaster /etc/apache2/sites-available/puppetmasterd - # passenger version is hard coded at puppetmasterd, hence the following change - rel=`passenger --version` - rel=( $rel ) - sed -i "s|LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so|LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-${rel[3]}/buildout/apache2/mod_passenger.so|g" /etc/apache2/sites-available/puppetmasterd - sed -i "s|PassengerRoot /var/lib/gems/1.8/gems/passenger-4.0.53|PassengerRoot /var/lib/gems/1.8/gems/passenger-${rel[3]}|g" /etc/apache2/sites-available/puppetmasterd - a2ensite puppetmasterd - host=`echo $HOSTNAME | awk '{print tolower($0)}'` - if [ "$DOMAIN" != "" ]; then - output="$(find /var/lib/puppet/ssl/certs/ -name "${host}.${DOMAIN}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateFile.*|SSLCertificateFile ${output[0]}|g" /etc/apache2/sites-available/puppetmasterd - output="$(find /var/lib/puppet/ssl/private_keys/ -name "${host}.${DOMAIN}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateKeyFile.*|SSLCertificateKeyFile ${output[0]}|g" /etc/apache2/sites-available/puppetmasterd - sed -i "s|ErrorLog .*|ErrorLog /var/log/apache2/${host}.${DOMAIN}_ssl_error.log|g" /etc/apache2/sites-available/puppetmasterd - sed -i "s|CustomLog .*|CustomLog /var/log/apache2/${host}.${DOMAIN}_ssl_access.log combined|g" /etc/apache2/sites-available/puppetmasterd - else - output="$(find /var/lib/puppet/ssl/certs/ -name "${host}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateFile.*|SSLCertificateFile ${output[0]}|g" /etc/apache2/sites-available/puppetmasterd - output="$(find /var/lib/puppet/ssl/private_keys/ -name "${host}*.pem")" - output=( $output ) - sed -i "s|SSLCertificateKeyFile.*|SSLCertificateKeyFile ${output[0]}|g" /etc/apache2/sites-available/puppetmasterd - sed -i "s|ErrorLog .*|ErrorLog /var/log/apache2/${host}_ssl_error.log|g" /etc/apache2/sites-available/puppetmasterd - sed -i "s|CustomLog .*|CustomLog /var/log/apache2/${host}_ssl_access.log combined|g" /etc/apache2/sites-available/puppetmasterd - fi - /etc/init.d/puppetmaster start - /etc/init.d/puppetmaster stop - /etc/init.d/apache2 restart - update-rc.d -f puppetmaster remove - sed -i "s|START=.*|START=no|g" /etc/default/puppetmaster - echo "$space### End: Install Passenger" -} - -function install_cobbler() -{ - rel=`lsb_release -r` - rel=( $rel ) + #To be Removed after local repo additions if [ ${rel[1]} == "14.04" ]; then - install_cobbler_14 - else - install_cobbler_12 + apt-get --no-install-recommends -y install libpython2.7=2.7.6-8ubuntu0.2 >> $log_file 2>&1 fi -} + apt-get -y --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" install puppet-common="3.7.3-1puppetlabs1" puppetmaster-common="3.7.3-1puppetlabs1" >> $log_file 2>&1 + cp /opt/contrail/contrail_server_manager/puppet.conf /etc/puppet/ + apt-get -y --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" install nodejs=0.8.15-1contrail1 >> $log_file 2>&1 -function install_cobbler_12() -{ - echo "$space### Begin: Install Cobbler" - apt-get -y install apache2 libapache2-mod-wsgi tftpd-hpa python-urlgrabber python-django selinux-utils python-simplejson python-dev - apt-get -y install python-software-properties debmirror - wget -qO - http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_12.04/Release.key | apt-key add - - add-apt-repository "deb http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_12.04/ ./" - apt-get update --yes - apt-get -y install cobbler="2.6.3-1" - a2enmod proxy - a2enmod proxy_http - a2enmod version - a2enmod wsgi - setenforce 0 - cp -r /srv/www/cobbler /var/www/cobbler - cp -r /srv/www/cobbler_webui_content /var/www/cobbler_webui_content - cp ./cobbler.conf /etc/apache2/conf.d/ - cp ./cobbler_web.conf /etc/apache2/conf.d/ - cp ./cobbler.conf /etc/cobbler/ - cp ./cobbler_web.conf /etc/cobbler/ - sed -i "s/django.conf.urls /django.conf.urls.defaults /g" /usr/share/cobbler/web/cobbler_web/urls.py - chmod 777 /var/lib/cobbler/webui_sessions/ - service cobblerd restart - service apache2 restart - echo "$space### End: Install Cobbler" -} - -function install_cobbler_14() -{ - echo "$space### Begin: Install Cobbler" - apt-get -y install apache2 libapache2-mod-wsgi tftpd-hpa python-urlgrabber python-django selinux-utils python-simplejson python-dev - apt-get -y install python-software-properties debmirror - wget -qO - http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_14.04/Release.key | apt-key add - - add-apt-repository "deb http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler26/xUbuntu_14.04/ ./" - apt-get update --yes - apt-get -y install cobbler="2.6.3-1" - mkdir -p /etc/apache2/conf-available/ - cp ./cobbler_14.conf /etc/apache2/conf.d/cobbler.conf - cp ./cobbler_web_14.conf /etc/apache2/conf.d/cobbler_web.conf - cp ./cobbler_14.conf /etc/cobbler/cobbler.conf - cp ./cobbler_web_14.conf /etc/cobbler/cobbler_web.conf - cp /etc/apache2/conf.d/cobbler.conf /etc/apache2/conf-available/ - cp /etc/apache2/conf.d/cobbler_web.conf /etc/apache2/conf-available/ - a2enconf cobbler cobbler_web - a2enmod proxy - a2enmod proxy_http - a2enmod wsgi - cp -r /srv/www/cobbler /var/www/cobbler - cp -r /srv/www/cobbler_webui_content /var/www/cobbler_webui_content - chmod 777 /var/lib/cobbler/webui_sessions/ - SECRET_KEY=$(python -c 'import re;from random import choice; import sys; sys.stdout.write(re.escape("".join([choice("abcdefghijklmnopqrstuvwxyz0123456789^&*(-_=+)") for i in range(100)])))') - sudo sed --in-place "s/^SECRET_KEY = .*/SECRET_KEY = '${SECRET_KEY}'/" /usr/share/cobbler/web/settings.py - service cobblerd restart - service apache2 restart - echo "$space### End: Install Cobbler" -} - -function bind_logging() -{ - mkdir /var/log/named - touch /var/log/named/debug.log - touch /var/log/named/query.log - echo "logging { - - channel debug_log { - file "/var/log/named/debug.log"; - severity debug 3; - print-category yes; - print-severity yes; - print-time yes; - }; - - channel query_log { - file "/var/log/named/query.log"; - severity dynamic; - print-category yes; - print-severity yes; - print-time yes; - }; - - category resolver { debug_log; }; - category security { debug_log; }; - category queries { query_log; }; - -};" >> /etc/bind/named.conf -} - - -if [ "$SM" != "" ]; then - echo "### Begin: Installing Server Manager" - echo "SM is $SM" - rel=`lsb_release -r` - rel=( $rel ) - if [ ${rel[1]} == "14.04" ]; then - wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb - gdebi -n puppetlabs-release-trusty.deb - apt-get update --yes - apt-get -y install puppet-common="3.7.3-1puppetlabs1" - apt-get -y install puppetmaster-common="3.7.3-1puppetlabs1" - apt-get -y install puppetmaster="3.7.3-1puppetlabs1" - service puppetmaster stop - service apache2 start - gdebi -n nodejs_0.8.15-1contrail1_amd64.deb + if [ "$CERT_NAME" != "" ]; then + host=$CERT_NAME + echo "$space$arrow Creating puppet certificate with name $host" else - wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb - gdebi -n puppetlabs-release-precise.deb - apt-get update --yes - apt-get -y install puppet-common="3.7.3-1puppetlabs1" - apt-get -y install puppetmaster-common="3.7.3-1puppetlabs1" - apt-get -y install puppetmaster="3.7.3-1puppetlabs1" - gdebi -n nodejs_0.8.15-1contrail1_amd64.deb + host=$(hostname -f) + echo "$space$arrow Using default puppet certificate name $host" fi + set +e + puppet cert list --all 2>&1 | grep -v $(hostname -f) && puppet cert generate $host >> $log_file 2>&1 + set -e + #To be Removed after local repo additions + echo "$space$arrow$install_str Puppetmaster Passenger" + apt-get --no-install-recommends -y --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" install puppetmaster-passenger="3.7.3-1puppetlabs1" >> $log_file 2>&1 + service apache2 restart >> $log_file 2>&1 if [ -e /etc/init.d/apparmor ]; then - /etc/init.d/apparmor stop - update-rc.d -f apparmor remove - apt-get --purge remove apparmor apparmor-utils libapparmor-perl libapparmor1 --yes + /etc/init.d/apparmor stop >> $log_file 2>&1 + update-rc.d -f apparmor remove >> $log_file 2>&1 fi - apt-get -y install software-properties-common # Check if this is an upgrade - check=`dpkg --list | grep "contrail-server-manager "` - if [ "$check" != "" ]; then - # Upgrade - save_cobbler_state - cv=`cobbler --version` - cv=( $cv ) - if [ "${cv[1]}" != "2.6.3" ]; then - dpkg -P --force-all python-cobbler - dpkg -P --force-all cobbler-common - dpkg -P --force-all cobbler-web - dpkg -P --force-all cobbler - dpkg -P --force-all contrail-server-manager - fi - install_cobbler - if [ -e /etc/apache2/sites-enabled/puppetmasterd ]; then - rm /etc/apache2/sites-enabled/puppetmasterd - fi - gdebi -n $SM - replace_cobbler_state + if [ "$SMLITE" != "" ]; then + check_upgrade=`dpkg --list | grep "contrail-server-manager-lite " || true` else - install_cobbler - gdebi -n $SM - fi - - if [ "$HOSTIP" == "" ]; then - HOSTIP=$LOCALHOSTIP - fi - sed -i "s/listen_ip_addr = .*/listen_ip_addr = $HOSTIP/g" /opt/contrail/server_manager/sm-config.ini - - # Adding server and Public DNS to /etc/resolv.conf if not present - grep "nameserver $LOCALHOSTIP" /etc/resolv.conf - if [ $? != 0 ]; then - echo "nameserver $LOCALHOSTIP" >> /etc/resolv.conf - fi - grep "nameserver 8.8.8.8" /etc/resolv.conf - if [ $? != 0 ]; then - echo "nameserver 8.8.8.8" >> /etc/resolv.conf - fi - grep "bind_master: $LOCALHOSTIP" /etc/cobbler/settings - if [ $? != 0 ]; then - echo "bind_master: $LOCALHOSTIP" >> /etc/cobbler/settings + check_upgrade=`dpkg --list | grep "contrail-server-manager " || true` fi - if [ "$PASSENGER" != "no" ]; then - passenger_install - fi - - if [ "$BINDLOGGING" == "yes" ]; then - bind_logging - fi - - if [ "$DOMAIN" != "" ]; then - grep "manage_forward_zones: ['$DOMAIN']" /etc/cobbler/settings - if [ $? != 0 ]; then - sed -i "s/manage_forward_zones:.*/manage_forward_zones: ['$DOMAIN']/g" /etc/cobbler/settings + if [ "$check_upgrade" != "" ]; then + # Upgrade + echo "$space$arrow Upgrading Server Manager" + if [ "$SMLITE" != "" ]; then + echo "$space$arrow$install_str Server Manager Lite" + apt-get -y install contrail-server-manager-lite >> $log_file 2>&1 + apt-get -y install -f >> $log_file 2>&1 + echo "$space$space$arrow Starting Server Manager Lite Service" + service contrail-server-manager restart + sleep 5 + service contrail-server-manager status + else + cv=`cobbler --version` + cv=( $cv ) + if [ "${cv[1]}" != "2.6.3" ]; then + dpkg -P --force-all python-cobbler >> $log_file 2>&1 + dpkg -P --force-all cobbler-common >> $log_file 2>&1 + dpkg -P --force-all cobbler-web >> $log_file 2>&1 + dpkg -P --force-all cobbler >> $log_file 2>&1 + dpkg -P --force-all contrail-server-manager >> $log_file 2>&1 + fi + echo "$space$arrow$install_str Server Manager" + apt-get -y install cobbler="2.6.3-1" >> $log_file 2>&1 # TODO : Remove after local repo pinning + apt-get -y install contrail-server-manager >> $log_file 2>&1 + apt-get -y install -f >> $log_file 2>&1 + fi + else + if [ "$SMLITE" != "" ]; then + echo "$space$arrow$install_str Server Manager Lite" + apt-get -y install contrail-server-manager-lite >> $log_file 2>&1 + echo "$space$space$arrow Starting Server Manager Lite Service" + service contrail-server-manager restart + sleep 5 + service contrail-server-manager status + else + echo "$space$arrow$install_str Server Manager" + apt-get -y install cobbler="2.6.3-1" >> $log_file 2>&1 # TODO : Remove after local repo pinning + apt-get -y install contrail-server-manager >> $log_file 2>&1 fi + apt-get -y install -f >> $log_file 2>&1 fi - echo "### End: Installing Server Manager" - echo "IMPORTANT: CONFIGURE /ETC/COBBLER/DHCP.TEMPLATE, NAMED.TEMPLATE, SETTINGS TO BRING UP SERVER MANAGER." - echo "If your install has failed, please make sure the /etc/apt/sources.list file reflects the default sources.list for your version of Ubuntu." - echo "Sample sources.list files are available at /opt/contrail/contrail_server_manager/." - echo "Install log is at /var/log/contrail/install_logs/" + + echo "$arrow Completed Installing Server Manager" fi if [ "$SMCLIENT" != "" ]; then - echo "### Begin: Installing Server Manager Client" - echo "SMCLIENT is $SMCLIENT" - gdebi -n $SMCLIENT - if [ "$HOSTIP" == "" ]; then - HOSTIP=$LOCALHOSTIP - fi - sed -i "s/listen_ip_addr = .*/listen_ip_addr = $HOSTIP/g" /opt/contrail/server_manager/client/sm-client-config.ini - echo "### End: Installing Server Manager Client" + echo "$arrow Server Manager Client" + echo "$space$arrow$install_str Server Manager Client" + apt-get -y install contrail-server-manager-client >> $log_file 2>&1 + apt-get -y install -f >> $log_file 2>&1 + echo "$arrow Completed Installing Server Manager Client" +fi + +if [ "$SMCLIFFCLIENT" != "" ]; then + echo "$arrow Server Manager Cliff Client" + echo "$space$arrow$install_str Server Manager Cliff Client" + apt-get -y install contrail-server-manager-cliff-client >> $log_file 2>&1 + apt-get -y install -f >> $log_file 2>&1 + echo "$arrow Completed Installing Server Manager Cliff Client" fi -if [ "$WEBUI" != "" ]; then - echo "### Begin: Installing Server Manager Web UI" - echo "WEBUI is $WEBUI" +if [ "$WEBUI" != "" ] && [ "$NOWEBUI" == "" ]; then + echo "$arrow Web Server Manager" # install webui - if [ $WEBCORE!="" ]; then - add-apt-repository ppa:rwky/redis --yes - apt-get update --yes - gdebi -n $WEBCORE - fi - gdebi -n $WEBUI - # Modify webui config file - WEBUI_CONF_FILE=/etc/contrail/config.global.js - SM_CONF_FILE=/usr/src/contrail/contrail-web-server-manager/webroot/common/api/sm.config.js - WEBUI_PATH=/usr/src/contrail/contrail-web-server-manager - grep "config.featurePkg" $WEBUI_CONF_FILE - if [ $? != 0 ]; then - echo "config.featurePkg = {};" >> $WEBUI_CONF_FILE - echo "config.featurePkg.serverManager = {};" >> $WEBUI_CONF_FILE - fi - grep "config.featurePkg.serverManager" $WEBUI_CONF_FILE - if [ $? != 0 ]; then - echo "config.featurePkg.serverManager = {};" >> $WEBUI_CONF_FILE - fi - grep "config.featurePkg.serverManager.path" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s|config.featurePkg.serverManager.path = .*|config.featurePkg.serverManager.path = '$WEBUI_PATH';|g" $WEBUI_CONF_FILE - else - echo "config.featurePkg.serverManager.path = '$WEBUI_PATH';" >> $WEBUI_CONF_FILE - fi - grep "config.featurePkg.serverManager.enable" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s/config.featurePkg.serverManager.enable = .*/config.featurePkg.serverManager.enable = true;/g" $WEBUI_CONF_FILE - else - echo "config.featurePkg.serverManager.enable = true;" >> $WEBUI_CONF_FILE - fi - if [ "$HOSTIP" == "" ]; then - HOSTIP=$LOCALHOSTIP - fi - grep "config.orchestration" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s/config.orchestration = .*/config.orchestration = {};/g" $WEBUI_CONF_FILE - else - echo "config.orchestration = {};" >> $WEBUI_CONF_FILE - fi - grep "config.orchestration.Manager" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s/config.orchestration.Manager = .*/config.orchestration.Manager = 'none'/g" $WEBUI_CONF_FILE - else - echo "config.orchestration.Manager = 'none';" >> $WEBUI_CONF_FILE - fi - grep "config.discoveryService" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s/config.discoveryService = .*/config.discoveryService = {};/g" $WEBUI_CONF_FILE - else - echo "config.discoveryService = {};" >> $WEBUI_CONF_FILE - fi - grep "config.discoveryService.enable" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s/config.discoveryService.enable = .*/config.discoveryService.enable = false;/g" $WEBUI_CONF_FILE - else - echo "config.discoveryService.enable = false;" >> $WEBUI_CONF_FILE - fi - grep "config.multi_tenancy" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s/config.multi_tenancy = .*/config.multi_tenancy = {};/g" $WEBUI_CONF_FILE - else - echo "config.multi_tenancy = {};" >> $WEBUI_CONF_FILE - fi - grep "config.multi_tenancy.enabled" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s/config.multi_tenancy.enabled = .*/config.multi_tenancy.enabled = false;/g" $WEBUI_CONF_FILE - else - echo "config.multi_tenancy.enabled = false;" >> $WEBUI_CONF_FILE - fi - grep "module.exports" $WEBUI_CONF_FILE - if [ $? == 0 ]; then - sed -i "s|module.exports =.*||g" $WEBUI_CONF_FILE - fi - echo "module.exports = config;" >> $WEBUI_CONF_FILE - sed -i "s/config.featurePkg.webController.enable = .*/config.featurePkg.webController.enable = false;/g" $WEBUI_CONF_FILE - sed -i "s/smConfig.sm.server_ip = .*/smConfig.sm.server_ip = '$HOSTIP';/g" $SM_CONF_FILE - sed -i "s/smConfig.sm.server_port = .*/smConfig.sm.server_port = 9001;/g" $SM_CONF_FILE - sed -i "s/smConfig.sm.introspect_ip = .*/smConfig.sm.introspect_ip = '$HOSTIP';/g" $SM_CONF_FILE - sed -i "s/smConfig.sm.introspect_port = .*/smConfig.sm.introspect_port = 8106;/g" $SM_CONF_FILE - # start redis and supervisord - service redis-server restart - service supervisor restart - - # start webui - mkdir -p /var/log/contrail/ - service supervisor-webui restart - echo "### End: Installing Server Manager Web UI" + echo "$space$arrow$install_str Contrail Web Core" + apt-get -y install contrail-web-core >> $log_file 2>&1 + echo "$space$arrow$install_str Contrail Web Server Manager" + apt-get -y install contrail-web-server-manager >> $log_file 2>&1 + apt-get -y install -f >> $log_file 2>&1 + echo "$arrow Completed Installing Web Server Manager" fi -if [ "$SMMON" != "" ]; then - echo "### Begin: Installing Server Manager Monitoring" - echo "SMMON is $SMMON" - check=`dpkg --list | grep "contrail-server-manager-monitoring "` - if [ "$check" != "" ]; then - gdebi -n $SMMON +if [ "$SMMON" != "" ] && [ "$NOSMMON" == "" ]; then + echo "$arrow Server Manager Monitoring" + echo "$space$arrow$install_str Server Manager Monitoring" + apt-get -y install contrail-server-manager-monitoring >> $log_file 2>&1 + apt-get -y install -f >> $log_file 2>&1 + if [ "$check_upgrade" != "" ]; then echo "Sample Configurations for Monitoring and Inventory are available at /opt/contrail/server_manager/sm-monitoring-config.ini and /opt/contrail/server_manager/sm-inventory-config.ini." echo "Sample Configurations for Sandesh is available at /opt/contrail/server_manager/sm-sandesh-config.ini." echo "Please add these to the main server manager configuration at /opt/contrail/server_manager/sm-config.ini to activate these features." else - gdebi -n $SMMON cat /opt/contrail/server_manager/sm-sandesh-config.ini >> /opt/contrail/server_manager/sm-config.ini cat /opt/contrail/server_manager/sm-monitoring-config.ini >> /opt/contrail/server_manager/sm-config.ini cat /opt/contrail/server_manager/sm-inventory-config.ini >> /opt/contrail/server_manager/sm-config.ini fi - echo "### End: Installing Server Manager Monitoring" + echo "$arrow Completed Installing Server Manager Monitoring" +fi + +# Should we remove Puppet/Passenger sources.list.d files also? +echo "$arrow Reverting Repos to old state" +rm -f /etc/apt/sources.list.d/puppet.list >> $log_file 2>&1 +rm -f /etc/apt/sources.list.d/passenger.list >> $log_file 2>&1 +rm -f /etc/apt/sources.list.d/smgr_sources.list >> $log_file 2>&1 +apt-get update >> $log_file 2>&1 + +sm_installed=`dpkg -l | grep "contrail-server-manager " || true` +if [ "$sm_installed" != "" ]; then echo "IMPORTANT: CONFIGURE /ETC/COBBLER/DHCP.TEMPLATE, NAMED.TEMPLATE, SETTINGS TO BRING UP SERVER MANAGER." echo "If your install has failed, please make sure the /etc/apt/sources.list file reflects the default sources.list for your version of Ubuntu." echo "Sample sources.list files are available at /opt/contrail/contrail_server_manager/." echo "Install log is at /var/log/contrail/install_logs/" fi +end_time=$(date +"%s") +diff=$(($end_time-$start_time)) +echo "SM installation took $(($diff / 60)) minutes and $(($diff % 60)) seconds." diff --git a/build/package_configs/ubuntu1204/havana/contrail_server_manager_packages.cfg b/build/package_configs/ubuntu1204/havana/contrail_server_manager_packages.cfg index 538055046..6ba7520e7 100644 --- a/build/package_configs/ubuntu1204/havana/contrail_server_manager_packages.cfg +++ b/build/package_configs/ubuntu1204/havana/contrail_server_manager_packages.cfg @@ -44,6 +44,11 @@ pkgs = contrail-server-manager makeloc = tools/packaging/common/debian target = contrail-server-manager-deb +[contrail-server-manager-lite] +pkgs = contrail-server-manager-lite +makeloc = tools/packaging/common/debian +target = contrail-server-manager-lite-deb + [contrail-server-manager-client] pkgs = contrail-server-manager-client makeloc = tools/packaging/common/debian diff --git a/build/package_configs/ubuntu1204/icehouse/contrail_server_manager_packages.cfg b/build/package_configs/ubuntu1204/icehouse/contrail_server_manager_packages.cfg index 538055046..6ba7520e7 100644 --- a/build/package_configs/ubuntu1204/icehouse/contrail_server_manager_packages.cfg +++ b/build/package_configs/ubuntu1204/icehouse/contrail_server_manager_packages.cfg @@ -44,6 +44,11 @@ pkgs = contrail-server-manager makeloc = tools/packaging/common/debian target = contrail-server-manager-deb +[contrail-server-manager-lite] +pkgs = contrail-server-manager-lite +makeloc = tools/packaging/common/debian +target = contrail-server-manager-lite-deb + [contrail-server-manager-client] pkgs = contrail-server-manager-client makeloc = tools/packaging/common/debian diff --git a/build/package_configs/ubuntu1404/icehouse/contrail_server_manager_packages.cfg b/build/package_configs/ubuntu1404/icehouse/contrail_server_manager_packages.cfg index 538055046..515e38aca 100644 --- a/build/package_configs/ubuntu1404/icehouse/contrail_server_manager_packages.cfg +++ b/build/package_configs/ubuntu1404/icehouse/contrail_server_manager_packages.cfg @@ -44,11 +44,21 @@ pkgs = contrail-server-manager makeloc = tools/packaging/common/debian target = contrail-server-manager-deb +[contrail-server-manager-lite] +pkgs = contrail-server-manager-lite +makeloc = tools/packaging/common/debian +target = contrail-server-manager-lite-deb + [contrail-server-manager-client] pkgs = contrail-server-manager-client makeloc = tools/packaging/common/debian target = contrail-server-manager-client-deb +[contrail-server-manager-cliff-client] +pkgs = contrail-server-manager-cliff-client +makeloc = tools/packaging/common/debian +target = contrail-server-manager-cliff-client-deb + [contrail-web-core] pkgs = contrail-web-core makeloc = tools/packaging/common/debian diff --git a/build/package_configs/ubuntu1404/icehouse/depends_server_manager_packages.cfg b/build/package_configs/ubuntu1404/icehouse/depends_server_manager_packages.cfg index 9143e1135..bbbe0d3d4 100644 --- a/build/package_configs/ubuntu1404/icehouse/depends_server_manager_packages.cfg +++ b/build/package_configs/ubuntu1404/icehouse/depends_server_manager_packages.cfg @@ -75,3 +75,7 @@ md5 = 1160ffdc6faa72bfb6f027f5e7b18bb1 [server-mgr-python-consistent-hash] file = python-consistent-hash_1.0-0contrail1_amd64.deb md5 = 6ba90f706ec78584adb3a15657f290e3 + +[server-mgr-python-xmltodict] +file = python-xmltodict_0.9.0-1contrail1_all.deb +md5 = 49ad578daa539e8965bbcaaac9a8045e diff --git a/build/package_configs/ubuntu1404/juno/contrail_server_manager_packages.cfg b/build/package_configs/ubuntu1404/juno/contrail_server_manager_packages.cfg index 538055046..515e38aca 100644 --- a/build/package_configs/ubuntu1404/juno/contrail_server_manager_packages.cfg +++ b/build/package_configs/ubuntu1404/juno/contrail_server_manager_packages.cfg @@ -44,11 +44,21 @@ pkgs = contrail-server-manager makeloc = tools/packaging/common/debian target = contrail-server-manager-deb +[contrail-server-manager-lite] +pkgs = contrail-server-manager-lite +makeloc = tools/packaging/common/debian +target = contrail-server-manager-lite-deb + [contrail-server-manager-client] pkgs = contrail-server-manager-client makeloc = tools/packaging/common/debian target = contrail-server-manager-client-deb +[contrail-server-manager-cliff-client] +pkgs = contrail-server-manager-cliff-client +makeloc = tools/packaging/common/debian +target = contrail-server-manager-cliff-client-deb + [contrail-web-core] pkgs = contrail-web-core makeloc = tools/packaging/common/debian diff --git a/common/debian/Makefile b/common/debian/Makefile index 6de694a23..29d6b42ce 100644 --- a/common/debian/Makefile +++ b/common/debian/Makefile @@ -135,7 +135,9 @@ contrail-install-vcenter-plugin: (cd vcenter-plugin && make all) server-manager-all: contrail-server-manager-deb \ + contrail-server-manager-lite-deb \ contrail-server-manager-client-deb \ + contrail-server-manager-cliff-client-deb \ contrail-server-manager-monitoring-deb \ contrail-server-manager-installer-deb @@ -267,6 +269,14 @@ contrail-server-manager-deb: (cd ${BUILDDIR}; fakeroot debian/rules clean) (cd ${BUILDDIR}; fakeroot debian/rules binary) +contrail-server-manager-lite-deb: + $(eval BUILDDIR=${SB_TOP}/build/debian/contrail-server-manager-lite) + rm -rf ${BUILDDIR} + mkdir -p ${BUILDDIR}/debian + cp -ar ${SB_TOP}/tools/packaging/common/debian/contrail-server-manager-lite/debian ${BUILDDIR} + (cd ${BUILDDIR}; fakeroot debian/rules clean) + (cd ${BUILDDIR}; fakeroot debian/rules binary) + contrail-server-manager-client-deb: $(eval BUILDDIR=${SB_TOP}/build/debian/contrail-server-manager-client) rm -rf ${BUILDDIR} @@ -275,6 +285,17 @@ contrail-server-manager-client-deb: (cd ${BUILDDIR}; fakeroot debian/rules clean) (cd ${BUILDDIR}; fakeroot debian/rules binary) +contrail-server-manager-cliff-client-deb: + $(eval BUILDDIR=${SB_TOP}/build/debian/contrail-server-manager-cliff-client) + rm -rf ${BUILDDIR} + mkdir -p ${BUILDDIR}/debian + @echo "$(VERSION)" > $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/contrail_version.txt + @echo "$(CONTRAIL_SKU)" > $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/contrail_sku.txt + cp -ar ${SB_TOP}/tools/packaging/common/debian/contrail-server-manager-cliff-client/debian ${BUILDDIR} + (cd ${BUILDDIR}; fakeroot debian/rules clean) + (cd ${BUILDDIR}; fakeroot debian/rules binary) + (mkdir -p $(SB_TOP)/build/tools/; cp $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/dist/servermanagercli-$(VERSION)-$(CONTRAIL_SKU).tar.gz $(SB_TOP)/build/tools/) + contrail-server-manager-monitoring-deb: $(eval BUILDDIR=${SB_TOP}/build/debian/contrail-server-manager-monitoring) rm -rf ${BUILDDIR} diff --git a/common/debian/contrail-server-manager-client/debian/postinst b/common/debian/contrail-server-manager-client/debian/postinst index 6077c1faf..7b596be66 100644 --- a/common/debian/contrail-server-manager-client/debian/postinst +++ b/common/debian/contrail-server-manager-client/debian/postinst @@ -12,6 +12,7 @@ then HOST_IP=$(cat /opt/contrail/contrail_server_manager/IP.txt) fi echo $HOST_IP +sed -i "s/listen_ip_addr = .*/listen_ip_addr = $HOST_IP/g" /opt/contrail/server_manager/client/sm-client-config.ini easy_install argparse easy_install pycurl easy_install pip diff --git a/common/debian/contrail-server-manager-client/debian/rules b/common/debian/contrail-server-manager-client/debian/rules index 525b6659e..86a130bd2 100755 --- a/common/debian/contrail-server-manager-client/debian/rules +++ b/common/debian/contrail-server-manager-client/debian/rules @@ -13,7 +13,7 @@ export SB_TOP := $(shell pwd | sed -re "s/\/build\/debian\/contrail-server-manag export BUILDTIME := $(shell date -u +%y%m%d%H%M) export src_path := $(SB_TOP)/tools/contrail-server-manager/src/ export build_root := $(SB_TOP)/build/debian/contrail-server-manager-client/debian/contrail-server-manager-client - +export contrail_provisioning_path := $(SB_TOP)/tools/provisioning/contrail_provisioning SRC_VER := $(shell cat $(SB_TOP)/controller/src/base/version.info) BUILDTAG = @@ -41,7 +41,9 @@ override_dh_auto_install: cp -r $(src_path)/client/*.py $(build_root)/opt/contrail/server_manager/client/ cp -r $(src_path)/client/*.json $(build_root)/opt/contrail/server_manager/client/ cp -r $(src_path)/client/server-manager $(build_root)/opt/contrail/server_manager/client/ - cp -r $(src_path)/client/sm-client-config.ini $(build_root)/opt/contrail/server_manager/client/ + install -p -m 755 $(src_path)/client/sm-client-config.ini $(build_root)/opt/contrail/server_manager/client/ + install -p -m 755 $(src_path)/kickstarts/interface_setup.py $(build_root)/opt/contrail/server_manager/client/interface_setup.py + install -p -m 755 $(contrail_provisioning_path)/common/staticroute_setup.py $(build_root)/opt/contrail/server_manager/client/staticroute_setup.py override_dh_shlibdeps: diff --git a/common/debian/contrail-server-manager-cliff-client/debian/changelog.in b/common/debian/contrail-server-manager-cliff-client/debian/changelog.in new file mode 100644 index 000000000..79fa4dc4c --- /dev/null +++ b/common/debian/contrail-server-manager-cliff-client/debian/changelog.in @@ -0,0 +1,6 @@ +contrail-server-manager-cliff-client (BUILDTAG) nitishk; urgency=low + + [nitishk ] + * debian/changelog: changelog + + -- nitishk Mon Jul 13 14:20:51 PDT 2015 diff --git a/common/debian/contrail-server-manager-cliff-client/debian/compat b/common/debian/contrail-server-manager-cliff-client/debian/compat new file mode 100644 index 000000000..45a4fb75d --- /dev/null +++ b/common/debian/contrail-server-manager-cliff-client/debian/compat @@ -0,0 +1 @@ +8 diff --git a/common/debian/contrail-server-manager-cliff-client/debian/control b/common/debian/contrail-server-manager-cliff-client/debian/control new file mode 100644 index 000000000..54862a893 --- /dev/null +++ b/common/debian/contrail-server-manager-cliff-client/debian/control @@ -0,0 +1,21 @@ +Source: contrail-server-manager-cliff-client +Maintainer: nitishk +Section: misc +Priority: optional +Standards-Version: 1.0 +Build-Depends: debhelper (>= 8) + +Package: contrail-server-manager-cliff-client +Architecture: all +Maintainer: nitishk +Depends: python, + python-pip, + python-cliff, + python-configparser, + python-pyparsing, + python-pbr, + python-six, + python-pycurl +Section: contrail-server-manager-cliff-client +Priority: extra +Description: Contrail Server Manager Cliff Client Package diff --git a/common/debian/contrail-server-manager-cliff-client/debian/copyright b/common/debian/contrail-server-manager-cliff-client/debian/copyright new file mode 100644 index 000000000..855c6c5c4 --- /dev/null +++ b/common/debian/contrail-server-manager-cliff-client/debian/copyright @@ -0,0 +1,5 @@ +Name: contrail-server-manager-cliff-client +Maintainer: nitishk +License: Commercial +Files: * + Copyright (c) 2015 Juniper Networks, Inc. All rights reserved. diff --git a/common/debian/contrail-server-manager-cliff-client/debian/postinst b/common/debian/contrail-server-manager-cliff-client/debian/postinst new file mode 100644 index 000000000..edb2ed988 --- /dev/null +++ b/common/debian/contrail-server-manager-cliff-client/debian/postinst @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + + +echo "running post install" + +/opt/contrail/bin/setup_server_manager_client.sh diff --git a/common/debian/contrail-server-manager-cliff-client/debian/rules b/common/debian/contrail-server-manager-cliff-client/debian/rules new file mode 100755 index 000000000..bc2fc3fca --- /dev/null +++ b/common/debian/contrail-server-manager-cliff-client/debian/rules @@ -0,0 +1,55 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +SPEC_DIR := $(shell pwd) +export SB_TOP := $(shell pwd | sed -re "s/\/build\/debian\/contrail-server-manager-cliff-client//g") +export BUILDTIME := $(shell date -u +%y%m%d%H%M) +export src_path := $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/ +export build_root := $(SB_TOP)/build/debian/contrail-server-manager-cliff-client/debian/contrail-server-manager-cliff-client +export _pyver := 2.7 +export _pysitepkg := /lib/python${_pyver}/site-packages +export python_sitelib := /usr/local/lib/python${_pyver}/dist-packages +export _contrailopt := /opt/contrail +__python ?= /usr/bin/python + +SRC_VER := $(shell cat $(SB_TOP)/controller/src/base/version.info) +CONTRAIL_SKU := $(shell cat $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/contrail_sku.txt) +BUILDTAG = +ifdef TAG +BUILDTAG = $(SRC_VER)-$(TAG) +else +BUILDTAG = $(SRC_VER)-$(BUILDTIME) +endif + +%: + dh $@ --tmpdir=${build_root} --destdir=${SB_TOP}/build/debian + +override_dh_auto_build: + cat debian/changelog.in | sed 's,BUILDTAG,$(BUILDTAG),g' > debian/changelog + rm -rf $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/dist + rm -rf $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/servermanagercli.egg-info + (cd $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/ && ${__python} setup.py sdist) + +override_dh_auto_install: + # Cleanup directories + rm -rf $(build_root) + mkdir -p $(build_root) + mkdir -p $(build_root)$(_contrailopt) + mkdir -p $(build_root)$(_contrailopt)/bin + # Install directories + install -d -m 755 $(build_root)$(_contrailopt) + install -d -m 755 $(build_root)$(_contrailopt)/bin + # Copy/install files + (cd $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/dist/ && tar zxf servermanagercli-$(BUILDTAG)-$(CONTRAIL_SKU).tar.gz) + (cd $(SB_TOP)/tools/contrail-server-manager/src/smgr_cliff_client/dist/servermanagercli-$(BUILDTAG)-$(CONTRAIL_SKU) && ${__python} setup.py install --root=$(build_root) --install-scripts ${_contrailopt}/bin/) +override_dh_shlibdeps: + +override_dh_usrlocal: + diff --git a/common/debian/contrail-server-manager-installer/debian/postinst b/common/debian/contrail-server-manager-installer/debian/postinst index 2d4077de7..535334be5 100644 --- a/common/debian/contrail-server-manager-installer/debian/postinst +++ b/common/debian/contrail-server-manager-installer/debian/postinst @@ -1,7 +1,6 @@ # Sample debian/rules that uses debhelper. #!/bin/sh set -e -cd /opt/contrail/contrail_server_manager/; echo "running post install" -tar -xvf contrail_server_manager_packages.tgz +tar -xvf /opt/contrail/contrail_server_manager/contrail_server_manager_packages.tgz -C /opt/contrail/contrail_server_manager/ diff --git a/common/debian/contrail-server-manager-installer/debian/preinst b/common/debian/contrail-server-manager-installer/debian/preinst new file mode 100644 index 000000000..b7d739013 --- /dev/null +++ b/common/debian/contrail-server-manager-installer/debian/preinst @@ -0,0 +1,6 @@ +# Sample debian/rules that uses debhelper. +#!/bin/sh +set -e + +echo "running pre install" +rm -rf /opt/contrail/contrail_server_manager/ diff --git a/common/debian/contrail-server-manager-installer/debian/prerm b/common/debian/contrail-server-manager-installer/debian/prerm new file mode 100644 index 000000000..76d8f17b1 --- /dev/null +++ b/common/debian/contrail-server-manager-installer/debian/prerm @@ -0,0 +1,6 @@ +# Sample debian/rules that uses debhelper. +#!/bin/sh +set -e + +echo "running pre rm" +rm -rf /opt/contrail/contrail_server_manager/ diff --git a/common/debian/contrail-server-manager-installer/debian/provision.sh b/common/debian/contrail-server-manager-installer/debian/provision.sh new file mode 100755 index 000000000..d1c6ca2a7 --- /dev/null +++ b/common/debian/contrail-server-manager-installer/debian/provision.sh @@ -0,0 +1,221 @@ +#!/bin/bash +set -e + +datetime_string=$(date +%Y_%m_%d__%H_%M_%S) +mkdir -p /var/log/contrail/install_logs/ +log_file=/var/log/contrail/install_logs/provision_$datetime_string.log +exec &> >(tee -a "$log_file") + +start_time=$(date +"%s") + +SOURCES_LIST="sources_list" +TESTBED="testbed.py" +DEFAULT_DOMAIN="" +CONTRAIL_PKG="" +INSTALL_SM_LITE="install_sm_lite" +CLEANUP_PUPPET_AGENT="" +NO_LOCAL_REPO=1 +LOCAL_REPO_DIR=/opt/contrail/contrail_local_repo +CLUSTER_ID="" +NO_SM_MON="" +NO_SM_WEBUI="" + +space=" " +arrow="---->" + +function usage() +{ + echo "Usage" + echo "" + echo "$0" + echo -e "\t-h --help" + echo -e "\t-c|--contrail-package " + echo -e "\t-t|--testbed " + echo -e "\t-d|--default-domain " + echo -e "\t-ni|--no-install-sm-lite" + echo -e "\t-cp|--cleanup-puppet-agent" + echo -e "\t-nr|--no-local-repo" + echo -e "\t-nm|--no-sm-mon" + echo -e "\t-nw|--no-sm-webui" + echo -e "\t-cid|--cluster-id " + echo "" +} + +if [ "$#" -eq 0 ]; then + usage + exit +fi + +while [[ $# > 0 ]] +do +key="$1" + +case $key in + -c|--contrail-package) + CONTRAIL_PKG="$2" + shift # past argument + ;; + -t|--testbed) + TESTBED="$2" + shift # past argument + ;; + -d|--default-domain) + DEFAULT_DOMAIN="$2" + shift # past argument + ;; + -nr|--no-local-repo) + NO_LOCAL_REPO=0 + ;; + -ni|--no-install-sm-lite) + INSTALL_SM_LITE="" + ;; + -nm|--no-sm-mon) + NO_SM_MON="--nosm-mon" + ;; + -nw|--no-sm-webui) + NO_SM_WEBUI="--nowebui" + ;; + -cp|--no-cleanup-puppet-agent) + CLEANUP_PUPPET_AGENT="cleanup_puppet_agent" + ;; + -cid|--cluster-id) + CLUSTER_ID="$2" + shift # past argument + ;; + -h|--help) + usage + exit + ;; + *) + # unknown option + echo "ERROR: unknown parameter $key" + usage + exit 1 + ;; +esac +shift # past argument or value +done + +if [ "$TESTBED" == "" ] || [ "$CONTRAIL_PKG" == "" ]; then + exit +fi + +function unmount_contrail_local_repo() +{ + echo "$arrow Removing contrail local repo - $LOCAL_REPO_DIR" + # Remove local repo dir + if [ -d $LOCAL_REPO_DIR ]; then + rm -rf $LOCAL_REPO_DIR + fi + + # Remove preference file + if [ -f /etc/apt/preferences.d/contrail_local_repo ]; then + rm -f /etc/apt/preferences.d/contrail_local_repo + fi + + set +e + grep "^deb file:$LOCAL_REPO_DIR ./" /etc/apt/sources.list + exit_status=$? + set -e + if [ $exit_status == 0 ]; then + sed -i "s#deb file:$LOCAL_REPO_DIR ./##g" /etc/apt/sources.list + apt-get update >> $log_file 2>&1 + fi +} + +function mount_contrail_local_repo() +{ + set -e + # check if package is available + if [ ! -f "$CONTRAIL_PKG" ]; then + echo "ERROR: $CONTRAIL_PKG : No Such file..." + exit 2 + fi + + # mount package and create local repo + echo "$space$arrow Creating local lepo -- $LOCAL_REPO_DIR" + set +e + grep "^deb file:$LOCAL_REPO_DIR ./" /etc/apt/sources.list + exit_status=$? + set -e + + if [ $exit_status != 0 ]; then + mkdir -p $LOCAL_REPO_DIR + dpkg -x $CONTRAIL_PKG $LOCAL_REPO_DIR >> $log_file 2>&1 + (cd $LOCAL_REPO_DIR && tar xfz opt/contrail/contrail_packages/*.tgz >> $log_file 2>&1) + (cd $LOCAL_REPO_DIR && DEBIAN_FRONTEND=noninteractive dpkg -i binutils_*.deb dpkg-dev_*.deb libdpkg-perl_*.deb make_*.deb patch_*.deb >> $log_file 2>&1) + (cd $LOCAL_REPO_DIR && dpkg-scanpackages . | gzip -9c > Packages.gz | >> $log_file 2>&1) + datetime_string=$(date +%Y_%m_%d__%H_%M_%S) + cp /etc/apt/sources.list /etc/apt/sources.list.contrail.$datetime_string + echo >> /etc/apt/sources.list + sed -i "1 i\deb file:$LOCAL_REPO_DIR ./" /etc/apt/sources.list + cp -v /opt/contrail/contrail_server_manager/contrail_local_preferences /etc/apt/preferences.d/contrail_local_repo >> $log_file 2>&1 + apt-get update >> $log_file 2>&1 + fi +} + +function cleanup_puppet_agent() +{ + set +e + apt-get -y --purge autoremove puppet puppet-common hiera >> $log_file 2>&1 + set -e +} + +if [ "$CLEANUP_PUPPET_AGENT" != "" ]; then + echo "$arrow Remove puppet agent, if it is present" + cleanup_puppet_agent +fi + +# Install sever manager +if [ "$INSTALL_SM_LITE" != "" ]; then + # Create a local repo from contrail-install packages + # so packages from this repo gets preferred + if [ $NO_LOCAL_REPO != 0 ]; then + echo "$arrow Provision contrail local repo" + mount_contrail_local_repo + LOCAL_REPO_MOUNTED=1 + fi + + echo "$arrow Install server manager without cobbler option" + pushd /opt/contrail/contrail_server_manager >> $log_file 2>&1 + ./setup.sh --all --smlite ${NO_SM_MON} ${NO_SM_WEBUI} + popd >> $log_file 2>&1 +fi + +echo "$space$arrow Convert testbed.py to server manager entities" +# Convert testbed.py to server manager object json files +optional_args="" +if [ ! -z "$CLUSTER_ID" ]; then + optional_args="--cluster-id $CLUSTER_ID" +fi +/opt/contrail/server_manager/client/testbed_parser.py --testbed ${TESTBED} --contrail-packages ${CONTRAIL_PKG} $optional_args + +echo "$arrow Pre provision checks to make sure setup is ready for contrail provisioning" +# Precheck the targets to make sure that, ready for contrail provisioning +SERVER_MGR_IP=$(grep listen_ip_addr /opt/contrail/server_manager/sm-config.ini | grep -Po "listen_ip_addr = \K.*") +/opt/contrail/server_manager/client/preconfig.py --server-json server.json --server-manager-ip ${SERVER_MGR_IP} + +# Remove contrail local repo if any +if [[ $LOCAL_REPO_MOUNTED -eq 1 ]]; then + unmount_contrail_local_repo +fi + +echo "$arrow Adding server manager objects to server manager database" +if [ "$DEFAULT_DOMAIN" != "" ] && [ -f /opt/contrail/server_manager/client/sm-client-config.ini ]; then + sed -i "s|domain =.*|domain = ${DEFAULT_DOMAIN}|g" /opt/contrail/server_manager/client/sm-client-config.ini +fi +# Create package, cluster, server objects +server-manager add image -f image.json +server-manager add cluster -f cluster.json +server-manager add server -f server.json + +echo "$arrow Provisioning the cluster" +# Provision the cluster +CONTRAIL_PKG_ID=$(python -c "import json; fid = open('image.json', 'r'); contents = fid.read(); cjson = json.loads(contents); print cjson['image'][0]['id']") +CLUSTER_ID=$(python -c "import json; fid = open('cluster.json', 'r'); data = json.load(fid); fid.close(); print data['cluster'][0]['id']") +server-manager provision -F --cluster_id $CLUSTER_ID ${CONTRAIL_PKG_ID} + +end_time=$(date +"%s") +diff=$(($end_time-$start_time)) +echo "$arrow Provisioning is issued, and took $(($diff / 60)) minutes and $(($diff % 60)) seconds." +echo "$arrow Check provisioning status using /opt/contrail/contrail_server_manager/provision_status.sh" diff --git a/common/debian/contrail-server-manager-installer/debian/provision_status.sh b/common/debian/contrail-server-manager-installer/debian/provision_status.sh new file mode 100755 index 000000000..0f9f717cf --- /dev/null +++ b/common/debian/contrail-server-manager-installer/debian/provision_status.sh @@ -0,0 +1,3 @@ +#!/bin/bash +server-manager show cluster --select provision_role_sequence +server-manager status server diff --git a/common/debian/contrail-server-manager-installer/debian/rules b/common/debian/contrail-server-manager-installer/debian/rules index 1996ad4e6..07e082bd9 100755 --- a/common/debian/contrail-server-manager-installer/debian/rules +++ b/common/debian/contrail-server-manager-installer/debian/rules @@ -12,6 +12,7 @@ SPEC_DIR := $(shell pwd) export SB_TOP := $(shell pwd | sed -re "s/\/build\/debian\/contrail-server-manager-installer//g") export BUILDTIME := $(shell date -u +%y%m%d%H%M) export DISTRIB_RELEASE = $(shell grep -Po "DISTRIB_RELEASE=\K.*" /etc/lsb-release) +export src_path := $(SB_TOP)/tools/contrail-server-manager/src/ export buildroot := $(SB_TOP)/build/debian/contrail-server-manager-installer/debian/contrail-server-manager-installer export _contrailopt := /opt/contrail @@ -31,10 +32,24 @@ ifdef FILE_LIST TGZ_FILE = $(FILE_LIST) endif +ifdef OS_VER +os_ver := $(echo $(_osVer) | sed 's,[-|.],,g') +else +os_ver := $(shell PYTHONPATH=$(PYTHONPATH):$(src_path)/../../../tools/packaging/tools/scripts/ python -c "import package_utils; print package_utils.get_platform()") +endif + +ifdef PKG_DIRS +pkg_sources := $(_pkgDirs) +else +pkg_sources := /cs-shared/builder/cache/$(os_ver)/server-manager/ +endif + ifndef SETUP_FILE SETUP_FILE := $(SB_TOP)/tools/packaging/build/deb_server_manager_setup.sh endif +provision_file_location := $(src_path)../../../tools/packaging/common/debian/contrail-server-manager-installer/debian + %: dh $@ --tmpdir=${buildroot} --destdir=${SB_TOP}/build/debian @@ -43,20 +58,24 @@ override_dh_auto_build: override_dh_auto_install: rm -rf $(buildroot) + mkdir -p $(buildroot)$(_contrailopt)/contrail_server_manager # Setup directories @echo "making deb for contrail-server-manager-installer" install -d -m 755 $(buildroot) install -d -m 755 $(buildroot)$(_contrailopt) install -d -m 755 $(buildroot)$(_contrailopt)/contrail_server_manager # Install files + install -p -m 755 $(src_path)../../../tools/packaging/build/contrail_local_preferences $(buildroot)$(_contrailopt)/contrail_server_manager/contrail_local_preferences install -p -m 755 $(SETUP_FILE) $(buildroot)$(_contrailopt)/contrail_server_manager/setup.sh + install -p -m 755 $(provision_file_location)/provision.sh $(buildroot)$(_contrailopt)/contrail_server_manager/provision.sh + install -p -m 755 $(provision_file_location)/provision_status.sh $(buildroot)$(_contrailopt)/contrail_server_manager/provision_status.sh install -p -m 755 $(SB_TOP)/tools/packaging/build/ubuntu_12_04_3_sources.list $(buildroot)$(_contrailopt)/contrail_server_manager/ubuntu_12_04_3_sources.list install -p -m 755 $(SB_TOP)/tools/packaging/build/ubuntu_14_04_1_sources.list $(buildroot)$(_contrailopt)/contrail_server_manager/ubuntu_14_04_1_sources.list - install -p -m 755 $(SB_TOP)/tools/packaging/build/puppetmaster $(buildroot)$(_contrailopt)/contrail_server_manager/puppetmaster install -p -m 755 $(SB_TOP)/tools/packaging/build/cobbler.conf $(buildroot)$(_contrailopt)/contrail_server_manager/cobbler.conf install -p -m 755 $(SB_TOP)/tools/packaging/build/cobbler_web.conf $(buildroot)$(_contrailopt)/contrail_server_manager/cobbler_web.conf install -p -m 755 $(SB_TOP)/tools/packaging/build/cobbler_14.conf $(buildroot)$(_contrailopt)/contrail_server_manager/cobbler_14.conf install -p -m 755 $(SB_TOP)/tools/packaging/build/cobbler_web_14.conf $(buildroot)$(_contrailopt)/contrail_server_manager/cobbler_web_14.conf + cp $(src_path)/puppet/puppet.conf $(buildroot)$(_contrailopt)/contrail_server_manager/puppet.conf # install TGZ file and packages list file if [ -f $(TGZ_FILE) ]; then echo "Using TGZ FILE = $(TGZ_FILE)"; install -p -m 644 $(TGZ_FILE) $(buildroot)$(_contrailopt)/contrail_server_manager/contrail_server_manager_packages.tgz; else echo "ERROR: TGZ file containing all debs is not supplied or not present"; echo "Supply Argument: FILE_LIST="; exit 1; fi override_dh_shlibdeps: diff --git a/common/debian/contrail-server-manager-lite/debian/changelog.in b/common/debian/contrail-server-manager-lite/debian/changelog.in new file mode 100755 index 000000000..b452bbf09 --- /dev/null +++ b/common/debian/contrail-server-manager-lite/debian/changelog.in @@ -0,0 +1,6 @@ +contrail-server-manager-lite (BUILDTAG) tsurendra; urgency=low + + [tsurendra ] + * debian/changelog: changelog + + -- tsurendra Wed Jun 11 17:39:50 PDT 2014 diff --git a/common/debian/contrail-server-manager-lite/debian/compat b/common/debian/contrail-server-manager-lite/debian/compat new file mode 100755 index 000000000..45a4fb75d --- /dev/null +++ b/common/debian/contrail-server-manager-lite/debian/compat @@ -0,0 +1 @@ +8 diff --git a/common/debian/contrail-server-manager-lite/debian/control b/common/debian/contrail-server-manager-lite/debian/control new file mode 100755 index 000000000..6f73516d0 --- /dev/null +++ b/common/debian/contrail-server-manager-lite/debian/control @@ -0,0 +1,14 @@ +Source: contrail-server-manager-lite +Maintainer: tsurendra +Section: misc +Priority: optional +Standards-Version: 1.0 +Build-Depends: debhelper (>= 8) + +Package: contrail-server-manager-lite +Architecture: all +Maintainer: tsurendra +Depends: python, apache2, sqlite, puppetmaster-passenger (=3.7.3-1puppetlabs1), puppetmaster-common (=3.7.3-1puppetlabs1), xinetd, python-pip, python-gevent, ntp,autoconf, gcc, tftp, sendmail, dpkg-dev, syslinux, ipmitool, createrepo, libapache2-mod-wsgi, python-urlgrabber, python-django, selinux-utils, python-simplejson, python-dev, fence-agents, python-requests, reprepro, python-netaddr, python-yaml, libnss3-1d +Section: contrail-server-manager-lite +Priority: extra +Description: Contrail Server Manager - Server Package, without cobbler, only provisioning supported package. diff --git a/common/debian/contrail-server-manager-lite/debian/copyright b/common/debian/contrail-server-manager-lite/debian/copyright new file mode 100755 index 000000000..7c7f0dbfe --- /dev/null +++ b/common/debian/contrail-server-manager-lite/debian/copyright @@ -0,0 +1,5 @@ +Name: contrail-server-manager-lite +Maintainer: tsurendra +License: Commercial +Files: * + Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. diff --git a/common/debian/contrail-server-manager-lite/debian/postinst b/common/debian/contrail-server-manager-lite/debian/postinst new file mode 100755 index 000000000..86673348e --- /dev/null +++ b/common/debian/contrail-server-manager-lite/debian/postinst @@ -0,0 +1,103 @@ +#!/bin/bash + +set -e + +echo "running post install" +HOST_IP_LIST=`ifconfig | sed -n -e 's/:127\.0\.0\.1 //g' -e 's/ *inet addr:\([0-9.]\+\).*/\1/gp'` +HOST_IP=`echo $HOST_IP_LIST | cut -d' ' -f1` +if [ -f /opt/contrail/contrail_server_manager/IP.txt ]; +then + HOST_IP=$(cat /opt/contrail/contrail_server_manager/IP.txt) +fi +echo $HOST_IP +rel=`lsb_release -r` + +cp -r /etc/contrail_smgr/puppet /etc/ + +cp /etc/contrail_smgr/smgr.conf /etc/apache2/sites-available/ + +cp -r /etc/contrail_smgr/kickstarts /var/www/html/ + +# Saving and replacing default NTP configuration (Server Manager node acts as NTP Server for Cluster) +cp /etc/contrail_smgr/sendmail.cf.sample /etc/mail/sendmail.cf +mv /etc/ntp.conf /etc/ntp.conf.default +cp /etc/contrail_smgr/ntp.conf.sample /etc/ntp.conf +chown -R puppet:puppet /var/log/contrail-server-manager/provision +easy_install argparse +easy_install paramiko +easy_install pycrypto +easy_install ordereddict +easy_install pycurl +pip install xmltodict + +# Copying the specific puppet conf files needed for provisioning: +cp /etc/contrail_smgr/puppet/auth.conf /etc/puppet/ +cp /etc/contrail_smgr/puppet/autosign.conf /etc/puppet/ +cp /etc/contrail_smgr/puppet/fileserver.conf /etc/puppet/ +cp /etc/contrail_smgr/puppet/hiera.yaml /etc/puppet/ +cp /etc/contrail_smgr/puppet/puppet.conf /etc/puppet/ +cp -r /etc/contrail_smgr/puppet/environments /etc/puppet/ + +if [[ "$rel" == *"14.04"* ]]; then + echo "Not seding files for 14.04" +else + a2enmod version + sed -i ':a;N;$!ba;s:DocumentRoot /var/www\n:DocumentRoot /var/www/html\n:g' /etc/apache2/sites-available/default + sed -i 's:::g' /etc/apache2/sites-available/default +fi + +update-rc.d contrail-server-manager defaults +#/sbin/chkconfig --add contrail-server-manager + +# Set IP address in server manager configuration file. +sed -i "s/__\$IPADDRESS__/$HOST_IP/g" /opt/contrail/server_manager/sm-config.ini +# Set IP Address in smgr_dhcp_event.py DHCP hook. +sed -i "s/__\$IPADDRESS__/$HOST_IP/g" /opt/contrail/server_manager/smgr_dhcp_event.py + +# Setting SM Lite config - No cobbler, no monitoring +set +e +sed -i "s/listen_ip_addr = .*/listen_ip_addr = $HOST_IP/g" /opt/contrail/server_manager/sm-config.ini +grep "cobbler * = " /opt/contrail/server_manager/sm-config.ini +if [ $? == 0 ]; then + sed -i "s/cobbler * = .*/cobbler = false/g" /opt/contrail/server_manager/sm-config.ini +else + sed -i "/listen_port*/acobbler = false" /opt/contrail/server_manager/sm-config.ini +fi +grep "monitoring * = " /opt/contrail/server_manager/sm-config.ini +if [ $? == 0 ]; then + sed -i "s/monitoring * = .*/monitoring = false/g" /opt/contrail/server_manager/sm-config.ini +else + sed -i "/listen_port*/amonitoring = false" /opt/contrail/server_manager/sm-config.ini +fi +# Adding server and Public DNS to /etc/resolv.conf if not present +grep "nameserver $HOST_IP" /etc/resolv.conf +if [ $? != 0 ]; then + echo "nameserver $HOST_IP" >> /etc/resolv.conf +fi +grep "nameserver 8.8.8.8" /etc/resolv.conf +if [ $? != 0 ]; then + echo "nameserver 8.8.8.8" >> /etc/resolv.conf +fi +set -e + +set +e +POSTFIX_CHECK=$(dpkg -l | grep postfix) +if [ "$INSTALLED" != "" ]; then + service postfix stop +fi +set -e +service sendmail restart + +pushd /var/www/html/thirdparty_packages +dpkg-scanpackages . | gzip -9c > Packages.gz +popd + +update-rc.d apache2 defaults +update-rc.d xinetd defaults + +a2ensite smgr.conf +a2dismod mpm_event +a2enmod mpm_worker + +service apache2 restart +service xinetd restart diff --git a/common/debian/contrail-server-manager-lite/debian/rules b/common/debian/contrail-server-manager-lite/debian/rules new file mode 100755 index 000000000..a2fb47ae4 --- /dev/null +++ b/common/debian/contrail-server-manager-lite/debian/rules @@ -0,0 +1,137 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 + +SPEC_DIR := $(shell pwd) +export SB_TOP := $(shell pwd | sed -re "s/\/build\/debian\/contrail-server-manager-lite//g") +export BUILDTIME := $(shell date -u +%y%m%d%H%M) +export src_path := $(SB_TOP)/tools/contrail-server-manager/src/ +#export src_path := /build/pmiriyala/r22_smlite_1/src/ +export build_root := $(SB_TOP)/build/debian/contrail-server-manager-lite/debian/contrail-server-manager-lite +#python_version := $(PYTHONPATH=$(PYTHONPATH):$(build_root)/../tools/packaging/tools/scripts/ python -c "import sys; print '%s.%s' % sys.version_info[0:2]") +#python_dir := python$(python_version) +python_version=$(shell python -c "import sys; print '%s.%s' % sys.version_info[0:2]") +python_dir=python$(python_version) +SRC_VER := $(shell cat $(SB_TOP)/controller/src/base/version.info) + +BUILDTAG = +ifdef TAG +BUILDTAG = $(SRC_VER)-$(TAG) +else +BUILDTAG = $(SRC_VER)-$(BUILDTIME) +endif + +ifdef OS_VER +os_ver := $(echo $(_osVer) | sed 's,[-|.],,g') +else +os_ver := $(shell PYTHONPATH=$(PYTHONPATH):$(src_path)/../../../tools/packaging/tools/scripts/ python -c "import package_utils; print package_utils.get_platform()") +endif + +ifdef PKG_FILE +pkg_file := $(_pkgFile) +else +pkg_file := $(src_path)/../../../tools/packaging/tools/scripts/server-manager-thirdparty +endif + +ifdef CENTOS_PKT_FILE +centos_pkg_file := $(_centosPkgFile) +else +centos_pkg_file := $(src_path)/../../../tools/packaging/tools/scripts/server-manager-centos +endif + +ifdef REDHAT_PKT_FILE +redhat_pkg_file := $(_redhatPkgFile) +else +redhat_pkg_file := $(src_path)/../../../tools/packaging/tools/scripts/server-manager-redhat +endif + +ifdef PKG_DIRS +pkg_sources := $(_pkgDirs) +else +pkg_sources := /cs-shared/builder/cache/$(os_ver)/server-manager/ +endif + + +%: + dh $@ --tmpdir=${build_root} --destdir=${SB_TOP}/build/debian + +override_dh_auto_build: + cat debian/changelog.in | sed 's,BUILDTAG,$(BUILDTAG),g' > debian/changelog + +override_dh_auto_install: + # Cleanup directories + rm -rf $(build_root) + + # Install directories + install -d -m 755 $(build_root) + install -d -m 755 $(build_root)/opt/contrail/server_manager/ + install -d -m 754 $(build_root)/etc/init.d/ + install -d -m 754 $(build_root)/etc/contrail_smgr/ + install -d -m 754 $(build_root)/etc/contrail_smgr/images/ + install -d -m 754 $(build_root)/etc/contrail_smgr/contrail-centos-repo/ + install -d -m 754 $(build_root)/etc/contrail_smgr/contrail-redhat-repo/ + install -d -m 754 $(build_root)/usr/sbin/ + install -d -m 755 $(build_root)/usr/lib/$(python_dir)/dist-packages/cobbler/modules/ + install -d -m 755 $(build_root)/opt/contrail/server_manager/reprepro/ + install -d -m 755 $(build_root)/opt/contrail/server_manager/reprepro/conf + install -d -m 755 $(build_root)/var/www/html/kickstarts/ + install -d -m 755 $(build_root)/var/www/html/contrail/ + install -d -m 755 $(build_root)/var/www/html/contrail/images/ + install -d -m 755 $(build_root)/var/www/html/contrail/config_file/ + install -d -m 755 $(build_root)/var/www/html/thirdparty_packages/ + install -d $(build_root)/var/log/contrail-server-manager/provision/ + install -d -m 755 $(build_root)/etc/mail/ + # Copy/install files + install -p -m 755 $(src_path)/reprepro/conf/distributions $(build_root)/opt/contrail/server_manager/reprepro/conf/distributions + install -p -m 755 $(src_path)/reprepro/conf/override $(build_root)/opt/contrail/server_manager/reprepro/conf/override + cp -r $(src_path)/server_mgr_main.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_db.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_cobbler.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_status.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_puppet.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_exception.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_logger.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_err.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/openstack_hieradata.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/smgr_dhcp_event.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/contrail_defaults.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_defaults.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/vmware/esxi_contrailvm.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_mon_base_plugin.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_ssh_client.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/server_mgr_validations.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/role_sequence.json $(build_root)/etc/contrail_smgr/ + + cp -r $(src_path)/third_party/bottle.py $(build_root)/opt/contrail/server_manager/ + cp -r $(src_path)/utils/send_mail.py $(build_root)/opt/contrail/server_manager/ + # Config files - Do not overwrite + install -p -m 755 $(src_path)/smgr.conf $(build_root)/etc/contrail_smgr/smgr.conf + install -p -m 755 $(src_path)/sm-config.ini $(build_root)/opt/contrail/server_manager/sm-config.ini + install -p -m 755 $(src_path)/tags.ini $(build_root)/opt/contrail/server_manager/tags.ini + install -p -m 755 $(src_path)/logger.conf $(build_root)/opt/contrail/server_manager/logger.conf + install -p -m 755 $(src_path)/utils/sendmail.cf.sample $(build_root)/etc/contrail_smgr/sendmail.cf.sample + install -p -m 755 $(src_path)/ntp.conf.sample $(build_root)/etc/contrail_smgr/ntp.conf.sample + cp -r $(src_path)/contrail-server-manager.u $(build_root)/etc/init.d/contrail-server-manager + cp -r $(src_path)/contrail-server-manager-lite.start.u $(build_root)/usr/sbin/contrail-server-manager + cp -r $(src_path)/puppet $(build_root)/etc/contrail_smgr/ + cp -r $(src_path)/kickstarts $(build_root)/etc/contrail_smgr/ + + $(src_path)/../../../tools/packaging/tools/scripts/copy_thirdparty_packages.py --package-file $(pkg_file) \ + --destination-dir $(build_root)/var/www/html/thirdparty_packages \ + --source-dirs $(pkg_sources) || (echo "Copying Built packages failed"; exit 1) + $(src_path)/../../../tools/packaging/tools/scripts/copy_thirdparty_packages.py --package-file $(centos_pkg_file) \ + --destination-dir $(build_root)/etc/contrail_smgr/contrail-centos-repo \ + --source-dirs $(pkg_sources) || (echo "Copying Built centos packages failed"; exit 1) + $(src_path)/../../../tools/packaging/tools/scripts/copy_thirdparty_packages.py --package-file $(redhat_pkg_file) \ + --destination-dir $(build_root)/etc/contrail_smgr/contrail-redhat-repo \ + --source-dirs $(pkg_sources) || (echo "Copying Built redhat packages failed"; exit 1) + +override_dh_shlibdeps: + +override_dh_usrlocal: diff --git a/common/debian/contrail-server-manager-monitoring/debian/postinst b/common/debian/contrail-server-manager-monitoring/debian/postinst index cd6e60ba7..e1fa2853b 100644 --- a/common/debian/contrail-server-manager-monitoring/debian/postinst +++ b/common/debian/contrail-server-manager-monitoring/debian/postinst @@ -12,4 +12,6 @@ then HOST_IP=$(cat /opt/contrail/contrail_server_manager/IP.txt) fi echo $HOST_IP -sed -i "s/127.0.0.1/$HOST_IP/g" /opt/contrail/server_manager/sm-monitoring-config.ini + +sed -i "s/127.0.0.1/$HOST_IP/g" /opt/contrail/server_manager/sm-sandesh-config.ini +sed -i "s/monitoring * = .*/monitoring = true/g" /opt/contrail/server_manager/sm-config.ini diff --git a/common/debian/contrail-server-manager-monitoring/debian/rules b/common/debian/contrail-server-manager-monitoring/debian/rules index c6e199da4..568ebaba0 100755 --- a/common/debian/contrail-server-manager-monitoring/debian/rules +++ b/common/debian/contrail-server-manager-monitoring/debian/rules @@ -36,7 +36,6 @@ override_dh_auto_build: override_dh_auto_install: mkdir -p ${_python_dist} rm -rf ${buildroot} - install -d -m 755 $(buildroot)$(_bindir) install -d -m 755 $(buildroot)/opt/contrail/server_manager/ scons -U install_contrail_sm_monitoring --root=${buildroot} @@ -44,7 +43,7 @@ override_dh_auto_install: cp -r $(src_path)/server_mgr_ipmi_monitoring.py $(buildroot)/opt/contrail/server_manager/ cp -r $(src_path)/server_mgr_inventory.py $(buildroot)/opt/contrail/server_manager/ cp -r $(src_path)/server_mgr_disk_filesystem_view.py $(buildroot)/opt/contrail/server_manager/ - cp -r $(src_path)/sm-monitoring-config.ini $(buildroot)/opt/contrail/server_manager/ - cp -r $(src_path)/sm-inventory-config.ini $(buildroot)/opt/contrail/server_manager/ - cp -r $(src_path)/sm-sandesh-config.ini $(buildroot)/opt/contrail/server_manager/ + install -p -m 755 $(src_path)/sm-monitoring-config.ini $(buildroot)/opt/contrail/server_manager/ + install -p -m 755 $(src_path)/sm-inventory-config.ini $(buildroot)/opt/contrail/server_manager/ + install -p -m 755 $(src_path)/sm-sandesh-config.ini $(buildroot)/opt/contrail/server_manager/ override_dh_shlibdeps: diff --git a/common/debian/contrail-server-manager/debian/control b/common/debian/contrail-server-manager/debian/control index 8442b7b86..7fcbc850f 100644 --- a/common/debian/contrail-server-manager/debian/control +++ b/common/debian/contrail-server-manager/debian/control @@ -8,7 +8,7 @@ Build-Depends: debhelper (>= 8) Package: contrail-server-manager Architecture: all Maintainer: tsurendra -Depends: python , apache2, sqlite, cobbler (>=2.6.3), puppetmaster (>=3.7.3), xinetd, python-pip, python-gevent, dhcp3-server, ntp,autoconf, gcc, bind9, tftp, sendmail, dpkg-dev, syslinux, ipmitool, createrepo, libapache2-mod-wsgi, python-urlgrabber, python-django, selinux-utils, python-simplejson, python-dev, fence-agents, python-requests, reprepro, python-netaddr +Depends: python , apache2, sqlite, cobbler (=2.6.3-1), puppetmaster-passenger (=3.7.3-1puppetlabs1), puppetmaster-common (=3.7.3-1puppetlabs1), xinetd, python-pip, python-gevent, dhcp3-server, ntp,autoconf, gcc, bind9, tftp, sendmail, dpkg-dev, syslinux, ipmitool, createrepo, libapache2-mod-wsgi, tftpd-hpa, python-urlgrabber, python-django, selinux-utils, python-simplejson, python-dev, fence-agents, python-requests, reprepro, python-netaddr Section: contrail-server-manager Priority: extra Description: Contrail Server Manager - Server Package diff --git a/common/debian/contrail-server-manager/debian/postinst b/common/debian/contrail-server-manager/debian/postinst index 38ae19c2c..9ce1be6f9 100644 --- a/common/debian/contrail-server-manager/debian/postinst +++ b/common/debian/contrail-server-manager/debian/postinst @@ -2,11 +2,33 @@ set -e - echo "running post install" +HOST_IP_LIST=`ifconfig | sed -n -e 's/:127\.0\.0\.1 //g' -e 's/ *inet addr:\([0-9.]\+\).*/\1/gp'` +HOST_IP=`echo $HOST_IP_LIST | cut -d' ' -f1` +if [ -f /opt/contrail/contrail_server_manager/IP.txt ]; +then + HOST_IP=$(cat /opt/contrail/contrail_server_manager/IP.txt) +fi +echo $HOST_IP +DOMAIN=`hostname -d` +rel=`lsb_release -r` -cp -r /etc/contrail_smgr/cobbler /etc/ -cp -r /etc/contrail_smgr/puppet /etc/ +# Stage I - Install required packages +easy_install argparse +easy_install paramiko +easy_install pycrypto +easy_install ordereddict +easy_install pycurl +pip install xmltodict + +# Stage 2: Copy config files into place + +# Copy cobbler pxesystem template file for esxi +mv /etc/cobbler/pxe/pxesystem_esxi.template /etc/cobbler/pxe/pxesystem_esxi.template-save +cp /etc/contrail_smgr/cobbler/pxesystem_esxi.template /etc/cobbler/pxe +# Copy cobbler boot.cfg template file for esxi5.5 +cp -f /etc/contrail_smgr/cobbler/bootcfg_esxi55.template /etc/cobbler/pxe +# Backup all the distro_signatures files if [ -f /etc/cobbler/distro_signatures.json ]; then mv /etc/cobbler/distro_signatures.json /etc/cobbler/distro_signatures.json-save fi @@ -15,107 +37,116 @@ if [ -f /var/lib/cobbler/distro_signatures.json ]; then fi cp /etc/contrail_smgr/cobbler/distro_signatures.json-esxi55 /etc/cobbler/distro_signatures.json cp /etc/contrail_smgr/cobbler/distro_signatures.json-esxi55 /var/lib/cobbler/distro_signatures.json -cd /etc/contrail_smgr/contrail-centos-repo -createrepo . -cd /etc/contrail_smgr/contrail-redhat-repo -createrepo . - -# Copy cobbler boot.cfg template file for esxi5.5 -cp -f /etc/contrail_smgr/cobbler/bootcfg_esxi55.template /etc/cobbler/pxe -# Copy cobbler pxesystem template file for esxi -mv /etc/cobbler/pxe/pxesystem_esxi.template /etc/cobbler/pxe/pxesystem_esxi.template-save -cp /etc/contrail_smgr/cobbler/pxesystem_esxi.template /etc/cobbler/pxe -#cp /etc/contrail_smgr/cobbler/dhcp.template.u /etc/cobbler/dhcp.template -cp /etc/contrail_smgr/cobbler/named.template.u /etc/cobbler/named.template -cp /etc/contrail_smgr/cobbler/named.conf.options.u /etc/bind/named.conf.options +cp /etc/contrail_smgr/smgr.conf /etc/apache2/sites-available/ -mkdir -p /var/www/html -mkdir -p /var/www/html/kickstarts cp -r /etc/contrail_smgr/kickstarts /var/www/html/ -mkdir -p /var/www/html/contrail -mkdir -p /var/www/html/contrail/config_file -mkdir -p /var/www/html/contrail/images -mkdir -p /var/log/contrail-server-manager -mkdir -p /etc/mail/ -cp /etc/contrail_smgr/sendmail.cf /etc/mail/ - -# Saving and replacing default NTP configuration (Server Manager node acts as NTP Server for Cluster) -mv /etc/ntp.conf /etc/ntp.conf.default -cp /etc/contrail_smgr/ntp.conf /etc/ntp.conf - -#cp /usr/bin/server_manager/dhcp.template /etc/cobbler/ -#cp -r /usr/bin/server_manager/kickstarts /var/www/html/ -mkdir -p /var/www/html/contrail -mkdir -p /var/www/html/thirdparty_packages - -cp -u /etc/puppet/puppet_init_rd /srv/www/cobbler/aux/puppet -easy_install argparse -easy_install paramiko -easy_install pycrypto -easy_install ordereddict - -mkdir -p /etc/contrail_smgr/images/ +#cp /etc/contrail_smgr/sendmail.cf /etc/mail/ +#mv /etc/ntp.conf /etc/ntp.conf.default +#cp /etc/contrail_smgr/ntp.conf /etc/ntp.conf +chown -R puppet:puppet /var/log/contrail-server-manager/provision +# Copying the specific puppet conf files needed for provisioning: +cp /etc/contrail_smgr/puppet/auth.conf /etc/puppet/ +cp /etc/contrail_smgr/puppet/autosign.conf /etc/puppet/ +cp /etc/contrail_smgr/puppet/fileserver.conf /etc/puppet/ +cp /etc/contrail_smgr/puppet/hiera.yaml /etc/puppet/ +cp /etc/contrail_smgr/puppet/puppet.conf /etc/puppet/ +cp -r /etc/contrail_smgr/puppet/environments /etc/puppet/ +cp -u /etc/contrail_smgr/puppet/puppet_init_rd /srv/www/cobbler/aux/puppet + +# Stage 3 : Setting configs manually +# Adding server and Public DNS to /etc/resolv.conf if not present +set +e +grep "nameserver $HOST_IP" /etc/resolv.conf +if [ $? != 0 ]; then + echo "nameserver $HOST_IP" >> /etc/resolv.conf +fi +grep "nameserver 8.8.8.8" /etc/resolv.conf +if [ $? != 0 ]; then + echo "nameserver 8.8.8.8" >> /etc/resolv.conf +fi sed -i 's/puppet_auto_setup: 0/puppet_auto_setup: 1/g' /etc/cobbler/settings sed -i 's/sign_puppet_certs_automatically: 0/sign_puppet_certs_automatically: 1/g' /etc/cobbler/settings - sed -i 's/remove_old_puppet_certs_automatically: 0/remove_old_puppet_certs_automatically: 1/g' /etc/cobbler/settings sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings sed -i 's/manage_dns: 0/manage_dns: 1/g' /etc/cobbler/settings +sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings sed -i 's|webdir: /var/www/cobbler|webdir: /srv/www/cobbler|g' /etc/cobbler/settings -rel=`lsb_release -r` +# Set IP address in cobbler settings file +sed -i "s/__\$IPADDRESS__/$HOST_IP/g" /etc/cobbler/settings +sed -i "s/bind_master:.*/bind_master: $HOST_IP/g" /etc/cobbler/settings +sed -i "s/next_server:.*/next_server: $HOST_IP/g" /etc/cobbler/settings +sed -i "s/server:.*/server: $HOST_IP/g" /etc/cobbler/settings +sed -i "s/module = authn_.*/module = authn_testing/g" /etc/cobbler/modules.conf + +set -e + if [[ "$rel" == *"14.04"* ]]; then - echo "Not seding files for 14.04" + + # Cobbler config for 14.04 + mkdir -p /etc/apache2/conf-available/ + cp /opt/contrail/contrail_server_manager/cobbler_14.conf /etc/apache2/conf.d/cobbler.conf + cp /opt/contrail/contrail_server_manager/cobbler_web_14.conf /etc/apache2/conf.d/cobbler_web.conf + cp /opt/contrail/contrail_server_manager/cobbler_14.conf /etc/cobbler/cobbler.conf + cp /opt/contrail/contrail_server_manager/cobbler_web_14.conf /etc/cobbler/cobbler_web.conf + cp /etc/apache2/conf.d/cobbler.conf /etc/apache2/conf-available/ + cp /etc/apache2/conf.d/cobbler_web.conf /etc/apache2/conf-available/ + a2enconf cobbler cobbler_web + cp -r /srv/www/cobbler /var/www/cobbler + cp -r /srv/www/cobbler_webui_content /var/www/cobbler_webui_content + chmod 777 /var/lib/cobbler/webui_sessions/ + # The secret key file can be brought in by SM install - only need to sed the key into settings.py as below + SECRET_KEY=$(python -c 'import re;from random import choice; import sys; sys.stdout.write(re.escape("".join([choice("abcdefghijklmnopqrstuvwxyz0123456789^&*(-_=+)") for i in range(100)])))') + sed -i "s/^SECRET_KEY = .*/SECRET_KEY = '${SECRET_KEY}'/" /usr/share/cobbler/web/settings.py else - sed -i ':a;N;$!ba;s:DocumentRoot /var/www\n:DocumentRoot /var/www/html\n:g' /etc/apache2/sites-available/default - sed -i 's:::g' /etc/apache2/sites-available/default + sed -i ':a;N;$!ba;s:DocumentRoot /var/www\n:DocumentRoot /var/www/html\n:g' /etc/apache2/sites-available/default + sed -i 's:::g' /etc/apache2/sites-available/default + + # Cobbler config for 12.04 + a2enmod version + setenforce 0 + cp -r /srv/www/cobbler /var/www/cobbler + cp -r /srv/www/cobbler_webui_content /var/www/cobbler_webui_content + cp /opt/contrail/contrail_server_manager/cobbler.conf /etc/apache2/conf.d/ + cp /opt/contrail/contrail_server_manager/cobbler_web.conf /etc/apache2/conf.d/ + cp /opt/contrail/contrail_server_manager/cobbler.conf /etc/cobbler/ + cp /opt/contrail/contrail_server_manager/cobbler_web.conf /etc/cobbler/ + sed -i "s/django.conf.urls /django.conf.urls.defaults /g" /usr/share/cobbler/web/cobbler_web/urls.py + chmod 777 /var/lib/cobbler/webui_sessions/ fi +a2ensite smgr.conf +a2enmod proxy +a2enmod proxy_http +a2enmod wsgi +a2dismod mpm_event +a2enmod mpm_worker -HOST_IP_LIST=`ifconfig | sed -n -e 's/:127\.0\.0\.1 //g' -e 's/ *inet addr:\([0-9.]\+\).*/\1/gp'` -HOST_IP=`echo $HOST_IP_LIST | cut -d' ' -f1` -if [ -f /opt/contrail/contrail_server_manager/IP.txt ]; -then - HOST_IP=$(cat /opt/contrail/contrail_server_manager/IP.txt) -fi -echo $HOST_IP - -# Set IP address in cobbler settings file -sed -i "s/__\$IPADDRESS__/$HOST_IP/" /etc/cobbler/settings update-rc.d contrail-server-manager defaults -#/sbin/chkconfig --add contrail-server-manager -sed -i "s/module = authn_.*/module = authn_testing/g" /etc/cobbler/modules.conf - # Set IP address in server manager configuration file. sed -i "s/__\$IPADDRESS__/$HOST_IP/g" /opt/contrail/server_manager/sm-config.ini - # Set IP Address in smgr_dhcp_event.py DHCP hook. sed -i "s/__\$IPADDRESS__/$HOST_IP/g" /opt/contrail/server_manager/smgr_dhcp_event.py - sed -i "s/cobbler_username = cobbler/cobbler_username = testing/g" /opt/contrail/server_manager/sm-config.ini sed -i "s/cobbler_password = cobbler/cobbler_password = testing/g" /opt/contrail/server_manager/sm-config.ini #sed -i 's:"/var/named":"/var/cache/bind":g' /etc/cobbler/named.template #sed -i 's:/var/named/data:/var/cache/bind:g' /etc/cobbler/named.template #sed -i 's:data/named.run:named.run:g' /etc/cobbler/named.template -service apache2 restart -service xinetd restart -service cobblerd restart - -POSTFIX_CHECK=$(dpkg -l \grep postfix) +set +e +POSTFIX_CHECK=$(dpkg -l | grep postfix) if [ "$INSTALLED" != "" ]; then service postfix stop fi +set -e service sendmail restart -#chkconfig apache2 on -#chkconfig puppetmaster on -#chkconfig contrail_smgrd on - -cd /var/www/html/thirdparty_packages +pushd /var/www/html/thirdparty_packages dpkg-scanpackages . | gzip -9c > Packages.gz - +popd update-rc.d apache2 defaults update-rc.d xinetd defaults update-rc.d cobblerd defaults -update-rc.d puppetmaster defaults +service apache2 restart +service xinetd restart +service cobblerd restart diff --git a/common/debian/contrail-server-manager/debian/rules b/common/debian/contrail-server-manager/debian/rules index f37fbe259..45613c4a4 100755 --- a/common/debian/contrail-server-manager/debian/rules +++ b/common/debian/contrail-server-manager/debian/rules @@ -72,6 +72,7 @@ override_dh_auto_install: install -d -m 755 $(build_root)/opt/contrail/server_manager/ install -d -m 754 $(build_root)/etc/init.d/ install -d -m 754 $(build_root)/etc/contrail_smgr/ + install -d -m 754 $(build_root)/etc/contrail_smgr/images/ install -d -m 754 $(build_root)/etc/contrail_smgr/contrail-centos-repo/ install -d -m 754 $(build_root)/etc/contrail_smgr/contrail-redhat-repo/ install -d -m 754 $(build_root)/usr/sbin/ @@ -82,6 +83,14 @@ override_dh_auto_install: # Copy/install files install -p -m 755 $(src_path)/reprepro/conf/distributions $(build_root)/opt/contrail/server_manager/reprepro/conf/distributions install -p -m 755 $(src_path)/reprepro/conf/override $(build_root)/opt/contrail/server_manager/reprepro/conf/override + install -d -m 755 $(build_root)/var/www/html/kickstarts/ + install -d -m 755 $(build_root)/var/www/html/contrail/ + install -d -m 755 $(build_root)/var/www/html/contrail/images/ + install -d -m 755 $(build_root)/var/www/html/contrail/config_file/ + install -d -m 755 $(build_root)/var/www/html/thirdparty_packages/ + install -d $(build_root)/var/log/contrail-server-manager/provision/ + install -d -m 755 $(build_root)/etc/mail/ + # Copy/install files - Python scripts cp -r $(src_path)/server_mgr_main.py $(build_root)/opt/contrail/server_manager/ cp -r $(src_path)/server_mgr_db.py $(build_root)/opt/contrail/server_manager/ cp -r $(src_path)/server_mgr_cobbler.py $(build_root)/opt/contrail/server_manager/ @@ -99,20 +108,21 @@ override_dh_auto_install: cp -r $(src_path)/server_mgr_ssh_client.py $(build_root)/opt/contrail/server_manager/ cp -r $(src_path)/server_mgr_validations.py $(build_root)/opt/contrail/server_manager/ cp -r $(src_path)/role_sequence.json $(build_root)/etc/contrail_smgr/ - cp -r $(src_path)/third_party/bottle.py $(build_root)/opt/contrail/server_manager/ cp -r $(src_path)/utils/send_mail.py $(build_root)/opt/contrail/server_manager/ cp -r $(src_path)/third_party/server_post_install.py $(build_root)/usr/lib/$(python_dir)/dist-packages/cobbler/modules/ cp -r $(src_path)/third_party/server_pre_install.py $(build_root)/usr/lib/$(python_dir)/dist-packages/cobbler/modules/ - cp -r $(src_path)/sm-config.ini $(build_root)/opt/contrail/server_manager/ - cp -r $(src_path)/tags.ini $(build_root)/etc/contrail_smgr/ - cp -r $(src_path)/logger.conf $(build_root)/opt/contrail/server_manager/ + # Config files - Do not overwrite + install -p -m 755 $(src_path)/smgr.conf $(build_root)/etc/contrail_smgr/smgr.conf + install -p -m 755 $(src_path)/sm-config.ini $(build_root)/opt/contrail/server_manager/sm-config.ini + install -p -m 755 $(src_path)/tags.ini $(build_root)/opt/contrail/server_manager/tags.ini + install -p -m 755 $(src_path)/logger.conf $(build_root)/opt/contrail/server_manager/logger.conf + install -p -m 755 $(src_path)/utils/sendmail.cf.sample $(build_root)/etc/contrail_smgr/sendmail.cf.sample + install -p -m 755 $(src_path)/ntp.conf.sample $(build_root)/etc/contrail_smgr/ntp.conf.sample + cp -r $(src_path)/contrail-server-manager.u $(build_root)/etc/init.d/contrail-server-manager cp -r $(src_path)/contrail-server-manager.start.u $(build_root)/usr/sbin/contrail-server-manager - cp -r $(src_path)/utils/sendmail.cf $(build_root)/etc/contrail_smgr/ - cp -r $(src_path)/ntp.conf $(build_root)/etc/contrail_smgr/ - cp -r $(src_path)/puppet $(build_root)/etc/contrail_smgr/ cp -r $(src_path)/cobbler $(build_root)/etc/contrail_smgr/ cp -r $(src_path)/kickstarts $(build_root)/etc/contrail_smgr/ @@ -120,11 +130,9 @@ override_dh_auto_install: $(src_path)/../../../tools/packaging/tools/scripts/copy_thirdparty_packages.py --package-file $(pkg_file) \ --destination-dir $(build_root)/var/www/html/thirdparty_packages \ --source-dirs $(pkg_sources) || (echo "Copying Built packages failed"; exit 1) - $(src_path)/../../../tools/packaging/tools/scripts/copy_thirdparty_packages.py --package-file $(centos_pkg_file) \ --destination-dir $(build_root)/etc/contrail_smgr/contrail-centos-repo \ --source-dirs $(pkg_sources) || (echo "Copying Built centos packages failed"; exit 1) - $(src_path)/../../../tools/packaging/tools/scripts/copy_thirdparty_packages.py --package-file $(redhat_pkg_file) \ --destination-dir $(build_root)/etc/contrail_smgr/contrail-redhat-repo \ --source-dirs $(pkg_sources) || (echo "Copying Built redhat packages failed"; exit 1) diff --git a/common/debian/contrail-web-server-manager/debian/postinst b/common/debian/contrail-web-server-manager/debian/postinst index 27ae32524..dd60c9460 100644 --- a/common/debian/contrail-web-server-manager/debian/postinst +++ b/common/debian/contrail-web-server-manager/debian/postinst @@ -1,8 +1,139 @@ -#!/bin/sh +#!/bin/bash set -e - echo "running post install" +HOST_IP_LIST=`ifconfig | sed -n -e 's/:127\.0\.0\.1 //g' -e 's/ *inet addr:\([0-9.]\+\).*/\1/gp'` +HOSTIP=`echo $HOST_IP_LIST | cut -d' ' -f1` +if [ -f /opt/contrail/contrail_server_manager/IP.txt ]; +then + HOSTIP=$(cat /opt/contrail/contrail_server_manager/IP.txt) +fi mkdir -p /var/log/contrail/ + +# Newly added from setup.sh +# Modify webui config file +WEBUI_CONF_FILE=/etc/contrail/config.global.sm.js +SM_CONF_FILE=/usr/src/contrail/contrail-web-server-manager/webroot/common/api/sm.config.js +WEBUI_PATH=/usr/src/contrail/contrail-web-server-manager +WEBUI_STORAGE_PATH=/usr/src/contrail/contrail-web-storage +WEBUI_WEBCONTROLLER_PATH=/usr/src/contrail/contrail-web-controller +WEBUI_STORAGE_PATH=/usr/src/contrail/contrail-web-storage + +set +e +grep "config.featurePkg" $WEBUI_CONF_FILE +if [ $? != 0 ]; then + echo "config.featurePkg = {};" >> $WEBUI_CONF_FILE + echo "config.featurePkg.serverManager = {};" >> $WEBUI_CONF_FILE +fi +grep "config.featurePkg.serverManager" $WEBUI_CONF_FILE +if [ $? != 0 ]; then + echo "config.featurePkg.serverManager = {};" >> $WEBUI_CONF_FILE +fi +grep "config.featurePkg.serverManager.path" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s|config.featurePkg.serverManager.path = .*|config.featurePkg.serverManager.path = '$WEBUI_PATH';|g" $WEBUI_CONF_FILE +else + echo "config.featurePkg.serverManager.path = '$WEBUI_PATH';" >> $WEBUI_CONF_FILE +fi +grep "config.featurePkg.serverManager.enable" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.featurePkg.serverManager.enable = .*/config.featurePkg.serverManager.enable = true;/g" $WEBUI_CONF_FILE +else + echo "config.featurePkg.serverManager.enable = true;" >> $WEBUI_CONF_FILE +fi + +grep "config.featurePkg.webController = {};" $WEBUI_CONF_FILE +if [ $? != 0 ]; then + echo "config.featurePkg.webController = {};" >> $WEBUI_CONF_FILE +fi +grep "config.featurePkg.webController.path" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s|config.featurePkg.webController.path = .*|config.featurePkg.webController.path = '$WEBUI_WEBCONTROLLER_PATH';|g" $WEBUI_CONF_FILE +else + echo "config.featurePkg.webController.path = '$WEBUI_WEBCONTROLLER_PATH';" >> $WEBUI_CONF_FILE +fi +grep "config.featurePkg.webController.enable" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.featurePkg.webController.enable = .*/config.featurePkg.webController.enable = false;/g" $WEBUI_CONF_FILE +else + echo "config.featurePkg.webController.enable = false;" >> $WEBUI_CONF_FILE +fi + +grep "config.featurePkg.webStorage = {};" $WEBUI_CONF_FILE +if [ $? != 0 ]; then + echo "config.featurePkg.webStorage = {};" >> $WEBUI_CONF_FILE +fi +grep "config.featurePkg.webStorage.path" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s|config.featurePkg.webStorage.path = .*|config.featurePkg.webStorage.path = '$WEBUI_STORAGE_PATH';|g" $WEBUI_CONF_FILE +else + echo "config.featurePkg.webStorage.path = '$WEBUI_STORAGE_PATH';" >> $WEBUI_CONF_FILE +fi +grep "config.featurePkg.webStorage.enable" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.featurePkg.webStorage.enable = .*/config.featurePkg.webStorage.enable = false;/g" $WEBUI_CONF_FILE +else + echo "config.featurePkg.webStorage.enable = false;" >> $WEBUI_CONF_FILE +fi + +grep "config.orchestration" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.orchestration = .*/config.orchestration = {};/g" $WEBUI_CONF_FILE +else + echo "config.orchestration = {};" >> $WEBUI_CONF_FILE +fi +grep "config.orchestration.Manager" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.orchestration.Manager = .*/config.orchestration.Manager = 'none'/g" $WEBUI_CONF_FILE +else + echo "config.orchestration.Manager = 'none';" >> $WEBUI_CONF_FILE +fi +grep "config.discoveryService" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.discoveryService = .*/config.discoveryService = {};/g" $WEBUI_CONF_FILE +else + echo "config.discoveryService = {};" >> $WEBUI_CONF_FILE +fi +grep "config.discoveryService.enable" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.discoveryService.enable = .*/config.discoveryService.enable = false;/g" $WEBUI_CONF_FILE +else + echo "config.discoveryService.enable = false;" >> $WEBUI_CONF_FILE +fi +grep "config.multi_tenancy" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.multi_tenancy = .*/config.multi_tenancy = {};/g" $WEBUI_CONF_FILE +else + echo "config.multi_tenancy = {};" >> $WEBUI_CONF_FILE +fi +grep "config.multi_tenancy.enabled" $WEBUI_CONF_FILE +if [ $? == 0 ]; then + sed -i "s/config.multi_tenancy.enabled = .*/config.multi_tenancy.enabled = false;/g" $WEBUI_CONF_FILE +else + echo "config.multi_tenancy.enabled = false;" >> $WEBUI_CONF_FILE +fi + +sed -i "s|module.exports =.*|module.exports = config;|g" $WEBUI_CONF_FILE +sed -i "s/config.featurePkg.webController.enable = .*/config.featurePkg.webController.enable = false;/g" $WEBUI_CONF_FILE +sed -i "s/config.featurePkg.webStorage.enable = .*/config.featurePkg.webStorage.enable = false;/g" $WEBUI_CONF_FILE + +sed -i "s/config.http_port = .*/config.http_port = '8145';/g" $WEBUI_CONF_FILE +sed -i "s/config.https_port = .*/config.https_port = '5901';/g" $WEBUI_CONF_FILE +sed -i "s/config.jobServer.server_port = .*/config.jobServer.server_port = '3004';/g" $WEBUI_CONF_FILE +sed -i "s/config.kue.ui_port = .*/config.kue.ui_port = '3006'/g" $WEBUI_CONF_FILE + + +sed -i "s/smConfig.sm.server_ip = .*/smConfig.sm.server_ip = '$HOSTIP';/g" $SM_CONF_FILE +sed -i "s/smConfig.sm.server_port = .*/smConfig.sm.server_port = 9001;/g" $SM_CONF_FILE +sed -i "s/smConfig.sm.introspect_ip = .*/smConfig.sm.introspect_ip = '$HOSTIP';/g" $SM_CONF_FILE +sed -i "s/smConfig.sm.introspect_port = .*/smConfig.sm.introspect_port = 8106;/g" $SM_CONF_FILE +set -e + +# start redis & supervisord +service redis-server restart +service supervisor restart + +# start webui +service supervisor-webui-sm restart