rsyncinator 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ require 'capistrano/setup'
2
+
3
+ load 'rsyncinator/rsync.rb'
4
+ load 'rsyncinator/config.rb'
5
+ load 'rsyncinator/check.rb'
6
+ load 'rsyncinator/built-in.rb'
7
+ load 'deployinator/helpers.rb'
@@ -0,0 +1,20 @@
1
+ set :rsync_user, -> { fetch(:deployment_username) }
2
+ set :rsync_log_file, -> { shared_path.join('log', 'rsyncinator.log') }
3
+ set :rsync_tail_lines, "10"
4
+
5
+ def rsync(host, from_host, source, destination)
6
+ execute(
7
+ "rsync", "-ah", fetch(:rsync_options),
8
+ "--rsh", "\"ssh", "-o", "PasswordAuthentication=no", "-o", "StrictHostKeyChecking=no\"",
9
+ "--log-file", fetch(:rsync_log_file),
10
+ "#{fetch(:rsync_user)}@#{from_host}:#{source}", destination
11
+ )
12
+ end
13
+
14
+ def rsync_log_run(host)
15
+ capture("tac #{fetch(:rsync_log_file)} | grep 'receiving file list' -B100000 -m1 | tac")
16
+ end
17
+
18
+ def rsync_log_tail(host)
19
+ capture "tail", "-n", fetch(:rsync_tail_lines), fetch(:rsync_log_file)
20
+ end
@@ -0,0 +1,24 @@
1
+ namespace :rsync do
2
+ namespace :check do
3
+
4
+ desc 'Ensure all rsyncinator specific settings are set, and warn and exit if not.'
5
+ task :settings do
6
+ {
7
+ (File.dirname(__FILE__) + "/examples/config/deploy.rb") => 'config/deploy.rb',
8
+ (File.dirname(__FILE__) + "/examples/config/deploy/staging.rb") => "config/deploy/#{fetch(:stage)}.rb"
9
+ }.each do |abs, rel|
10
+ Rake::Task['deployinator:settings'].invoke(abs, rel)
11
+ Rake::Task['deployinator:settings'].reenable
12
+ end
13
+ end
14
+
15
+ namespace :settings do
16
+ desc 'Print example rsyncinator specific settings for comparison.'
17
+ task :print do
18
+ set :print_all, true
19
+ Rake::Task['rsync:check:settings'].invoke
20
+ end
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,59 @@
1
+ module Capistrano
2
+ module TaskEnhancements
3
+ alias_method :rsync_original_default_tasks, :default_tasks
4
+ def default_tasks
5
+ rsync_original_default_tasks + [
6
+ "rsyncinator:write_built_in",
7
+ "rsyncinator:write_example_configs",
8
+ "rsyncinator:write_example_configs:in_place"
9
+ ]
10
+ end
11
+ end
12
+ end
13
+
14
+ namespace :rsyncinator do
15
+
16
+ set :example, "_example"
17
+
18
+ desc "Write example config files (with '_example' appended to their names)."
19
+ task :write_example_configs do
20
+ run_locally do
21
+ execute "mkdir", "-p", "config/deploy"
22
+ {
23
+ "examples/Capfile" => "Capfile#{fetch(:example)}",
24
+ "examples/config/deploy.rb" => "config/deploy#{fetch(:example)}.rb",
25
+ "examples/config/deploy/staging.rb" => "config/deploy/staging#{fetch(:example)}.rb"
26
+ }.each do |source, destination|
27
+ config = File.read(File.dirname(__FILE__) + "/#{source}")
28
+ File.open("./#{destination}", 'w') { |f| f.write(config) }
29
+ info "Wrote '#{destination}'"
30
+ end
31
+ unless fetch(:example).empty?
32
+ info "Now remove the '#{fetch(:example)}' portion of their names or diff with existing files and add the needed lines."
33
+ end
34
+ end
35
+ end
36
+
37
+ desc 'Write example config files (will overwrite any existing config files).'
38
+ namespace :write_example_configs do
39
+ task :in_place do
40
+ set :example, ""
41
+ Rake::Task['rsyncinator:write_example_configs'].invoke
42
+ end
43
+ end
44
+
45
+ desc 'Write a file showing the built-in overridable settings.'
46
+ task :write_built_in do
47
+ run_locally do
48
+ {
49
+ 'built-in.rb' => 'built-in.rb',
50
+ }.each do |source, destination|
51
+ config = File.read(File.dirname(__FILE__) + "/#{source}")
52
+ File.open("./#{destination}", 'w') { |f| f.write(config) }
53
+ info "Wrote '#{destination}'"
54
+ end
55
+ info "Now examine the file and copy-paste into your deploy.rb or <stage>.rb and customize."
56
+ end
57
+ end
58
+
59
+ end
@@ -0,0 +1,4 @@
1
+ # Load DSL and Setup Up Stages
2
+ require 'capistrano/setup'
3
+
4
+ require 'rsyncinator'
@@ -0,0 +1,4 @@
1
+ ##### rsyncinator
2
+ ### ------------------------------------------------------------------
3
+ set :deployment_username, "deployer" # user with SSH access and passwordless sudo rights
4
+ ### ------------------------------------------------------------------
@@ -0,0 +1,14 @@
1
+ ##### rsyncinator
2
+ ### ------------------------------------------------------------------
3
+ server "my-app-stage.example.com",
4
+ :user => fetch(:deployment_username),
5
+ :rsyncs => [ # rsyncinator
6
+ {
7
+ :from => "my-app.example.com",
8
+ :dirs => {
9
+ shared_path.join("var", "images") => shared_path.join("var", "images"),
10
+ shared_path.join("public", "images") => shared_path.join("public", "images")
11
+ }
12
+ }
13
+ ]
14
+ ### ------------------------------------------------------------------
@@ -0,0 +1,68 @@
1
+ desc "Rsync according to each host's settings"
2
+ task :rsync do
3
+ on roles(:all) do |host|
4
+ as :root do
5
+ with :ssh_auth_sock => capture("echo $SSH_AUTH_SOCK") do
6
+ if host.properties.rsyncs.nil?
7
+ info ""
8
+ info "No syncs defined for #{host}"
9
+ else
10
+ execute "mkdir", "-p", Pathname.new(fetch(:rsync_log_file)).split.first.to_s
11
+ host.properties.rsyncs.each do |sync|
12
+ sync[:dirs].each do |source, destination|
13
+ rsync(host, sync[:from], source, destination)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ namespace :rsync do
23
+
24
+ desc "Rsync according to each host's settings using the --dry-run option"
25
+ task :dry do
26
+ set :rsync_options, "--dry-run"
27
+ Rake::Task["rsync"].invoke
28
+ end
29
+
30
+ desc "Rsync according to each host's settings using the --delete option"
31
+ task :delete do
32
+ set :rsync_options, "--delete"
33
+ Rake::Task["rsync"].invoke
34
+ end
35
+
36
+ namespace :delete do
37
+ desc "Rsync according to each host's settings using the --delete and --dry-run options"
38
+ task :dry do
39
+ set :rsync_options, "--dry-run --delete"
40
+ Rake::Task["rsync"].invoke
41
+ end
42
+ end
43
+
44
+ desc "Show the latest sync in the log file"
45
+ task :log do
46
+ on roles(:all), in: :sequence do |host|
47
+ as :root do
48
+ info "Latest Rsync run on #{host}"
49
+ rsync_log_run(host).lines.each { |line| info line }
50
+ end
51
+ end
52
+ end
53
+
54
+ namespace :log do
55
+ desc "Show the last few lines of the sync's log file"
56
+ task :tail do
57
+ on roles(:all), in: :sequence do |host|
58
+ as :root do
59
+ info "From #{host}:"
60
+ rsync_log_tail(host).lines.each { |line| info line }
61
+ info ""
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ end
68
+
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rsyncinator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - david amick
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-08-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: capistrano
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: deployinator
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.1.3
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.1.3
46
+ - !ruby/object:Gem::Dependency
47
+ name: colorize
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.7.3
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.7.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: rake
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 10.3.2
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 10.3.2
78
+ - !ruby/object:Gem::Dependency
79
+ name: sshkit
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.5.1
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.5.1
94
+ description: Capistrano Plugin to rsync between roles
95
+ email: davidamick@ctisolutionsinc.com
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - lib/rsyncinator.rb
101
+ - lib/rsyncinator/rsync.rb
102
+ - lib/rsyncinator/config.rb
103
+ - lib/rsyncinator/check.rb
104
+ - lib/rsyncinator/built-in.rb
105
+ - lib/rsyncinator/examples/Capfile
106
+ - lib/rsyncinator/examples/config/deploy.rb
107
+ - lib/rsyncinator/examples/config/deploy/staging.rb
108
+ homepage: https://github.com/snarlysodboxer/rsyncinator
109
+ licenses:
110
+ - GNU
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: 1.9.3
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements:
128
+ - Rsync
129
+ rubyforge_project:
130
+ rubygems_version: 1.8.23.2
131
+ signing_key:
132
+ specification_version: 3
133
+ summary: Rsync between roles
134
+ test_files: []
135
+ has_rdoc: