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