From 85876592e359ff61012d7de676113fb9a8bd817d Mon Sep 17 00:00:00 2001 From: "phrawzty (dan)" Date: Wed, 18 Jan 2012 14:30:31 +0100 Subject: [PATCH] New type: __rsyncer --- conf/type/__rsyncer/gencode-local | 44 ++++++++++++++++++ conf/type/__rsyncer/man.text | 62 ++++++++++++++++++++++++++ conf/type/__rsyncer/parameter/optional | 3 ++ conf/type/__rsyncer/parameter/required | 1 + 4 files changed, 110 insertions(+) create mode 100755 conf/type/__rsyncer/gencode-local create mode 100644 conf/type/__rsyncer/man.text create mode 100644 conf/type/__rsyncer/parameter/optional create mode 100644 conf/type/__rsyncer/parameter/required diff --git a/conf/type/__rsyncer/gencode-local b/conf/type/__rsyncer/gencode-local new file mode 100755 index 00000000..0d08e445 --- /dev/null +++ b/conf/type/__rsyncer/gencode-local @@ -0,0 +1,44 @@ +#!/bin/sh +# +# Copyright (C) 2011 Daniel Maher (phrawzty+cdist at gmail.com) +# +# This file is part of cdist (https://github.com/telmich/cdist/). +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +source="$(cat "$__object/parameter/source")" + +if [ -f "$__object/parameter/destination" ]; then + destination="$(cat "$__object/parameter/destination")" +else + destination="/$__object_id" +fi + +# The system binary is probably ok, but if not... +if [ -f "$__object/parameter/rsyncbin" ]; then + rsyncbin="$(cat "$__object/parameter/rsyncbin")" +else + rsyncbin=`which rsync` +fi + +args='-a --stats' + +# If the --delete argument should be passed to rsync. +if [ -f "$__object/parameter/delete" ]; then + args="$args --delete" +fi + +# Run rsync (locally). +echo "$rsyncbin $args $source root@$__target_host:$destination" diff --git a/conf/type/__rsyncer/man.text b/conf/type/__rsyncer/man.text new file mode 100644 index 00000000..6fab9fd3 --- /dev/null +++ b/conf/type/__rsyncer/man.text @@ -0,0 +1,62 @@ +cdist-type__rsyncer(7) +====================== +Daniel Maher + + +NAME +---- +cdist-type__rsyncer - Use rsync to copy files. + + +DESCRIPTION +----------- +This type is used to trigger rsync to copy files from the machine running cdist +(source) to the target machine in question (destination). The likely usage is +the rapid deployment of full directory trees, the cohorency of which can be +guarunteed with the optional --delete argument, which will remove any files +from the destination which are not present on the source. + + +REQUIRED PARAMETERS +------------------- +source:: + The full path of the source from which to copy. This is passed directly + to rsync. + + +OPTIONAL PARAMETERS +------------------- +destination:: + The full path of the destination. This is passed directly to rsync. + Default: object_id + +delete:: + If true, remove files from destination which are not in source. This is + effectively the --delete argument of rsync. + Default: false + +rsyncbin:: + Specify the full path to the rsync binary. + Default: `which rsync` + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Basic example +__rsyncer '/home/foo' --source '/opt/dist/foo' + +# Fancier example +__rsyncer FOO --source '/opt/dist/foo' --destination '/home/foo/' --delete true +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Daniel Maher. Free use of this software is granted under +the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__rsyncer/parameter/optional b/conf/type/__rsyncer/parameter/optional new file mode 100644 index 00000000..3bcb4dc7 --- /dev/null +++ b/conf/type/__rsyncer/parameter/optional @@ -0,0 +1,3 @@ +destination +delete +rsyncbin diff --git a/conf/type/__rsyncer/parameter/required b/conf/type/__rsyncer/parameter/required new file mode 100644 index 00000000..5a18cd2f --- /dev/null +++ b/conf/type/__rsyncer/parameter/required @@ -0,0 +1 @@ +source