diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/dependencies | 28 | ||||
-rwxr-xr-x | bin/mrconfig | 29 | ||||
-rwxr-xr-x | bin/provision | 21 | ||||
-rwxr-xr-x | bin/submodules | 31 | ||||
-rwxr-xr-x | bin/subtrees | 41 | ||||
-rwxr-xr-x | bin/symlinks | 24 |
6 files changed, 174 insertions, 0 deletions
diff --git a/bin/dependencies b/bin/dependencies new file mode 100755 index 0000000..78ca659 --- /dev/null +++ b/bin/dependencies @@ -0,0 +1,28 @@ +#!/bin/bash +# +# Simple shell provisioner for Vagrant instances. +# + +# Install a package, thanks to the Hydra Suite. +function provision_package { + if [ -z "$1" ]; then + return + fi + + dpkg -s $1 &> /dev/null + + if [ "$?" == "1" ]; then + echo "Installing package $1..." + DEBIAN_FRONTEND=noninteractive $sudo apt-get install $1 -y + fi +} + +# Set sudo config +if [ "`whoami`" != 'root' ]; then + sudo="sudo" +fi + +# Ensure basic packages are installed. +for package in puppet ruby-hiera-puppet mr whois; do + provision_package $package +done diff --git a/bin/mrconfig b/bin/mrconfig new file mode 100755 index 0000000..ffb0438 --- /dev/null +++ b/bin/mrconfig @@ -0,0 +1,29 @@ +#!/bin/bash +# +# Build a mrconfig for the needed modules. +# + +# Parameters +GIT="git.sarava.org" +URL="https://$GIT/?a=project_index" +CWD="`pwd`" +WORK="`dirname $0`/.." + +# Create a new config +cd $WORK +rm -f .mrconfig +touch .mrconfig + +# Fetch repository list and updtate mrconfig +curl --stderr - $URL | grep "^puppet-" | while read module; do + folder="`echo $module | sed -e 's/^puppet-//'`" + folder="`basename $folder .git`" + + if [ "$module" != "$bootstrap" ]; + echo "Processing $folder..." + mr config puppet/modules/$folder checkout="git clone git://$GIT/$module $folder" + fi +done + +# Teardown +cd $CWD diff --git a/bin/provision b/bin/provision new file mode 100755 index 0000000..7fa056b --- /dev/null +++ b/bin/provision @@ -0,0 +1,21 @@ +#!/bin/bash +# +# Simple shell provisioner for Vagrant instances. +# + +# Ensure the system is updated. +sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get dist-upgrade -y && sudo apt-get autoremove -y && sudo apt-get clean + +# Install dependencies +source /vagrant/puppet/bin/dependencies + +# Ensure additional dependencies are installed. +for package in sqlite3 libsqlite3-ruby libactiverecord-ruby ruby-sqlite3 usbutils; do + provision_package $package +done + +# Make sure we have an initial hiera configuration. +if [ ! -h "/etc/puppet/hiera.yaml" ]; then + sudo rm -f /etc/puppet/hiera.yaml + sudo ln -s /vagrant/puppet/hiera/hiera.yaml /etc/puppet/hiera.yaml +fi diff --git a/bin/submodules b/bin/submodules new file mode 100755 index 0000000..f79b635 --- /dev/null +++ b/bin/submodules @@ -0,0 +1,31 @@ +#!/bin/bash +# +# Setup submodules. +# + +# Parameters +DIRNAME="`dirname $0`" + +# Usage +function usage { + echo "Usage: $1 add-submodules <DIR>" + exit $2 +} + +# Get module list +repos="`grep = $DIRNAME/../.mrconfig | cut -d = -f 2 | cut -d ' ' -f 4`" + +# Add submodules +for repo in $repos; do + module="`basename $repo .git | sed -e s/^puppet-//`" + if [ ! -d "modules/$module" ]; then + echo "Processing puppet module $module..." + git submodule add $repo modules/$module + elif [ -e "modules/$module/.git" ]; then + # The puppet module exists and is a git submodule, so update it + ( cd module/$module && git pull origin master ) + fi +done + +# Update all modules +git submodule update --init diff --git a/bin/subtrees b/bin/subtrees new file mode 100755 index 0000000..1858a48 --- /dev/null +++ b/bin/subtrees @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Setup subtrees. +# + +# Parameters +DIRNAME="`dirname $0`" + +# Usage +function usage { + echo "Usage: $1 add-submodules <DIR>" + exit $2 +} + +# Check for git-subtree +if ! which git-subtree &> /dev/null; then + echo "fatal: please install git-subtree" + exit 1 +fi + +# Get module list +repos="`grep = $DIRNAME/../.mrconfig | cut -d = -f 2 | cut -d ' ' -f 4`" + +# Add subtrees +for repo in $repos; do + module="`basename $repo .git | sed -e s/^puppet-//`" + if [ ! -d "modules/$module" ]; then + echo "Processing puppet module $module..." + git remote add $module $repo + git subtree add --prefix modules/$module $module master --squash + elif [ ! -d "modules/$module/.git" ]; then + # The puppet module exists and is a subtree, so update it + if ! git remote | grep -qe "^$module$"; then + git remote add $module $repo + fi + + # Update subtrees + git fetch $module master + git subtree pull --prefix modules/$module $module master --squash + fi +done diff --git a/bin/symlinks b/bin/symlinks new file mode 100755 index 0000000..0a221c4 --- /dev/null +++ b/bin/symlinks @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Setup symlinks. +# + +# Parameters +BASENAME="`basename $0`" +MODULES="$1" + +# Check parameters +if [ -z "$MODULES" ]; then + echo "Usage: $BASENAME <submodules-folder>" + exit 1 +elif [ ! -e "$MODULES" ]; then + echo "Not found: $MODULES" +fi + +# Add module symlinks using absolute folders +for module in `ls $MODULES`; do + if [ "$module" != "bootstrap" ]; then + path="`cd $MODULES/$module && pwd`" + ( cd modules &> /dev/null && ln -sf $path ) + fi +done |