From 45c6b6120bef0ca0d940af7389adc863acd7c35a Mon Sep 17 00:00:00 2001 From: Prasad Miriyala Date: Tue, 25 Aug 2015 11:27:47 -0700 Subject: [PATCH] Squashed commit of all changes merged from R2.22-dev to master Patch Set 3 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 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 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 updates for sm-lite packages - use interface_setup.py from client package Closes-Bug: 1490779 Change-Id: I6b9b17d3113e58624d64d665af99b75d26614675 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 Partial-Bug: #1488259 smlite changes for packaging changes -Set correct permission for provision log dir. Change-Id: I94bae0af87936e2d805b3765347128330c01f5e9 Closes-Bug: #1491183, Move debugs to a log file for provision script Change-Id: Ib21b9fb01af5479e85d0b6061375313b0480d33c Partial-Bug: #1488259 Corrected typo in earlier checkin (https://review.opencontrail.org/#/c/13498/). Change-Id: Ib76be37fdc479857454bfdc2e4b943ac0ca162e5 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 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 Closes-bug: #1494017, Modify postinstall to use the new configuration changes to support server manager lite Change-Id: Idfef75d06ac533507736cb9b86fab141ced57d50 --- build/contrail_local_preferences | 7 + build/deb_server_manager_setup.sh | 794 ++++++------------ .../contrail_server_manager_packages.cfg | 5 + .../contrail_server_manager_packages.cfg | 5 + .../contrail_server_manager_packages.cfg | 5 + .../juno/contrail_server_manager_packages.cfg | 5 + common/debian/Makefile | 9 + .../debian/postinst | 1 + .../debian/rules | 3 +- .../debian/postinst | 3 +- .../debian/postrm | 6 + .../debian/preinst | 6 + .../debian/provision.sh | 202 +++++ .../debian/provision_status.sh | 3 + .../debian/rules | 20 +- .../debian/changelog.in | 6 + .../debian/compat | 1 + .../debian/control | 14 + .../debian/copyright | 5 + .../debian/postinst | 101 +++ .../contrail-server-manager-lite/debian/rules | 137 +++ .../debian/postinst | 4 +- .../debian/rules | 7 +- .../contrail-server-manager/debian/control | 2 +- .../contrail-server-manager/debian/postinst | 178 ++-- .../contrail-server-manager/debian/rules | 31 +- .../debian/postinst | 135 ++- 27 files changed, 1053 insertions(+), 642 deletions(-) create mode 100755 build/contrail_local_preferences create mode 100644 common/debian/contrail-server-manager-installer/debian/postrm create mode 100644 common/debian/contrail-server-manager-installer/debian/preinst 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 6a18ed969..342d68761 100644 --- a/build/deb_server_manager_setup.sh +++ b/build/deb_server_manager_setup.sh @@ -1,44 +1,144 @@ #!/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="" 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 "--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 +150,45 @@ 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" + 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" ;; --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,559 +199,150 @@ 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 + 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 - 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 - 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 -} - -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 + 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 + 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 + 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 - HOSTNAME=`hostname` - grep "$HOSTIP " /etc/hosts - if [ $? != 0 ]; then - if [ "$DOMAIN" != "" ]; then - sed -i "1s#^#${HOSTIP} ${HOSTNAME} ${HOSTNAME}.${DOMAIN}\n#g" /etc/hosts + 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 - sed -i "1s#^#${HOSTIP} ${HOSTNAME}\n#g" /etc/hosts + 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 - grep "$HOSTIP .*$HOSTNAME.*" /etc/hosts - if [ $? != 0 ]; then - if [ "$DOMAIN" != "" ]; then - sed -i "/^${HOSTIP}/ s/$/ ${HOSTNAME} ${HOSTNAME}.${DOMAIN}/g" /etc/hosts - else - sed -i "/^${HOSTIP}/ s/$/ ${HOSTNAME}/g" /etc/hosts - fi - fi - if [ "$DOMAIN" != "" ]; then - grep "$HOSTIP .*$HOSTNAME\.$DOMAIN.*" /etc/hosts - if [ $? != 0 ]; then - sed -i "/^${HOSTIP}/ s/$/ ${HOSTNAME}.${DOMAIN}/g" /etc/hosts - fi + 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 - 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 - fi - 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 [ "$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..6ba7520e7 100644 --- a/build/package_configs/ubuntu1404/icehouse/contrail_server_manager_packages.cfg +++ b/build/package_configs/ubuntu1404/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/juno/contrail_server_manager_packages.cfg b/build/package_configs/ubuntu1404/juno/contrail_server_manager_packages.cfg index 538055046..6ba7520e7 100644 --- a/build/package_configs/ubuntu1404/juno/contrail_server_manager_packages.cfg +++ b/build/package_configs/ubuntu1404/juno/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/common/debian/Makefile b/common/debian/Makefile index bc0889223..fe8a36d9c 100644 --- a/common/debian/Makefile +++ b/common/debian/Makefile @@ -138,6 +138,7 @@ all_vmware: ${PACKAGES_VMWARE} @echo "Build complete" server-manager-all: contrail-server-manager-deb \ + contrail-server-manager-lite-deb \ contrail-server-manager-client-deb \ contrail-server-manager-monitoring-deb \ contrail-server-manager-installer-deb @@ -270,6 +271,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} 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..877a3044d 100755 --- a/common/debian/contrail-server-manager-client/debian/rules +++ b/common/debian/contrail-server-manager-client/debian/rules @@ -41,7 +41,8 @@ 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 override_dh_shlibdeps: 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/postrm b/common/debian/contrail-server-manager-installer/debian/postrm new file mode 100644 index 000000000..c4c1f55af --- /dev/null +++ b/common/debian/contrail-server-manager-installer/debian/postrm @@ -0,0 +1,6 @@ +# Sample debian/rules that uses debhelper. +#!/bin/sh +set -e + +echo "running post rm" +rm -rf /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/provision.sh b/common/debian/contrail-server-manager-installer/debian/provision.sh new file mode 100755 index 000000000..a790d5a65 --- /dev/null +++ b/common/debian/contrail-server-manager-installer/debian/provision.sh @@ -0,0 +1,202 @@ +#!/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" +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="" + +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-ni|--no-install-sm-lite" + echo -e "\t-cp|--cleanup-puppet-agent" + echo -e "\t-nr|--no-local-repo" + 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 + ;; + -nr|--no-local-repo) + NO_LOCAL_REPO=0 + ;; + -ni|--no-install-sm-lite) + INSTALL_SM_LITE="" + ;; + -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 --nowebui --nosm-mon + 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" +# 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..b3ffb92e0 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 @@ -49,14 +64,17 @@ override_dh_auto_install: 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 + # 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..bc4b6faa5 --- /dev/null +++ b/common/debian/contrail-server-manager-lite/debian/postinst @@ -0,0 +1,101 @@ +#!/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 + +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 7297ea428..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 +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 8da121999..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,108 +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 -m 777 -p /var/log/contrail-server-manager/provision -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 85aa77b41..45613c4a4 100755 --- a/common/debian/contrail-server-manager/debian/rules +++ b/common/debian/contrail-server-manager/debian/rules @@ -72,11 +72,25 @@ 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/ 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 + # 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/ @@ -94,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/ @@ -115,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