diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2009-12-29 18:12:10 -0200 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2009-12-29 18:12:10 -0200 |
commit | 2d301e9dddb0bc2e34448600ac5b4a4317c1258f (patch) | |
tree | 1f12807dd383b428509de8c37a44e9692a82b72c | |
parent | 1812d8167cd95beaa4106755890f385a814b141c (diff) | |
download | puppet-drupal-2d301e9dddb0bc2e34448600ac5b4a4317c1258f.tar.gz puppet-drupal-2d301e9dddb0bc2e34448600ac5b4a4317c1258f.tar.bz2 |
Using a single drupal management script
-rw-r--r-- | manifests/init.pp | 26 | ||||
-rw-r--r-- | templates/drupal-deploy.sh.erb | 20 | ||||
-rw-r--r-- | templates/drupal-update.sh.erb | 24 | ||||
-rw-r--r-- | templates/drupal-upgrade.sh.erb | 74 | ||||
-rw-r--r-- | templates/drupal.sh.erb | 137 |
5 files changed, 141 insertions, 140 deletions
diff --git a/manifests/init.pp b/manifests/init.pp index 47a9a06..1a8334a 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -9,29 +9,11 @@ class drupal inherits pear { ensure => installed, } - # Drupal update script - file { "/usr/local/sbin/drupal-update.sh": + # Drupal management script + file { "/usr/local/sbin/drupal": ensure => present, - content => template('drupal/drupal-update.sh.erb'), - user => root, - group => root, - mode => 755, - } - - # Drupal upgrade script - file { "/usr/local/sbin/drupal-upgrade.sh": - ensure => present, - content => template('drupal/drupal-upgrade.sh.erb'), - user => root, - group => root, - mode => 755, - } - - # Drupal deployment script - file { "/usr/local/sbin/drupal-deploy.sh": - ensure => present, - content => template('drupal/drupal-deploy.sh.erb'), - user => root, + content => template('drupal/drupal.sh.erb'), + owner => root, group => root, mode => 755, } diff --git a/templates/drupal-deploy.sh.erb b/templates/drupal-deploy.sh.erb deleted file mode 100644 index e7b51ae..0000000 --- a/templates/drupal-deploy.sh.erb +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# -# Deploy a fresh drupal tree. -# - -if [ "$#" != "1" ]; then - echo "Usage: `basename $0` <version>" - 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.erb b/templates/drupal-update.sh.erb deleted file mode 100644 index 75e8381..0000000 --- a/templates/drupal-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 diff --git a/templates/drupal-upgrade.sh.erb b/templates/drupal-upgrade.sh.erb deleted file mode 100644 index 670a6e5..0000000 --- a/templates/drupal-upgrade.sh.erb +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -# -# Upgrade a drupal instance using upstream source. -# - -if [ "$#" != "2" ]; then - echo "Usage: `basename $0` <old_version> <new_version>" - 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/drupal.sh.erb b/templates/drupal.sh.erb new file mode 100644 index 0000000..ac44da5 --- /dev/null +++ b/templates/drupal.sh.erb @@ -0,0 +1,137 @@ +#!/bin/bash +# +# Drupal management script. +# + +BASE="<%= $apache_www_folder %>" +SERIES="5 6" + +# Get drupal major version +function get_major { + echo $1 | sed -e 's/\(^.\).*/\1/' +} + +# Deploy a fresh drupal tree +function drupal_deploy { + if [ "$#" != "1" ]; then + echo "Usage: `basename $0` deploy <version>" + exit 1 + fi + + # Setup + new="$1" + 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 +} + +# Update all drupal instances in the host +function drupal_update { + for version in $SERIES; do + # Setup base and sites folders + base="$BASE/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 +} + +# Upgrade a drupal instance using upstream source. +function drupal_upgrade { + if [ "$#" != "2" ]; then + echo "Usage: `basename $0` upgrade <old_version> <new_version>" + exit 1 + fi + + # Setup + old="$1" + new="$2" + old_major="`get_major $old`" + new_major="`get_major $new`" + 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 $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." +} + +# Main procedure +if [ -z "$1" ]; then + echo "Usage: `basename $0` <command> [arguments]" + exit 1 +elif [ "$1" == "deploy" ]; then + shift + drupal_deploy $* +elif [ "$1" == "update" ]; then + shift + drupal_update $* +elif [ "$1" == "upgrade" ]; then + shift + drupal_upgrade $* +fi |