classify_cluster 0.1.3 → 0.2.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.
data/examples/cluster.rb
CHANGED
@@ -74,15 +74,14 @@ cluster :"appliance-cluster" do |cluster|
|
|
74
74
|
|
75
75
|
cluster.node 'node1.fqdn', '10.11.11.321' do |node|
|
76
76
|
|
77
|
-
node.role :db, :primary => true
|
77
|
+
node.role :db, :primary => true do |role|
|
78
|
+
role.variable 'serverid', 1
|
79
|
+
end
|
78
80
|
node.role :queue
|
79
81
|
node.role :cron, :primary => true, :backup => true
|
80
82
|
node.role :app
|
81
83
|
node.role :worker
|
82
84
|
node.role :munin, :node => true
|
83
|
-
|
84
|
-
node.variable 'serverid', 1
|
85
|
-
|
86
85
|
end
|
87
86
|
|
88
87
|
cluster.node 'node2.fqdn', '10.11.11.123' do |node|
|
@@ -1,14 +1,6 @@
|
|
1
1
|
module ClassifyCluster
|
2
2
|
module Configurator
|
3
3
|
class Cluster
|
4
|
-
ROLE_2_VARIABLE_MAP = {
|
5
|
-
'app' => ['app_servers', []],
|
6
|
-
'db' => ['database_host', ''],
|
7
|
-
'queue' => ['queue_host', ''],
|
8
|
-
'push' => ['blow_server', ''],
|
9
|
-
'search' => ['solr_host', ''],
|
10
|
-
'munin' => ['munin_master', '']
|
11
|
-
}
|
12
4
|
attr_reader :nodes, :name, :classes, :variables, :resources, :hostnames
|
13
5
|
def initialize(*args, &block)
|
14
6
|
@nodes = {}
|
@@ -21,22 +13,6 @@ module ClassifyCluster
|
|
21
13
|
@nodes.each_pair do |fqdn, node|
|
22
14
|
@variables['hostnames'] = [] unless @variables['hostnames']
|
23
15
|
@variables['hostnames'] << "#{fqdn}/#{node.private_ip}"
|
24
|
-
node.roles.each do |role|
|
25
|
-
next unless ROLE_2_VARIABLE_MAP.has_key?(role.type.to_s)
|
26
|
-
if role.type.to_s == 'munin' && role.options.has_key?('master')
|
27
|
-
@variables['munin_master'] = node.private_ip
|
28
|
-
next
|
29
|
-
end
|
30
|
-
variable_name = ROLE_2_VARIABLE_MAP[role.type.to_s].first
|
31
|
-
variable_initial_value = ROLE_2_VARIABLE_MAP[role.type.to_s][1]
|
32
|
-
@variables[variable_name] = variable_initial_value unless @variables.has_key?(variable_name)
|
33
|
-
|
34
|
-
if @variables[variable_name].is_a?(Array)
|
35
|
-
@variables[variable_name] << node.private_ip
|
36
|
-
else
|
37
|
-
@variables[variable_name] = node.private_ip
|
38
|
-
end
|
39
|
-
end
|
40
16
|
end
|
41
17
|
@nodes.each_pair do |fqdn, node|
|
42
18
|
node.resource do |resource|
|
@@ -57,7 +33,7 @@ module ClassifyCluster
|
|
57
33
|
end
|
58
34
|
def node(node_name, private_ip, &block)
|
59
35
|
@hostnames[node_name] = private_ip
|
60
|
-
@nodes[node_name] = ClassifyCluster::Configurator::Node.new(node_name, private_ip, &block)
|
36
|
+
@nodes[node_name] = ClassifyCluster::Configurator::Node.new(node_name, private_ip, self, &block)
|
61
37
|
end
|
62
38
|
def variable(name, value)
|
63
39
|
@variables[name] = value
|
@@ -1,20 +1,9 @@
|
|
1
1
|
module ClassifyCluster
|
2
2
|
module Configurator
|
3
3
|
class Node
|
4
|
-
|
5
|
-
'db' => { 'primary' => 'databaseserver::onpremise', 'backup' => 'databasereplicationserver::onpremise'},
|
6
|
-
'queue' => 'queueserver::onpremise',
|
7
|
-
'app' => 'appserver::onpremise',
|
8
|
-
'worker' => 'workerserver::onpremise',
|
9
|
-
'web' => 'webserver::onpremise',
|
10
|
-
'puppet_master' => 'puppetmaster::onpremise',
|
11
|
-
'munin' => { 'master' => 'munin::master::onpremise', 'node' => 'munin::node::onpremise' },
|
12
|
-
'push' => 'pushserver::onpremise',
|
13
|
-
'cache' => 'memcached',
|
14
|
-
'search' => 'searchserver::onpremise'
|
15
|
-
}
|
16
|
-
attr_reader :fqdn, :variables, :resources, :classes, :private_ip, :public_ip, :roles, :default
|
4
|
+
attr_reader :cluster, :fqdn, :variables, :resources, :classes, :private_ip, :public_ip, :roles, :default
|
17
5
|
def initialize(*args, &block)
|
6
|
+
@cluster = args[2]
|
18
7
|
@variables = {}
|
19
8
|
@resources = []
|
20
9
|
@classes = []
|
@@ -22,18 +11,7 @@ module ClassifyCluster
|
|
22
11
|
@fqdn = (args.first.to_s == 'default' ? '' : args.first)
|
23
12
|
@private_ip = (args[1].to_s == 'default' ? '' : args[1])
|
24
13
|
@default = args.first.to_s == 'default'
|
25
|
-
|
26
|
-
@roles.each do |role|
|
27
|
-
if ROLE_2_KLASS_MAP.has_key?(role.type.to_s)
|
28
|
-
if role.options.size > 0
|
29
|
-
role.options.each_pair do |key, value|
|
30
|
-
@classes << ROLE_2_KLASS_MAP[role.type.to_s][key.to_s]
|
31
|
-
end
|
32
|
-
else
|
33
|
-
@classes << ROLE_2_KLASS_MAP[role.type.to_s]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
14
|
+
block.call(self)
|
37
15
|
end
|
38
16
|
def default?
|
39
17
|
return @default
|
@@ -50,8 +28,8 @@ module ClassifyCluster
|
|
50
28
|
return (@public_ip || @private_ip) unless value
|
51
29
|
@public_ip = value
|
52
30
|
end
|
53
|
-
def role(type, options={})
|
54
|
-
@roles << ClassifyCluster::Configurator::Role.new(type, options)
|
31
|
+
def role(type='', options={}, &block)
|
32
|
+
@roles << ClassifyCluster::Configurator::Role.new(self, type, options, &block)
|
55
33
|
end
|
56
34
|
def variable(name, value)
|
57
35
|
@variables[name] = value
|
@@ -1,10 +1,14 @@
|
|
1
1
|
module ClassifyCluster
|
2
2
|
module Configurator
|
3
3
|
class Role
|
4
|
-
attr_reader :type, :options
|
5
|
-
def initialize(type, options={})
|
4
|
+
attr_reader :type, :options, :node, :variables
|
5
|
+
def initialize(node, type, options={}, &block)
|
6
6
|
@type = type
|
7
|
-
@options = options
|
7
|
+
@options = options.symbolize_keys
|
8
|
+
@node = node
|
9
|
+
@variables = {}
|
10
|
+
block.call(self) if block_given?
|
11
|
+
self.send("after_#{@type}_role_assignment".to_sym)
|
8
12
|
end
|
9
13
|
def type(value = nil)
|
10
14
|
return @type unless value
|
@@ -14,6 +18,58 @@ module ClassifyCluster
|
|
14
18
|
return @options unless value
|
15
19
|
@options = value
|
16
20
|
end
|
21
|
+
def variable(name, value)
|
22
|
+
@variables[name] = value
|
23
|
+
@node.variable name, value
|
24
|
+
end
|
25
|
+
private
|
26
|
+
def add_klass_from_role
|
27
|
+
case @type.to_s
|
28
|
+
when "db"
|
29
|
+
@node.klass "databaseserver::onpremise" if @options.has_key?(:primary)
|
30
|
+
@node.klass "databasereplicationserver::onpremise" if @options.has_key?(:backup)
|
31
|
+
when "puppet_master"
|
32
|
+
@node.klass "puppet_master::onpremise"
|
33
|
+
when "munin"
|
34
|
+
@node.klass "munin::master::onpremise" if @options.has_key?(:master)
|
35
|
+
@node.klass "munin::node::onpremise" if @options.has_key?(:node)
|
36
|
+
when "cache"
|
37
|
+
@node.klass "memcached"
|
38
|
+
when "queue"
|
39
|
+
@node.klass "#{@type.to_s}server::onpremise"
|
40
|
+
when "app"
|
41
|
+
@node.klass "#{@type.to_s}server::onpremise"
|
42
|
+
when "worker"
|
43
|
+
@node.klass "#{@type.to_s}server::onpremise"
|
44
|
+
when "web"
|
45
|
+
@node.klass "#{@type.to_s}server::onpremise"
|
46
|
+
when "push"
|
47
|
+
@node.klass "#{@type.to_s}server::onpremise"
|
48
|
+
when "search"
|
49
|
+
@node.klass "#{@type.to_s}server::onpremise"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
def add_variable_from_role
|
53
|
+
case @type.to_s
|
54
|
+
when 'app'
|
55
|
+
@node.cluster.variables['app_servers'] ||= []
|
56
|
+
@node.cluster.variables['app_servers'] << @node.private_ip
|
57
|
+
when 'db'
|
58
|
+
@node.cluster.variable('database_host', @node.private_ip) if @options.has_key?(:primary)
|
59
|
+
when 'queue'
|
60
|
+
@node.cluster.variable 'queue_host', @node.private_ip
|
61
|
+
when 'push'
|
62
|
+
@node.cluster.variable 'blow_server', @node.private_ip
|
63
|
+
when 'search'
|
64
|
+
@node.cluster.variable 'solr_host', @node.private_ip
|
65
|
+
when 'munin'
|
66
|
+
@node.cluster.variable('munin_master', @node.private_ip) if @options.has_key?(:master)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
def method_missing(method_name, *args)
|
70
|
+
add_klass_from_role
|
71
|
+
add_variable_from_role
|
72
|
+
end
|
17
73
|
end
|
18
74
|
end
|
19
75
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: classify_cluster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sean Cashin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-10 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|