summaryrefslogtreecommitdiff
path: root/bin/deploy
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/deploy
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/deploy')
-rwxr-xr-xbin/deploy58
1 files changed, 58 insertions, 0 deletions
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