marionetta 0.1.4 → 0.1.5
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.
- data/README.md +9 -11
- data/lib/marionetta/group.rb +12 -10
- data/lib/marionetta/manipulators.rb +3 -1
- data/lib/marionetta/rake_helper.rb +13 -7
- data/lib/marionetta.rb +1 -1
- data/spec/marionetta_group_spec.rb +1 -12
- metadata +2 -2
data/README.md
CHANGED
@@ -72,7 +72,7 @@ In your Rakefile you can do something like so:
|
|
72
72
|
require 'marionetta'
|
73
73
|
require 'marionetta/rake_helper'
|
74
74
|
|
75
|
-
staging = Marionetta::Group.new
|
75
|
+
staging = Marionetta::Group.new(:staging)
|
76
76
|
|
77
77
|
staging.add_server do |s|
|
78
78
|
s[:hostname] = 'staging.example.com'
|
@@ -82,16 +82,10 @@ end
|
|
82
82
|
Marionetta::RakeHelper.new(staging).install_group_tasks
|
83
83
|
```
|
84
84
|
|
85
|
-
The tasks `puppet:install` and `puppet:update` will now be
|
86
|
-
available in your Rakefile. If you want to namespace the tasks
|
87
|
-
further pass in a name to your `Marionetta::Group` like so:
|
88
|
-
|
89
|
-
``` ruby
|
90
|
-
staging = Marionetta::Group.new(:staging)
|
91
|
-
```
|
92
|
-
|
93
85
|
The tasks `staging:puppet:install` and `staging:puppet:update`
|
94
|
-
will be
|
86
|
+
will now be available in your Rakefile.
|
87
|
+
|
88
|
+
**Groups must have names if you want to generate rake tasks.**
|
95
89
|
|
96
90
|
## Using the debployer
|
97
91
|
|
@@ -105,7 +99,11 @@ staging = Marionetta::Group.new(:staging)
|
|
105
99
|
|
106
100
|
staging.add_server do |s|
|
107
101
|
s[:hostname] = 'staging.example.com'
|
108
|
-
s[:debployer] = {
|
102
|
+
s[:debployer] = {
|
103
|
+
:deploy_from => '/my-app',
|
104
|
+
:deploy_to => '/home/staging/www'
|
105
|
+
:excludes => ['spec'],
|
106
|
+
}
|
109
107
|
end
|
110
108
|
|
111
109
|
staging.manipulate_each_server(:debployer, :deploy)
|
data/lib/marionetta/group.rb
CHANGED
@@ -2,7 +2,7 @@ require 'celluloid'
|
|
2
2
|
|
3
3
|
module Marionetta
|
4
4
|
class Group
|
5
|
-
attr_reader :name
|
5
|
+
attr_reader :name
|
6
6
|
|
7
7
|
def initialize(name = nil)
|
8
8
|
@name = name
|
@@ -14,24 +14,26 @@ module Marionetta
|
|
14
14
|
@groups << group
|
15
15
|
end
|
16
16
|
|
17
|
+
def groups()
|
18
|
+
groups = @groups
|
19
|
+
|
20
|
+
groups.each do |g|
|
21
|
+
groups.concat(g.groups)
|
22
|
+
end
|
23
|
+
|
24
|
+
return groups
|
25
|
+
end
|
26
|
+
|
17
27
|
def add_server()
|
18
28
|
server = Marionetta.default_server
|
19
29
|
yield server
|
20
30
|
@servers << server
|
21
31
|
end
|
22
32
|
|
23
|
-
def add_servers(range)
|
24
|
-
range.each do |i|
|
25
|
-
server = Marionetta.default_server
|
26
|
-
yield server, i
|
27
|
-
@servers << server
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
33
|
def servers()
|
32
34
|
servers = @servers
|
33
35
|
|
34
|
-
groups.each do |g|
|
36
|
+
@groups.each do |g|
|
35
37
|
servers.concat(g.servers)
|
36
38
|
end
|
37
39
|
|
@@ -1,10 +1,12 @@
|
|
1
1
|
module Marionetta
|
2
2
|
module Manipulators
|
3
|
+
require_relative 'manipulators/debployer'
|
3
4
|
require_relative 'manipulators/puppet_manipulator'
|
4
5
|
|
5
6
|
def self.all()
|
6
7
|
{
|
7
|
-
:
|
8
|
+
:debployer => Debployer,
|
9
|
+
:puppet => PuppetManipulator,
|
8
10
|
}
|
9
11
|
end
|
10
12
|
|
@@ -12,6 +12,16 @@ module Marionetta
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def install_group_tasks()
|
15
|
+
install_group_tasks_for(group)
|
16
|
+
|
17
|
+
group.groups.each do |g|
|
18
|
+
install_group_tasks_for(g)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def install_group_tasks_for(group)
|
15
25
|
Manipulators.all.each do |manipulator_name, manipulator_class|
|
16
26
|
manipulator_class.tasks.each do |method_name|
|
17
27
|
task(task_name(manipulator_name, method_name)) do
|
@@ -21,16 +31,12 @@ module Marionetta
|
|
21
31
|
end
|
22
32
|
end
|
23
33
|
|
24
|
-
private
|
25
|
-
|
26
34
|
def task_name(manipulator_name, method_name)
|
27
|
-
|
28
|
-
|
29
|
-
if group.name
|
30
|
-
task_name_parts.unshift(group.name)
|
35
|
+
unless group.name
|
36
|
+
raise 'Group must be named'
|
31
37
|
end
|
32
38
|
|
33
|
-
return
|
39
|
+
return "#{group.name}:#{manipulator_name}:#{method_name}"
|
34
40
|
end
|
35
41
|
end
|
36
42
|
end
|
data/lib/marionetta.rb
CHANGED
@@ -13,19 +13,8 @@ describe Marionetta::Group do
|
|
13
13
|
vagrant.servers.count.should == 1
|
14
14
|
end
|
15
15
|
|
16
|
-
it 'should add multiple server maps at once' do
|
17
|
-
production = Marionetta::Group.new
|
18
|
-
|
19
|
-
production.add_servers (1..2) do |s, i|
|
20
|
-
s[:hostname] = "vagrant@192.168.33.11"
|
21
|
-
s[:puppet] = {:manifest => File.dirname(__FILE__)+'/puppet/manifest.pp'}
|
22
|
-
end
|
23
|
-
|
24
|
-
production.servers.count.should == 2
|
25
|
-
end
|
26
|
-
|
27
16
|
it 'should add sub groups' do
|
28
|
-
|
17
|
+
staging = Marionetta::Group.new
|
29
18
|
|
30
19
|
staging.add_server do |s|
|
31
20
|
s[:hostname] = 'vagrant@192.168.33.11'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marionetta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: celluloid
|