From 1d663359337b4c5074bb5605851fce0c73ea4445 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Tue, 29 Dec 2009 16:32:29 -0200 Subject: New management scripts --- manifests/init.pp | 22 ++++++++++-- templates/drupal-deploy.sh.erb | 20 +++++++++++ templates/drupal-update.sh | 24 +++++++++++++ templates/drupal-upgrade.sh.erb | 74 +++++++++++++++++++++++++++++++++++++++++ templates/drush-update.sh.erb | 24 ------------- 5 files changed, 138 insertions(+), 26 deletions(-) create mode 100644 templates/drupal-deploy.sh.erb create mode 100644 templates/drupal-update.sh create mode 100644 templates/drupal-upgrade.sh.erb delete mode 100644 templates/drush-update.sh.erb diff --git a/manifests/init.pp b/manifests/init.pp index 8c928ff..a501b0c 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -9,12 +9,30 @@ class drupal inherits pear { ensure => installed, } - # Drush update - file { "/usr/local/bin/drush-update.sh": + # Drupal update script + file { "/usr/local/bin/drupal-update.sh": ensure => present, content => template('drupal/drush-update.sh'), user => root, group => root, mode => 755, } + + # Drupal upgrade script + file { "/usr/local/bin/drupal-upgrade.sh": + ensure => present, + content => template('drupal/drush-upgrade.sh'), + user => root, + group => root, + mode => 755, + } + + # Drupal deployment script + file { "/usr/local/bin/drupal-deploy.sh": + ensure => present, + content => template('drupal/drupal-deploy.sh'), + user => root, + group => root, + mode => 755, + } } diff --git a/templates/drupal-deploy.sh.erb b/templates/drupal-deploy.sh.erb new file mode 100644 index 0000000..e7b51ae --- /dev/null +++ b/templates/drupal-deploy.sh.erb @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Deploy a fresh drupal tree. +# + +if [ "$#" != "1" ]; then + echo "Usage: `basename $0` " + exit 1 +fi + +NEW="$1" +BASE="<%= $apache_www_folder %>" + +cd $BASE + +# Deploy a fresh drupal tree +wget http://ftp.drupal.org/files/projects/drupal-$NEW.tar.gz +tar zxvf drupal-$NEW.tar.gz && rm drupal-$NEW.tar.gz +chown -R root.root drupal-$NEW/ +cd drupal-$NEW && rm -rf sites diff --git a/templates/drupal-update.sh b/templates/drupal-update.sh new file mode 100644 index 0000000..75e8381 --- /dev/null +++ b/templates/drupal-update.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# This file is used to update all drupal instances in the host. +# + +for version in 5 6; do + # Setup base and sites folders + base="<%= $apache_www_folder %>/drupal-$version" + cd $base/sites + drupals="`ls -I default -I all`" + + # Issue updates + for drupal in $drupals; do + # Ignore symlinks so sites are updated just once + if [ ! -h $drupal ]; then + echo "Processing $drupal..." + drush -l $drupal update + fi + done + + # Fix permissions + chown -R root.root $base/sites/all/modules + chown -R root.root $base/sites/all/themes +done diff --git a/templates/drupal-upgrade.sh.erb b/templates/drupal-upgrade.sh.erb new file mode 100644 index 0000000..670a6e5 --- /dev/null +++ b/templates/drupal-upgrade.sh.erb @@ -0,0 +1,74 @@ +#!/bin/bash +# +# Upgrade a drupal instance using upstream source. +# + +if [ "$#" != "2" ]; then + echo "Usage: `basename $0` " + exit 1 +fi + +function get_major { + echo $1 | sed -e 's/\(^.\).*/\1/' +} + +OLD="$1" +NEW="$2" +OLD_MAJOR="`get_major $OLD`" +NEW_MAJOR="`get_major $NEW`" +BASE="<%= $apache_www_folder %>" +EXTRA_FOLDERS="" + +if [ "$OLD_MAJOR" != "$NEW_MAJOR" ]; then + echo "Major versions doesn't match" + exit 1 +fi + +# Set drupal series +if [ "$NEW_MAJOR" == "4" ]; then + # Get minor versions + NEW_MINOR="`echo $NEW | sed -e "s/^$NEW_MAJOR\.//"`" + OLD_MINOR="`echo $OLD | sed -e "s/^$OLD_MAJOR\.//"`" + + if [ "$OLD_MINOR" != "$NEW_MINOR" ]; then + echo "Minor versions doesn't match" + exit 1 + fi + DRUPAL_SERIES="$NEW_MAJOR.$MINOR" +else + DRUPAL_SERIES="$NEW_MAJOR" +fi + +cd $BASE + +# Deploy a fresh drupal tree +drupal-deploy.sh $NEW + +# Copy files +cp -Rp ../drupal-$OLD/{.htaccess,favicon.ico,files/,sites/} . &> /dev/null +for extra_folder in $EXTRA_FOLDERS; do + if [ -d ../drupal-$OLD/$extra_folder ]; then + cp -Rp ../drupal-$OLD/$extra_folder . + fi +done + +# Legacy stuff for Drupal 4.x.x +if [ "$NEW_MAJOR" == "4" ]; then + rsync -av ../drupal-$OLD/themes/ themes/ + for module in `ls ../drupal-$OLD/modules`; do + if [ -d "../drupal-$OLD/modules/$module" ]; then + cp -Rp ../drupal-$OLD/modules/$module modules/ + fi + done +fi + +# Copy installation profiles for Drupal 5.x or newer +if [ "$NEW_MAJOR" != "4" ]; then + rsync -av --exclude=default ../drupal-$OLD/profiles/ profiles/ +fi + +# Change symlink to point to the new location +cd $BASE ; rm drupal-$DRUPAL_SERIES && ln -s drupal-$NEW drupal-$DRUPAL_SERIES + +# Done +echo "Check procedure and remove drupal-$OLD once you make sure that everything is fine." diff --git a/templates/drush-update.sh.erb b/templates/drush-update.sh.erb deleted file mode 100644 index 75e8381..0000000 --- a/templates/drush-update.sh.erb +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# -# This file is used to update all drupal instances in the host. -# - -for version in 5 6; do - # Setup base and sites folders - base="<%= $apache_www_folder %>/drupal-$version" - cd $base/sites - drupals="`ls -I default -I all`" - - # Issue updates - for drupal in $drupals; do - # Ignore symlinks so sites are updated just once - if [ ! -h $drupal ]; then - echo "Processing $drupal..." - drush -l $drupal update - fi - done - - # Fix permissions - chown -R root.root $base/sites/all/modules - chown -R root.root $base/sites/all/themes -done -- cgit v1.2.3