Skip to content

Instantly share code, notes, and snippets.

@garethr
Created March 8, 2012 15:12
Show Gist options
  • Save garethr/2001442 to your computer and use it in GitHub Desktop.
Save garethr/2001442 to your computer and use it in GitHub Desktop.
Bootstrap
#!/bin/bash
set -e
case `uname -m` in
x86_64) ARCH="amd64" ;;
*) ARCH="i386" ;;
esac
DESTINATION=~/govuk
RUBY_PACKAGE="https://gds-packages.s3.amazonaws.com/pool/ruby-1.9.2-p290_${ARCH}.deb"
PUPPET_VERSION="2.7.3"
RUBYGEMS_VERSION="1.8.12"
BUNDLER_VERSION="1.1.rc.2"
# Update repositories and install prerequisites
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y libffi5 build-essential
# Install Git
if ! which git >/dev/null; then
sudo apt-get install -y git-core
fi
# Add GitHub's SSH fingerprint to avoid y/n intervention
if [ ! -f ${HOME}/.ssh/known_hosts ]; then
cat > ${HOME}/.ssh/known_hosts <<END
|1|w44cWh5oM5PZutDw5EJWCs0WtTU=|fqSWp2uDWvqwzLqnFvdsNRx/qgc= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
|1|B3QdRLnseQAe7/A/3aIXJlCZCXg=|+Ch0t8ruTNjFnC0SFaFjwaySYQc= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
END
fi
# Install Ruby
if ! which ruby >/dev/null; then
cd $(mktemp -d /tmp/install_ruby.XXXXXXXXXX) && \
wget -q -O ruby.deb $RUBY_PACKAGE && \
sudo dpkg -i ruby.deb
fi
# Update RubyGems
if [ `gem -v` != "${RUBYGEMS_VERSION}" ]; then
sudo gem install -v ${RUBYGEMS_VERSION} rubygems-update && \
sudo ruby -C "`gem env gemdir`/gems/rubygems-update-${RUBYGEMS_VERSION}" setup.rb
fi
# Install Bundler
if ! which bundle >/dev/null; then
sudo gem install --version ${BUNDLER_VERSION} bundler
fi
# Install Puppet
if ! which puppet >/dev/null; then
sudo groupadd puppet
sudo gem install -v $PUPPET_VERSION puppet --no-rdoc --no-ri
fi
# Set Facter environment
if ! grep -q FACTER /etc/environment; then
echo "export FACTER_govuk_class=development" | sudo tee -a /etc/environment > /dev/null
echo "export FACTER_govuk_environment=development" | sudo tee -a /etc/environment > /dev/null
fi
# Load environment
source /etc/environment
# Check out applications
mkdir -p $DESTINATION
# If you pass a space separated list of repos you'll get those and
# the supporting tools. Otherwise you'll get everything
Projects=${PROJECTS:-all}
if [ "${Projects}" != all ]; then
declare -a Repos=(\
puppet development ${Projects}
)
else
declare -a Repos=(\
smokey static publisher panopticon imminence slimmer geogov sign-on-o-tron \
need-o-tron smart-answers rack-geo govspeak gds-sso alphagov-deployment \
frontend jobs planner whitehall calendars marples plek router fco \
router-client contact-o-tron router deployment puppet development \
)
fi
for repo in "${Repos[@]}"; do
path=$DESTINATION/$repo
if [ ! -d $path ]; then
git clone [email protected]:alphagov/$repo $path
fi
done
# Run puppet from local files for moment
cd $DESTINATION/development/
./update-puppet-local.sh
# Run bundle install for all applications
./update-bundler.sh
# Run migrations for projects that need them
./update-mysql.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment