From: Peter Palfrader Date: Tue, 17 Nov 2015 11:41:13 +0000 (+0100) Subject: Switch postgres-make-base-backups to be a template, and do not backup moszumanska... X-Git-Url: https://git.adam-barratt.org.uk/?a=commitdiff_plain;h=a2acd922fec7cfc0c4e9a98a9f5acad7429f2134;p=mirror%2Fdsa-puppet.git Switch postgres-make-base-backups to be a template, and do not backup moszumanska from backuphost --- diff --git a/modules/postgres/files/backup_server/postgres-make-base-backups b/modules/postgres/files/backup_server/postgres-make-base-backups deleted file mode 100755 index ab3d96249..000000000 --- a/modules/postgres/files/backup_server/postgres-make-base-backups +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/bash - -# run a bunch of full postgresql backups - - -# Copyright 2014 Peter Palfrader -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -set -e -set -u - -CONFFILE=/etc/nagios/dsa-check-backuppg.conf -ROOTDIR=$(perl -MYAML -e "print YAML::LoadFile('$CONFFILE')->{'rootdir'}") -if [ -z "$ROOTDIR" ]; then - echo >&2 "Could not learn rootdir from $CONFFILE" - exit 1 -fi - -if [ -t 0 ]; then - verbose=1 -else - verbose=0 -fi - -if [ "$verbose" -gt 0 ]; then - console="--progress --verbose" -else - console="" -fi - -if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then - echo "Usage: $0 [:]" - exit 0 -fi - -if [ "$#" -gt 0 ]; then - forcehostport="$1" - shift -else - forcehostport="" -fi - -export PGSSLMODE=verify-full -export PGSSLROOTCERT=/etc/ssl/debian/certs/ca.crt - -date=$(date "+%Y%m%d-%H%M%S") -thishost=$(hostname -f) - -while read host port username cluster version; do - [ "${host#\#}" = "$host" ] || continue - - if [ -n "$forcehostport" ] && [ "$forcehostport" != "$host:$port" ]; then - [ "$verbose" -gt 0 ] && echo "Skipping $host:$port $version/$cluster." - continue - fi - - label="$thishost-$date-$host-$cluster-$version-backup" - [ "$verbose" -gt 0 ] && echo "Doing $host:$port $version/$cluster: $label" - - target="$cluster.BASE.$label.tar.gz" - tmp=$(tempfile -d "$ROOTDIR" -p "BASE-$host:$port-" -s ".tar.gz") - trap "rm -f '$tmp'" EXIT - - /usr/lib/postgresql/"$version"/bin/pg_basebackup --format=tar --pgdata=- --label="$label" --host="$host" --port="$port" --username="$username" --no-password $console | pigz > "$tmp" - if ! [ "${PIPESTATUS[0]}" -eq 0 ]; then - echo >&2 "pg_basebackup failed with exit code ${PIPESTATUS[0]}" - exit 1 - fi - mv "$tmp" "$ROOTDIR/${host%%.*}/$target" -done << EOF -seger.debian.org 5432 debian-backup dak 9.4 -bmdb1.debian.org 5435 debian-backup main 9.4 -bmdb1.debian.org 5436 debian-backup wannabuild 9.4 -danzi.debian.org 5433 debian-backup main 9.4 -franck.debian.org 5433 debian-backup dak 9.4 -sibelius.debian.org 5433 debian-backup snapshot 9.4 -moszumanska.debian.org 5432 debian-backup main 9.1 -EOF diff --git a/modules/postgres/manifests/backup_server.pp b/modules/postgres/manifests/backup_server.pp index e42cf8c68..2a661c049 100644 --- a/modules/postgres/manifests/backup_server.pp +++ b/modules/postgres/manifests/backup_server.pp @@ -7,7 +7,7 @@ class postgres::backup_server { } file { '/usr/local/bin/postgres-make-base-backups': - source => 'puppet:///modules/postgres/backup_server/postgres-make-base-backups', + content => template('postgres/postgres-make-base-backups.erb'), mode => '0555', } if $::hostname in [backuphost] { diff --git a/modules/postgres/templates/backup_server/postgres-make-base-backups.erb b/modules/postgres/templates/backup_server/postgres-make-base-backups.erb new file mode 100755 index 000000000..793bb44b5 --- /dev/null +++ b/modules/postgres/templates/backup_server/postgres-make-base-backups.erb @@ -0,0 +1,99 @@ +#!/bin/bash + +# run a bunch of full postgresql backups + + +# Copyright 2014 Peter Palfrader +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +set -e +set -u + +CONFFILE=/etc/nagios/dsa-check-backuppg.conf +ROOTDIR=$(perl -MYAML -e "print YAML::LoadFile('$CONFFILE')->{'rootdir'}") +if [ -z "$ROOTDIR" ]; then + echo >&2 "Could not learn rootdir from $CONFFILE" + exit 1 +fi + +if [ -t 0 ]; then + verbose=1 +else + verbose=0 +fi + +if [ "$verbose" -gt 0 ]; then + console="--progress --verbose" +else + console="" +fi + +if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then + echo "Usage: $0 [:]" + exit 0 +fi + +if [ "$#" -gt 0 ]; then + forcehostport="$1" + shift +else + forcehostport="" +fi + +export PGSSLMODE=verify-full +export PGSSLROOTCERT=/etc/ssl/debian/certs/ca.crt + +date=$(date "+%Y%m%d-%H%M%S") +thishost=$(hostname -f) + +while read host port username cluster version; do + [ "${host#\#}" = "$host" ] || continue + + if [ -n "$forcehostport" ] && [ "$forcehostport" != "$host:$port" ]; then + [ "$verbose" -gt 0 ] && echo "Skipping $host:$port $version/$cluster." + continue + fi + + label="$thishost-$date-$host-$cluster-$version-backup" + [ "$verbose" -gt 0 ] && echo "Doing $host:$port $version/$cluster: $label" + + target="$cluster.BASE.$label.tar.gz" + tmp=$(tempfile -d "$ROOTDIR" -p "BASE-$host:$port-" -s ".tar.gz") + trap "rm -f '$tmp'" EXIT + + /usr/lib/postgresql/"$version"/bin/pg_basebackup --format=tar --pgdata=- --label="$label" --host="$host" --port="$port" --username="$username" --no-password $console | pigz > "$tmp" + if ! [ "${PIPESTATUS[0]}" -eq 0 ]; then + echo >&2 "pg_basebackup failed with exit code ${PIPESTATUS[0]}" + exit 1 + fi + mv "$tmp" "$ROOTDIR/${host%%.*}/$target" +done << EOF +seger.debian.org 5432 debian-backup dak 9.4 +bmdb1.debian.org 5435 debian-backup main 9.4 +bmdb1.debian.org 5436 debian-backup wannabuild 9.4 +danzi.debian.org 5433 debian-backup main 9.4 +franck.debian.org 5433 debian-backup dak 9.4 +sibelius.debian.org 5433 debian-backup snapshot 9.4 +<%- if hostname != "backuphost" -%> +moszumanska.debian.org 5432 debian-backup main 9.1 +<%- end -%> +EOF