marionetta 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
@@ -75,8 +75,9 @@ module Marionetta
|
|
75
75
|
archive_cmd = [
|
76
76
|
server[:archive][:command],
|
77
77
|
server[:archive][:flags],
|
78
|
-
save_to,
|
79
|
-
directory,
|
78
|
+
['-f', save_to],
|
79
|
+
['-C', File.dirname(directory)],
|
80
|
+
File.basename(directory),
|
80
81
|
]
|
81
82
|
|
82
83
|
system(*archive_cmd.flatten)
|
@@ -91,7 +92,7 @@ module Marionetta
|
|
91
92
|
extract_cmd = [
|
92
93
|
server[:extract][:command],
|
93
94
|
server[:extract][:flags],
|
94
|
-
archive_path,
|
95
|
+
['-f', archive_path],
|
95
96
|
]
|
96
97
|
|
97
98
|
cmds << extract_cmd.flatten.join(' ')
|
data/lib/marionetta/group.rb
CHANGED
@@ -65,8 +65,14 @@ module Marionetta
|
|
65
65
|
def manipulate_each_server(manipulator_name, method_name)
|
66
66
|
each_server do |s|
|
67
67
|
manipulator = Manipulators[manipulator_name].new(s)
|
68
|
-
|
69
|
-
|
68
|
+
|
69
|
+
if manipulator.can?
|
70
|
+
return_val = manipulator.method(method_name).call()
|
71
|
+
yield s, return_val if block_given?
|
72
|
+
else
|
73
|
+
s[:logger].warn(
|
74
|
+
"Could not Manipulators[:#{:manipulator}].#{method_name}()")
|
75
|
+
end
|
70
76
|
end
|
71
77
|
end
|
72
78
|
end
|
@@ -13,6 +13,16 @@ module Marionetta
|
|
13
13
|
@server = server
|
14
14
|
end
|
15
15
|
|
16
|
+
def can?()
|
17
|
+
d = server[:debloyer]
|
18
|
+
|
19
|
+
if d.has_key?(:from) and d.has_key?(:to)
|
20
|
+
return true
|
21
|
+
else
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
16
26
|
def deploy()
|
17
27
|
deb_path = create_deb_path
|
18
28
|
build_deb(deb_path)
|
@@ -13,21 +13,22 @@ module Marionetta
|
|
13
13
|
@server = server
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
unless cmd.ssh_extract(release_archive, release_dir)
|
25
|
-
server[:logger].fatal(cmd.last)
|
26
|
-
server[:logger].fatal('Could not extract archive')
|
27
|
-
exit(1)
|
16
|
+
def can?()
|
17
|
+
d = server[:deployer]
|
18
|
+
|
19
|
+
if d.has_key?(:from) and d.has_key?(:to)
|
20
|
+
return true
|
21
|
+
else
|
22
|
+
return false
|
28
23
|
end
|
24
|
+
end
|
29
25
|
|
30
|
-
|
26
|
+
def deploy()
|
27
|
+
release = timestamp
|
28
|
+
create_tmp_release_dir(release)
|
29
|
+
send_tmp_release_dir_as_archive(release)
|
30
|
+
extract_archive_into_release_dir(release)
|
31
|
+
symlink_release_dir(release)
|
31
32
|
end
|
32
33
|
|
33
34
|
def releases()
|
@@ -51,7 +52,7 @@ module Marionetta
|
|
51
52
|
current_release_dir = release_dir(releases.last)
|
52
53
|
skip_current_release_dir = release_dir("skip-#{releases.last}")
|
53
54
|
cmd.ssh("mv #{current_release_dir} #{skip_current_release_dir}")
|
54
|
-
|
55
|
+
symlink_release_dir(rollback_to_release)
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
@@ -67,6 +68,14 @@ module Marionetta
|
|
67
68
|
server[:deployer][:from]
|
68
69
|
end
|
69
70
|
|
71
|
+
def tmp_release_dir(release)
|
72
|
+
"/tmp/#{release}"
|
73
|
+
end
|
74
|
+
|
75
|
+
def tmp_release_archive(release)
|
76
|
+
"/tmp/#{release}.tar.gz"
|
77
|
+
end
|
78
|
+
|
70
79
|
def to_dir()
|
71
80
|
server[:deployer][:to]
|
72
81
|
end
|
@@ -81,7 +90,28 @@ module Marionetta
|
|
81
90
|
"#{to_dir}/current"
|
82
91
|
end
|
83
92
|
|
84
|
-
def
|
93
|
+
def create_tmp_release_dir(release)
|
94
|
+
cmd.system("cp -r #{from_dir} #{tmp_release_dir(release)}")
|
95
|
+
end
|
96
|
+
|
97
|
+
def send_tmp_release_dir_as_archive(release)
|
98
|
+
release_archive = tmp_release_archive(release)
|
99
|
+
cmd.archive(tmp_release_dir(release), release_archive)
|
100
|
+
cmd.put(release_archive)
|
101
|
+
end
|
102
|
+
|
103
|
+
def extract_archive_into_release_dir(release)
|
104
|
+
release_archive = tmp_release_archive(release)
|
105
|
+
release_dir = release_dir(release)
|
106
|
+
|
107
|
+
unless cmd.ssh_extract(release_archive, release_dir)
|
108
|
+
server[:logger].fatal(cmd.last)
|
109
|
+
server[:logger].fatal('Could not extract archive')
|
110
|
+
exit(1)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def symlink_release_dir(release)
|
85
115
|
release_dir = release_dir(release)
|
86
116
|
|
87
117
|
unless cmd.ssh("rm -rf #{current_dir} && ln -s #{release_dir} #{current_dir}")
|
@@ -13,6 +13,10 @@ module Marionetta
|
|
13
13
|
@server = server
|
14
14
|
end
|
15
15
|
|
16
|
+
def can?()
|
17
|
+
server[:puppet].has_key?(:manifest)
|
18
|
+
end
|
19
|
+
|
16
20
|
def install()
|
17
21
|
install_deb_repo
|
18
22
|
install_deb
|
@@ -73,6 +77,7 @@ module Marionetta
|
|
73
77
|
cmds << "cp -r #{server[:puppet][:modules]} #{puppet_tmp}/modules"
|
74
78
|
end
|
75
79
|
|
80
|
+
cmd.system(cmds.join(' && '))
|
76
81
|
cmd.archive(puppet_tmp)
|
77
82
|
end
|
78
83
|
|
data/lib/marionetta.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Marionetta
|
2
|
-
VERSION = '0.3.
|
2
|
+
VERSION = '0.3.2'
|
3
3
|
DESCRIPTION = 'For lightweight puppet mastery. Organise
|
4
4
|
multiple machines via rsync and SSH rather
|
5
5
|
than using puppet master'
|
@@ -20,13 +20,13 @@ module Marionetta
|
|
20
20
|
|
21
21
|
:archive => {
|
22
22
|
:command => 'tar',
|
23
|
-
:flags => ['-
|
23
|
+
:flags => ['-zvc'],
|
24
24
|
:ext => 'tar.gz',
|
25
25
|
},
|
26
26
|
|
27
27
|
:extract => {
|
28
28
|
:command => 'tar',
|
29
|
-
:flags => ['-
|
29
|
+
:flags => ['-xv'],
|
30
30
|
},
|
31
31
|
|
32
32
|
:deployer => {},
|