1
0
mirror of https://github.com/krislamo/puppet-rsnapshot synced 2025-04-16 10:04:20 +00:00

Compare commits

..

No commits in common. "master" and "1.0.2" have entirely different histories.

19 changed files with 145 additions and 334 deletions

View File

@ -1,10 +1,8 @@
fixtures:
forge_modules:
stdlib:
stdlib:
repo: "puppetlabs/stdlib"
epel:
epel:
repo: "stahnma/epel"
concat:
repo: "puppetlabs/concat"
symlinks:
"rsnapshot": "#{source_dir}"

5
.gitignore vendored
View File

@ -1,5 +0,0 @@
.bundle
Gemfile.lock
pkg/
vendor/
log/

View File

@ -2,20 +2,11 @@
sudo: false
language: ruby
cache: bundler
bundler_args: --without system_tests
script: "bundle exec rake validate && bundle exec rake spec SPEC_OPTS='--format documentation'"
matrix:
fast_finish: true
include:
- rvm: 2.1
env: PUPPET_GEM_VERSION="~> 4.0"
script: "bundle exec rake validate"
- rvm: 2.1
env: PUPPET_GEM_VERSION="~> 4.0"
script: "bundle exec rake spec SPEC_OPTS='--format documentation'"
- rvm: 2.1
env: PUPPET_GEM_VERSION="~> 4.0"
script: "bundle exec rake beaker"
services: docker
sudo: required
notifications:
email: false

View File

@ -5,10 +5,3 @@ gem 'puppet', puppetversion
gem 'puppetlabs_spec_helper', '>= 0.8.2'
gem 'puppet-lint', '>= 1.0.0'
gem 'facter', '>= 1.7.0'
gem 'metadata-json-lint'
group :acceptance do
gem 'beaker-rspec', '5.6.0'
gem 'serverspec', require: false
gem 'specinfra', require: false
end

198
README.md
View File

@ -1,7 +1,7 @@
[![Build Status](https://travis-ci.org/loomsen/puppet-rsnapshot.svg?branch=master)](https://travis-ci.org/loomsen/puppet-rsnapshot)
# rsnapshot
## NOTE: ! Configuration for backup_scripts changed with version 0.4.0 (it was pretty useless in prior versions) !
#### Table of Contents
1. [Overview](#overview)
@ -42,7 +42,6 @@ This module is best used with an ENC like hiera. It will make your config much e
* This module will install the rsnapshot package on your system
* This module will manage the rsnapshot config on your system
* This module will manage cron entries for your configured nodes
* This module will manage the cron service on your system
### Setup Requirements
@ -151,13 +150,11 @@ rsnapshot::hosts:
The defaults are pretty reasonable, I hope. However, you may override pretty much anything. Available parameters are discussed below.
#### Specials
This module will generate random time entries for your hosts. The random number generator is hashed with hostname and backup_level, so the randomness will be repeatable per host.level. This is important so puppet won't override the crons with each run.
As mentioned, this module will generate random time entries for your hosts. The random number generator is hashed with hostname and backup_level, so the randomness will be repeatable per host.level. This is important so puppet won't override the crons with each run.
You may specify time ranges as follows:
* default cron syntax
* an array with allowed values
- for example, if you want the backup for a host to run between 1am and 5am, you would override the hours setting for the host in question.
In hiera this would look like: (Explanation see below)
* an array with allowed values, for example, if you want the backup for a host to run between 1am and 5am, you would override the hours setting for the host in question.
in hiera this would look like: (Explanation see below)
```yaml
rsnapshot::hosts:
@ -208,20 +205,41 @@ Takes an Integer, a String or an Array as input, and returns a random entry from
The following parameters are available in the `::rsnapshot` class:
#### `$backup_defaults`
Boolean. Backup default backup dirs or not.
(Default: true)
#### `$hosts`
Hash containing the hosts to be backed up and optional overrides per host
(Default: undef (do nothing when no host given))
#### `$conf_d`
The place where the configs will be dropped
(Default: /etc/rsnapshot (will be created if it doesn't exist))
#### `$backup_user`
The user to run the backup scripts as
(Default: root, also the user used for ssh connections, if you change this make sure you have proper key deployed and the user exists in the nodes to be backed up.)
#### `$package_name`
(Default: rsnapshot)
#### `$package_ensure`
(Default: present)
#### `$cron_dir`
Directory to drop the cron files to. Crons will be created per host.
(Default: /etc/cron.d)
#### `$backup_levels`
Array containing the backup levels (hourly, daily, weekly, monthly)
Configure the backup_levels (valid per host and global, so you may either set: rsnapshot::backup_levels for all hosts or override default backup_levels for specific hosts)
(Default: [ 'daily', 'weekly', ] )
#### `$backup_user`
The user to run the backup scripts as
(Default: root, also the user used for ssh connections, if you change this make sure you have proper key deployed and the user exists in the nodes to be backed up.)
#### `$conf_d`
The place where the configs will be dropped
(Default: /etc/rsnapshot (will be created if it doesn't exist))
#### `$backup_defaults`
Boolean. Backup default backup dirs or not.
(Default: true)
#### `$default_backup`
The default backup directories. This will apply to all hosts unless you set [backup_defaults](#backup_defaults) = false
Default is:
```puppet
$default_backup = {
'/etc' => './',
'/home' => './',
}
```
#### `$cron`
Hash. Set time ranges for different backup levels. Each item (minute, hour...) allows for cron notation, an array to pick a random time from and a range to pick a random time from.
The range notation is '$start..$end', so to pick a random hour from 8 pm to 2 am, you could set the hour of your desired backup level to
@ -329,58 +347,13 @@ Default is:
monthly => {
minute => '0..59',
hour => '0..23', # you could also do: ['21..23','0..4','5'],
monthday => '1..28',
monthday => '0..28',
month => '*',
weekday => '*',
},
}
```
#### `$cron_dir`
Directory to drop the cron files to. Crons will be created per host.
(Default: /etc/cron.d)
#### `$cronfile_prefix_use`
Bool. Set this to true if you want your cronfiles to have a prefix.
(Default: false)
#### `$cronfile_prefix`
Optional prefix to add to the cronfiles name. Your files will be named: prefix_hostname
(Default: 'rsnapshot_' only if you set $cronfile_prefix_use = true)
#### `$default_backup`
The default backup directories. This will apply to all hosts unless you set [backup_defaults](#backup_defaults) = false
Default is:
```puppet
$default_backup = {
'/etc' => './',
'/home' => './',
}
```
#### `$hosts`
Hash containing the hosts to be backed up and optional overrides per host
(Default: undef (do nothing when no host given))
#### `$interval`
How many backups of each level to keep.
Default is:
```puppet
$interval = {
'daily' => '7',
'weekly' => '4',
'monthly' => '6',
}
```
#### `$package_ensure`
(Default: present)
#### `$package_name`
(Default: rsnapshot)
#### `$snapshot_root`
global. the directory holding your backups.
(Default: /backup)
@ -404,6 +377,18 @@ You will end up with a structure like:
└── weekly.0
```
#### `$interval`
How many backups of each level to keep.
Default is:
```puppet
$interval = {
'daily' => '7',
'weekly' => '4',
'monthly' => '6',
}
```
#### `$backup_scripts`
Additional scripts to create, possible values are: mysql, psql, misc
@ -647,25 +632,9 @@ Default is: undef
#### `$cmd_postexec`
Default is: undef
#### `$du_args`
#### `$use_lvm`
Default is: undef
#### `$exclude`
Default is: []
#### `$exclude_file`
Other than this might suggest, the default behavior is to create an exclude file per host.
Default is: undef
#### `$include`
Default is: []
#### `$include_file`
Default is: undef
#### `$link_dest`
Default is: false
#### `$linux_lvm_cmd_lvcreate`
Default is: undef # '/sbin/lvcreate'
@ -691,9 +660,6 @@ Default is: undef
#### `$linux_lvm_mountpath`
Default is: undef
#### `$lockpath`
Default is: '/var/run/rsnapshot'
#### `$logpath`
Default is: '/var/log/rsnapshot'
@ -701,22 +667,26 @@ Default is: '/var/log/rsnapshot'
unused, we are logging to $logpath/$host.log
Default is: '/var/log/rsnapshot.log'
#### `$loglevel`
Default is: '4'
#### `$lockpath`
Default is: '/var/run/rsnapshot'
#### `$manage_cron`
Should this module manage the cron service?
Default is: true
#### `$snapshot_root`
Default is: '/backup/'
#### `$no_create_root`
Boolean: true or false
Default is: undef
#### `$one_fs`
Default is: undef
#### `$verbose`
Default is: '2'
#### `$retain`
Default is: { }
#### `$loglevel`
Default is: '4'
#### `$stop_on_stale_lockfile`
Boolean: true or false
Default is: undef
#### `$rsync_short_args`
Default is: '-az'
@ -725,31 +695,45 @@ Default is: '-az'
rsync defaults are: --delete --numeric-ids --relative --delete-excluded
Default is: undef
#### `$rsync_numtries`
Default is: 1
#### `$snapshot_root`
Default is: '/backup/'
#### `$ssh_args`
Default is: undef
#### `$stop_on_stale_lockfile`
Boolean: true or false
#### `$du_args`
Default is: undef
#### `$one_fs`
Default is: undef
#### `$retain`
Default is: { }
#### `$include`
Default is: []
#### `$exclude`
Default is: []
#### `$include_file`
Default is: undef
#### `$exclude_file`
Other than this might suggest, the default behavior is to create an exclude file per host.
Default is: undef
#### `$link_dest`
Default is: false
#### `$sync_first`
Default is: false
#### `$use_lvm`
Default is: undef
#### `$rsync_numtries`
Default is: 1
#### `$use_lazy_deletes`
Default is: false
#### `$verbose`
Default is: '2'
## Limitations
Currently, this module support CentOS, Fedora, Ubuntu and Debian.
@ -761,5 +745,5 @@ want it off the face of the planet, feel free to get in touch with me.
Norbert Varzariu (loomsen)
## Contributors
Please see the [list of contributors.](https://github.com/loomsen/puppet-rsnapshot/graphs/contributors)
Please see the [list of contributors.](https://github.com/loomsen/puppet-bloonix_agent/graphs/contributors)
A big thank you to Hendrik Horeis <hendrik.horeis@gmail.com> for all his input and testing of this module.

View File

@ -2,8 +2,8 @@
#
# manage host configs
class rsnapshot::config (
$hosts = $rsnapshot::hosts,
$cron_dir = $rsnapshot::cron_dir,
$hosts = $rsnapshot::hosts,
$cron_dir = $rsnapshot::cron_dir,
) {
# these are global settings, no point in setting them per host
@ -12,8 +12,6 @@ class rsnapshot::config (
$conf_d = pick($rsnapshot::conf_d, $rsnapshot::params::conf_d, '/etc/rsnapshot')
$snapshot_root = pick($hosts['snapshot_root'], $rsnapshot::snapshot_root, '/backup')
$logpath = pick($rsnapshot::logpath, $rsnapshot::params::config_logpath)
$cronfile_prefix_use = pick($rsnapshot::cronfile_prefix_use, $rsnapshot::params::config_cronfile_prefix_use, false)
$cronfile_prefix = pick($rsnapshot::cronfile_prefix, $rsnapshot::params::config_cronfile_prefix, '')
# make sure lock path and conf path exist
file { $conf_d:
ensure => 'directory',
@ -33,7 +31,7 @@ class rsnapshot::config (
# custom function, if only a hostname is given as a param, this is an empty hash
# the next loop would break as puppet does not allow to reassign variables
# the function checks $hosts for elements like:
# the function checks $hosts for elements like:
# { foo => } and converts those to { foo => {} }
$hosts_clean = assert_empty_hash($hosts)
@ -82,7 +80,7 @@ class rsnapshot::config (
$rsync_numtries = pick_undef($hash['rsync_numtries'], $rsnapshot::params::config_rsync_numtries)
#$backup_scripts = pick_undef($hash['backup_scripts'], $rsnapshot::params::config_backup_scripts)
$snapshot_dir = "${snapshot_root}/${host}"
$snapshot_dir = "${config_snapshot_root}/${host}"
$config = "${conf_d}/${host}.rsnapshot.conf"
$lockfile = "${lockpath}/${host}.pid"
$logfile = "${logpath}/${host}.log"
@ -103,7 +101,6 @@ class rsnapshot::config (
if ! ( $interval and $retain ) {
$interval = pick($hash['interval'], $rsnapshot::params::config_interval)
}
# rsnapshot wants numeric values
if $link_dest {
$link_dest_num = bool2num($link_dest)
@ -114,9 +111,6 @@ class rsnapshot::config (
if $use_lazy_deletes {
$use_lazy_deletes_num = bool2num($use_lazy_deletes)
}
if $one_fs {
$one_fs_num = bool2num($one_fs)
}
$real_include = $rsnapshot::include + $include
unless empty($real_include) {
@ -141,7 +135,7 @@ class rsnapshot::config (
content => template('rsnapshot/rsnapshot.erb'),
}
if has_key($hash, backup_scripts) {
$hash[backup_scripts].each |$script, $scriptconf| {
@ -164,37 +158,17 @@ class rsnapshot::config (
content => template("rsnapshot/${script}.sh.erb"),
mode => '0755',
}
}
}
if $cronfile_prefix_use {
$rsnapshot_prefix = $rsnapshot::cronfile_prefix
} else {
$rsnapshot_prefix = ''
}
# cron on Debian seems to ignore files that have dots in their name; replace
# them with underscores (issue #2)
case $::osfamily {
'Debian': {
$cron_name = regsubst($host, '\.', '_', 'G')
$cronfile = "${cron_dir}/${rsnapshot_prefix}${cron_name}"
}
'RedHat': {
$cronfile = "${cron_dir}/${rsnapshot_prefix}${host}"
}
default: {
$cronfile = "${cron_dir}/${rsnapshot_prefix}${host}"
}
}
$cronfile = "${cron_dir}/${host}"
concat { $cronfile:
}
# create cron files for each backup level
# merge possible cron definitions to one
$real_cron = deep_merge($rsnapshot::params::cron, $rsnapshot::cron, $hash[cron])
concat::fragment { "mailto for ${host}":
concat::fragment { "mailto for $host":
content => "#This file is managed by puppet\nMAILTO=${real_cron[mailto]}\n\n",
target => $cronfile,
order => 1,
@ -216,3 +190,4 @@ class rsnapshot::config (
}
}
}

View File

@ -5,26 +5,20 @@
# === Parameters
#
class rsnapshot (
$hosts = $rsnapshot::params::hosts,
$conf_d = $rsnapshot::params::conf_d,
$logpath = $rsnapshot::params::config_logpath,
$lockpath = $rsnapshot::params::config_lockpath,
$default_backup = $rsnapshot::params::config_default_backup,
$package_name = $rsnapshot::params::package_name,
$package_ensure = $rsnapshot::params::package_ensure,
$cron = $rsnapshot::params::cron,
$backup_scripts = $rsnapshot::params::backup_scripts,
$include = $rsnapshot::params::config_include,
$exclude = $rsnapshot::params::config_exclude,
$snapshot_root = $rsnapshot::params::config_snapshot_root,
$backup_levels = $rsnapshot::params::config_backup_levels,
$backup_user = $rsnapshot::params::config_backup_user,
$cron_service_name = $rsnapshot::params::cron_service_name,
$manage_cron = $rsnapshot::params::manage_cron,
$cronfile_prefix = $rsnapshot::params::config_cronfile_prefix,
$cronfile_prefix_use = $rsnapshot::params::config_cronfile_prefix_use,
$check_mk_job = $rsnapshot::params::config_check_mk_job,
$hosts = $rsnapshot::params::hosts,
$conf_d = $rsnapshot::params::conf_d,
$logpath = $rsnapshot::params::config_logpath,
$lockpath = $rsnapshot::params::config_lockpath,
$default_backup = $rsnapshot::params::config_default_backup,
$package_name = $rsnapshot::params::package_name,
$package_ensure = $rsnapshot::params::package_ensure,
$cron = $rsnapshot::params::cron,
$backup_scripts = $rsnapshot::params::backup_scripts,
$include = $rsnapshot::params::config_include,
$exclude = $rsnapshot::params::config_exclude,
$snapshot_root = $rsnapshot::params::config_snapshot_root,
$backup_levels = $rsnapshot::params::config_backup_levels,
$cron_service_name = $rsnapshot::params::cron_service_name,
) inherits rsnapshot::params {
$default_backup_scripts = $rsnapshot::params::backup_scripts + $backup_scripts
@ -38,3 +32,4 @@ class rsnapshot (
contain '::rsnapshot::service'
}
}

View File

@ -10,18 +10,5 @@ class rsnapshot::install {
ensure => $rsnapshot::package_ensure,
}
# ensure run directory exists (systemd clears /var/run, so rsnapshot can't create PID files after reboot - issue#12)
$lockpath = pick($rsnapshot::lockpath, $rsnapshot::params::config_lockpath, '/var/run/rsnapshot')
$tmpfiles_d = '/etc/tmpfiles.d'
file { "${tmpfiles_d}":
ensure => directory,
}
file { "${tmpfiles_d}/rsnapshot.conf":
ensure => present,
content => "D ${lockpath} 0755 root root -",
}
}

View File

@ -12,12 +12,10 @@ class rsnapshot::params {
'Debian' => 'cron',
default => '',
}
$manage_cron = true
$cron_dir = '/etc/cron.d'
$config_backup_levels = [ 'daily', 'weekly', 'monthly' ]
$config_backup_defaults = true
$config_version = '1.2'
$config_check_mk_job = false
$config_cmd_cp = '/bin/cp'
$config_cmd_rm = '/bin/rm'
$config_cmd_rsync = '/usr/bin/rsync'
@ -27,8 +25,6 @@ class rsnapshot::params {
$config_cmd_rsnapshot_diff = '/usr/bin/rsnapshot-diff'
$config_cmd_preexec = undef
$config_cmd_postexec = undef
$config_cronfile_prefix = 'rsnapshot_'
$config_cronfile_prefix_use = false
$config_use_lvm = undef
$config_linux_lvm_cmd_lvcreate = undef # '/sbin/lvcreate'
$config_linux_lvm_cmd_lvremove = undef # '/sbin/lvremove'
@ -47,7 +43,7 @@ class rsnapshot::params {
$config_loglevel = '4'
$config_stop_on_stale_lockfile = undef # bool
$config_rsync_short_args = '-az'
$config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded
$config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded
$config_ssh_args = undef
$config_du_args = undef
$config_one_fs = undef
@ -96,7 +92,7 @@ class rsnapshot::params {
monthly => {
minute => '0..59',
hour => '0..23', # you could also do: ['21..23','0..4','5'],
monthday => '1..28',
monthday => '0..28',
month => '*',
weekday => '*',
},
@ -128,6 +124,6 @@ class rsnapshot::params {
],
default => [],
},
},
}
}
}

View File

@ -1,13 +1,10 @@
# == Class: rsnapshot::service
#
# Reloads cron
class rsnapshot::service (
$manage_cron = $rsnapshot::manage_cron
) {
if $manage_cron {
service { $rsnapshot::cron_service_name:
ensure => running,
}
# Reloads cron
class rsnapshot::service {
service { $rsnapshot::cron_service_name:
ensure => running,
}
}

View File

@ -1,6 +1,6 @@
{
"name": "loomsen-rsnapshot",
"version": "1.2.5",
"version": "1.0.2",
"author": "loomsen",
"summary": "Configures rsnapshot.",
"license": "Apache-2.0",
@ -12,10 +12,13 @@
"backup",
"rsync"
],
"requirements": [
{ "name": "pe", "version_requirement": ">= 4.0.0" },
{ "name": "puppet", "version_requirement": ">= 4.0.0" }
],
"dependencies": [
{ "name": "puppetlabs-stdlib","version_requirement": ">= 1.0.0" },
{ "name": "stahnma-epel","version_requirement": ">= 1.0.0" },
{ "name": "puppetlabs-concat","version_requirement": ">= 2.0.0 < 3.0.0" }
{ "name": "puppetlabs-stdlib","version_range": ">= 1.0.0" },
{ "name": "stahnma-epel","version_range": ">= 1.0.0" }
],
"operatingsystem_support": [
{
@ -28,11 +31,11 @@
},
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [ "12.04", "12.10", "13.04", "13.10", "14.04", "14.10", "15.04", "15.10", "16.04", "16.10", "17.04" ]
"operatingsystemrelease": [ "12.04", "10.04", "14.04" ]
},
{
"operatingsystem": "Fedora",
"operatingsystemrelease": [ "17", "18", "19", "20", "21", "22", "23", "24", "25" ]
"operatingsystemrelease": [ "17", "18", "19", "20", "21", "22", "23", "24" ]
}
]
}

View File

@ -1,63 +0,0 @@
require 'spec_helper_acceptance'
describe 'rsnapshot' do
context 'with defaults' do
it 'run idempotently' do
pp = <<-EOS
class { 'rsnapshot':
hosts => {
'localhost' => {},
'example.com' => {
backup_defaults => false,
backup => {
'/var/' => './'
}
}
}
}
EOS
apply_manifest(pp, catch_failures: true)
apply_manifest(pp, catch_changes: true)
end
end
context 'packages installed' do
describe package('rsnapshot') do
it { is_expected.to be_installed }
end
end
context 'files provisioned' do
describe file('/etc/tmpfiles.d') do
it { should be_directory }
end
describe file('/etc/tmpfiles.d/rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'D /var/run/rsnapshot 0755 root root -' }
end
describe file('/var/run/rsnapshot') do
it { should be_directory }
end
describe file('/etc/rsnapshot/localhost.rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'backup' }
end
describe file('/etc/rsnapshot/example.com.rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'backup\troot@example.com:/var/\t./' }
end
describe file('/etc/rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'localhost' }
its(:content) { is_expected.to match 'example.com' }
end
describe file('/etc/rsnapshot/localhost.rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'backup' }
end
describe file('/etc/cron.d/example_com') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'example.com' }
end
end
end

View File

@ -1,15 +0,0 @@
HOSTS:
debian-8-x64:
platform: debian-8-amd64
hypervisor: docker
image: debian:8
docker_container_name: puppet_rsnapshot
docker_preserve_image: true
docker_cmd: '["/sbin/init"]'
docker_image_commands:
- 'echo deb http://ftp.debian.org/debian jessie-backports main >> /etc/apt/sources.list'
- 'apt-get update && apt-get install -y cron locales-all net-tools wget'
- 'rm -f /usr/sbin/policy-rc.d'
CONFIG:
trace_limit: 200
masterless: true

View File

@ -1,7 +1,5 @@
require 'spec_helper'
describe 'rsnapshot' do
let(:facts) {{ :osfamily => 'RedHat' }}
it { should contain_class('rsnapshot::params') }
it { is_expected.to compile }
end

View File

@ -1,26 +0,0 @@
require 'puppet'
require 'beaker-rspec'
require 'yaml'
install_puppet_agent_on hosts, {}
RSpec.configure do |c|
# Module root and settings
module_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
module_name = module_root.split('/').last.sub('-', '_').split('_').last()
c.formatter = :documentation
c.max_displayed_failure_line_count = 5
c.before :suite do
puts 'Install module'
puppet_module_install(source: module_root, module_name: module_name)
hosts.each do |host|
puts 'Install fixtures'
on host, puppet('module','install','stahnma/epel')
on host, puppet('module','install','puppetlabs/stdlib')
on host, puppet('module','install','puppetlabs/concat')
end
end
end

View File

@ -1 +1 @@
<%= @minute %> <%= @hour %> <%= @monthday %> <%= @month %> <%= @weekday %> root<% if scope['rsnapshot::check_mk_job'] == true -%> mk-job rsnapshot_<%= @host %>_<%= @level %><% end -%> /usr/bin/rsnapshot -c <%= @config %> <%= @level %>
<%= @minute %> <%= @hour %> <%= @month %> <%= @monthday %> <%= @weekday %> root /usr/bin/rsnapshot -c <%= @config %> <%= @level %>

View File

@ -2,6 +2,6 @@
#This file is managed by puppet
#
<%@commands.each do |command| -%>
ssh -l <%=@backup_user-%> <%=@host-%> <%=command-%>
ssh -l <%=@backup_user-%> <%=@host-%> '<%=command-%>'
<%end-%>

View File

@ -5,6 +5,7 @@
#
host=<%=@host%>
user=<%=@dbbackup_user%>
pass=<%=@dbbackup_password%>
<% if (@dbbackup_user == 'root' && @dbbackup_password == '') -%>
dbs=(
@ -16,7 +17,7 @@ dbs=(
)
<%end-%>
for db in "${dbs[@]}"; do
<% if (@dbbackup_user == 'root' && @dbbackup_password == '' )-%>
<% if (@dbbackup_user == 'root' && @dbbackup_password = '' )-%>
ssh -l <%=@backup_user-%> "$host" "<%=@dumper-%> <%=@dump_flags-%> ${db}" > "$db".sql
<%else-%>
ssh -l <%=@backup_user-%> "$host" "<%=@dumper-%> --user=<%=@dbbackup_user-%> --password='<%=@dbbackup_password-%>' <%=@dump_flags-%> ${db}" > "$db".sql

View File

@ -5,12 +5,14 @@
#
host=<%=@host%>
user=<%=@dbbackup_user%>
pass=<%=@dbbackup_password%>
#PGPASSWORD="$pass"
dbs=(
$(ssh -l <%=@backup_user-%> "$host" "PGPASSWORD='<%=@dbbackup_password%>' psql -U ${user} -Atc \"SELECT datname FROM pg_database WHERE NOT datistemplate AND NOT datname ~ '<%@ignore_dbs.each do |db|-%><%if db == @ignore_dbs.last-%><%=db-%><%else-%><%=db-%>|<%end-%><%end-%>'\"")
$(ssh -l <%=@backup_user-%> "$host" "PGPASSWORD=${pass} psql -U ${user} -Atc \"SELECT datname FROM pg_database WHERE NOT datistemplate AND NOT datname ~ '<%@ignore_dbs.each do |db|-%><%if db == @ignore_dbs.last-%><%=db-%><%else-%><%=db-%>|<%end-%><%end-%>'\"")
)
for db in "${dbs[@]}"; do
ssh -l <%=@backup_user-%> "$host" "PGPASSWORD='<%=@dbbackup_password%>' <%=@dumper-%> -U ${user} <%=@dump_flags-%> ${db}" > "$db".sql
ssh -l <%=@backup_user-%> "$host" "PGPASSWORD=${pass} <%=@dumper-%> -U ${user} <%=@dump_flags-%> ${db}" > "$db".sql
wait
<% if @compress != '' -%>
<%=@compress-%> "$db".sql