summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2015-11-06 11:00:06 -0200
committerSilvio Rhatto <rhatto@riseup.net>2015-11-06 11:00:06 -0200
commit5512c493e13998d4c83d7eab3d89e5a1c0836566 (patch)
treeee0016cd764492344be3a2075acb3bc2fcef9ab1 /bin
parentf9fa240c5227020dd10c6f1f309afba1d5a75c1e (diff)
downloaddebian-5512c493e13998d4c83d7eab3d89e5a1c0836566.tar.gz
debian-5512c493e13998d4c83d7eab3d89e5a1c0836566.tar.bz2
Squashed 'puppet/' changes from 26c7b4f..8f7043a
8f7043a Disable backup on puppet-bootstrap.example.org ea035ff Hiera: change domain and location eval order f418291 Adds default node 096b65a Removes darkice module 7663170 Updates TODO d03a934 Deploy: cleanup 66bd115 Deploy: fixes 51b00aa Deploy: apply patches before deployment (2) fc08d8d Deploy: apply patches before deployment 89cc9aa Typo e0169de Masterless puppet is supported a23b6a0 TODO: apply patches 49c4466 Patches, deployment code and TODO update 91477be Use settings::confdir on hiera datadir 381096e TODO cleanup 3d3eb59 Updates TODO 57c6940 Hiera fixes 5a2de12 New hiera scheme for secrets storage 4fc808f Get rid of environments, use git branches instead 47bc020 Updates mrconfig 0d32fa5 New canonical URL 08cd538 Updates TODO 4cfe7fb Site manifests ff61a20 Updates TODO 20f7608 Adds git hooks for push-to-deploy 6759fe7 Another LAMP example a461d98 Really remove bootstrap from mrconfig 1920fba Vagrant: apache user and group f13cb8a Formatting 7425fad Adds puppet-bootstrap.example.org.yaml 4647b02 Vagrant: LAMP example 42ce487 Vagrantfile: example of forwarded port 328873a Fix default hostname 41c9d89 Vagrantfile: set fqdn 72f61db Switch to parametrized classes fd90a64 Vagrant hostname 43816c7 Vagrantfile minor edit 1932d55 Updates mrconfig 39fa2d5 Fix hiera path df5df0b Submodules: force e0b4ebe Updates TODO ee7491e Updates TODO 65746ac TODO: syslog-ng fe79512 TODO: modules 60a3d68 TODO update a7e3e4c Storeconfigs support for vagrant/jessie 0d6de38 Coding style 28bd7e2 Default empty keys.d folder d33c587 Shell provisioner sudo fix 47c83e6 Vagrant provisioning fixes 6f0a560 Removes VIM modelines from Vagrantfile c9e8e7a Call nodo as a parametrized class 3730114 More changes for puppet 3.x 106977f Remove import definitions (deprecated since puppet 3.x) 3c13239 TODO update 5491a52 Mock puppet.conf with environment config 133e36b Initial changes for jessie 67baef2 Git and cgit vhosts 097b8ec Nginx: dhparams git-subtree-dir: puppet git-subtree-split: 8f7043a8948b3236d3c2582c865b27af4613c632
Diffstat (limited to 'bin')
-rwxr-xr-xbin/dependencies8
-rwxr-xr-xbin/deploy58
-rwxr-xr-xbin/mrconfig8
-rwxr-xr-xbin/post-receive7
-rwxr-xr-xbin/post-update16
-rwxr-xr-xbin/provision30
-rwxr-xr-xbin/submodules2
7 files changed, 109 insertions, 20 deletions
diff --git a/bin/dependencies b/bin/dependencies
index 78ca659..507145b 100755
--- a/bin/dependencies
+++ b/bin/dependencies
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Simple shell provisioner for Vagrant instances.
+# Puppet bootstrap dependencies.
#
# Install a package, thanks to the Hydra Suite.
@@ -13,16 +13,16 @@ function provision_package {
if [ "$?" == "1" ]; then
echo "Installing package $1..."
- DEBIAN_FRONTEND=noninteractive $sudo apt-get install $1 -y
+ DEBIAN_FRONTEND=noninteractive $SUDO apt-get install $1 -y
fi
}
# Set sudo config
if [ "`whoami`" != 'root' ]; then
- sudo="sudo"
+ SUDO="sudo"
fi
# Ensure basic packages are installed.
-for package in puppet ruby-hiera-puppet mr whois; do
+for package in puppet git mr whois; do
provision_package $package
done
diff --git a/bin/deploy b/bin/deploy
new file mode 100755
index 0000000..5d3361b
--- /dev/null
+++ b/bin/deploy
@@ -0,0 +1,58 @@
+#!/bin/bash
+#
+# Deploy configuration using puppet.
+#
+
+# Parameters
+DIRNAME="`dirname $0`"
+BASEDIR="$DIRNAME/.."
+DEPLOY_DEPENDENCIES="puppet ruby-sqlite3 ruby-activerecord ruby-activerecord-deprecated-finders"
+
+# Determine hostname
+if [ ! -z "$1" ]; then
+ FQDN="$1"
+else
+ FQDN="`cat /etc/hostname`"
+fi
+
+# Check for manifest
+PUPPET_MANIFEST="$BASEDIR/puppet/manifests/nodes/$FQDN.pp"
+if [ ! -e "$PUPPET_MANIFEST" ]; then
+ echo "file not found: $PUPPET_MANIFEST"
+ exit 1
+fi
+
+# Install dependencies
+source $DIRNAME/dependencies
+
+# Ensure additional dependencies are installed.
+for package in $DEPLOY_DEPENDENCIES; do
+ provision_package $package
+done
+
+# Parameters that needs dependencies installed
+DIST="`facter lsbdistcodename`"
+
+# Apply patches
+if [ -d "$BASEDIR/puppet/files/patches/$DIST" ]; then
+ (
+ # Patches should be generated relativelly to the root folder
+ cd /
+
+ # Only apply if needed
+ # Thanks https://unix.stackexchange.com/questions/55780/check-if-a-file-or-folder-has-been-patched-already
+ for patch in `ls $BASEDIR/puppet/files/patches/$DIST`; do
+ patch -p0 -N --dry-run --silent < $BASEDIR/puppet/files/patches/$DIST/$patch &> /dev/null
+ # If the patch has not been applied then the $? which is the exit status
+ # for last command would have a success status code = 0
+ if [ "$?" == "0" ]; then
+ # Apply the patch
+ patch -p0 -N < $BASEDIR/puppet/files/patches/$DIST/$patch
+ fi
+ done
+ )
+fi
+
+# Run puppet apply
+PUPPET_OPTS="--confdir=$BASEDIR/puppet --modulepath=$BASEDIR/puppet/modules"
+LC_ALL=C $SUDO puppet apply $PUPPET_OPTS $PUPPET_MANIFEST
diff --git a/bin/mrconfig b/bin/mrconfig
index f525db3..dc753ac 100755
--- a/bin/mrconfig
+++ b/bin/mrconfig
@@ -1,10 +1,10 @@
#!/bin/bash
#
# Build a mrconfig for the needed modules.
-#
+#
# Parameters
-GIT="git.sarava.org"
+GIT="git.fluxo.info"
URL="https://$GIT/?a=project_index"
CWD="`pwd`"
WORK="`dirname $0`/.."
@@ -18,8 +18,8 @@ touch .mrconfig
curl --stderr - $URL | grep "^puppet-" | cut -d ' ' -f 1 | while read module; do
folder="`echo $module | sed -e 's/^puppet-//'`"
folder="`basename $folder .git`"
-
- if [ "$module" != "$bootstrap" ]; then
+
+ if [ "$folder" != "bootstrap" ]; then
echo "Processing $folder..."
mr config puppet/modules/$folder checkout="git clone git://$GIT/$module $folder"
fi
diff --git a/bin/post-receive b/bin/post-receive
new file mode 100755
index 0000000..996189d
--- /dev/null
+++ b/bin/post-receive
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+cd ..
+unset GIT_DIR
+
+git checkout -f
+git submodule update --init --recursive
diff --git a/bin/post-update b/bin/post-update
new file mode 100755
index 0000000..48a6a16
--- /dev/null
+++ b/bin/post-update
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+cd ..
+unset GIT_DIR
+
+if [ -d ".git/annex" ]; then
+ git annex sync
+else
+ git reset HEAD
+ git checkout -f
+fi
+
+git submodule update --init --recursive
+
+cd -
+exec git update-server-info
diff --git a/bin/provision b/bin/provision
index e200e51..16f102f 100755
--- a/bin/provision
+++ b/bin/provision
@@ -3,25 +3,33 @@
# 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
+# Parameters
+DIRNAME="`dirname $0`"
+
+# Load dependencies
+source $DIRNAME/dependencies
-# Install dependencies
-source /vagrant/puppet/bin/dependencies
+# 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
# Ensure additional dependencies are installed.
-for package in sqlite3 libsqlite3-ruby libactiverecord-ruby ruby-sqlite3 usbutils; do
+for package in usbutils; do
+ provision_package $package
+done
+
+# Storeconfigs support
+for package in ruby-sqlite3 ruby-activerecord ruby-activerecord-deprecated-finders; do
provision_package $package
done
-# Link hiera configuration.
+# Link hiera configuration if needed.
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
+ $SUDO rm -f /etc/puppet/hiera.yaml
+ $SUDO ln -s $DIRNAME/../hiera/hiera.yaml /etc/puppet/hiera.yaml
fi
-# Link puppet configuration.
+# Link puppet configuration if needed.
if [ ! -h "/etc/puppet/puppet.conf" ]; then
- sudo rm -f /etc/puppet/puppet.conf
- sudo ln -s /vagrant/puppet/puppet.conf /etc/puppet/puppet.conf
+ $SUDO rm -f /etc/puppet/puppet.conf
+ $SUDO ln -s $DIRNAME/../puppet.conf /etc/puppet/puppet.conf
fi
diff --git a/bin/submodules b/bin/submodules
index f79b635..3abc46d 100755
--- a/bin/submodules
+++ b/bin/submodules
@@ -20,7 +20,7 @@ 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
+ git submodule add -f $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 )