classify_cluster 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/examples/cluster.rb CHANGED
@@ -2,23 +2,20 @@ cluster_common = %w{ ntp conary sysstat }
2
2
  onpremise_common = %w{ sudo cron monit::disabled }
3
3
 
4
4
  cluster :"appliance-cluster" do |cluster|
5
- common_classes = cluster_common + onpremise_common
6
- common_variables = {}
7
- common_resources = {}
8
- cluster.node :mylittlewebserver do |node|
9
- common_classes.each do |common_class|
10
- node.klass common_class
11
- end
12
- common_variables.each_pair do |key, value|
13
- node.variable key, value
14
- end
15
- common_resources.each_pair do |key, value|
16
- node.resource do |resource|
17
- resource.type value[:type]
18
- resource.name key
19
- resource.options value[:options]
20
- end
5
+ (cluster_common + onpremise_common).each do |common_class|
6
+ cluster.klass common_class
7
+ end
8
+ {}.each_pair do |key, value|
9
+ cluster.variable key, value
10
+ end
11
+ {}.each_pair do |key, value|
12
+ cluster.resource do |resource|
13
+ resource.type value[:type]
14
+ resource.name key
15
+ resource.options value[:options]
21
16
  end
17
+ end
18
+ cluster.node :"example.com" do |node|
22
19
  node.klass "webserver"
23
20
  node.variable :appservers, ['123.456.28.1']
24
21
  node.role do |role|
@@ -1,7 +1,7 @@
1
1
  module ClassifyCluster
2
2
  module Configurator
3
3
  class Cluster
4
- attr_reader :nodes, :name
4
+ attr_reader :nodes, :name, :classes, :variables, :resources
5
5
  def initialize(*args, &block)
6
6
  @nodes = {}
7
7
  @name = args.first
@@ -14,6 +14,15 @@ module ClassifyCluster
14
14
  def node(node_name, &block)
15
15
  @nodes[node_name] = ClassifyCluster::Configurator::Node.new(node_name, &block)
16
16
  end
17
+ def variable(name, value)
18
+ @variables[name] = value
19
+ end
20
+ def resource(&block)
21
+ @resources << ClassifyCluster::Configurator::Resource.new(&block)
22
+ end
23
+ def klass(name)
24
+ @classes << name
25
+ end
17
26
  end
18
27
  end
19
28
  end
@@ -39,39 +39,5 @@ module ClassifyCluster
39
39
  @classes << name
40
40
  end
41
41
  end
42
- class Resource
43
- attr_reader :type, :name, :options
44
- def initialize(*args, &block)
45
- @options = {}
46
- block.call self
47
- end
48
- def type(value = nil)
49
- return @type unless value
50
- @type = value
51
- end
52
- def name(value = nil)
53
- return @name unless value
54
- @name = value
55
- end
56
- def options(value = nil)
57
- return @options unless value
58
- @options = value
59
- end
60
- end
61
- class Role
62
- attr_reader :type, :options
63
- def initialize(*args, &block)
64
- @options = {}
65
- block.call self
66
- end
67
- def type(value = nil)
68
- return @type unless value
69
- @type = value
70
- end
71
- def options(value = nil)
72
- return @options unless value
73
- @options = value
74
- end
75
- end
76
42
  end
77
43
  end
@@ -1,3 +1,3 @@
1
1
  module ClassifyCluster
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -3,6 +3,9 @@ module ClassifyCluster
3
3
  class Capistrano
4
4
  def self.export!(capistrano_configurator, cluster, config_file=ClassifyCluster::Base.default_config_file)
5
5
  config = ClassifyCluster::Configurator::Configuration.new(config_file).clusters[cluster]
6
+ config.variables.each_pair do |name, value|
7
+ capistrano_configurator.set("puppet-#{name}".to_sym, value)
8
+ end
6
9
  config.nodes.each_pair do |name, node|
7
10
  roles = node.roles
8
11
  next if roles.empty?
@@ -9,9 +9,21 @@ module ClassifyCluster
9
9
  File.open(File.join(export_to_folder, "#{cluster.name}.pp"), 'w') do |file|
10
10
  cluster.nodes.each_pair do |fqdn, node|
11
11
  file.write(output(%Q%node "#{node.default? ? 'default' : node.fqdn}" {%))
12
+ cluster.variables.each_pair do |key, value|
13
+ file.write(output("$#{key}=#{value.inspect}", :indent => 1))
14
+ end
12
15
  node.variables.each_pair do |key, value|
13
16
  file.write(output("$#{key}=#{value.inspect}", :indent => 1))
14
17
  end
18
+ cluster.resources.each do |resource|
19
+ file.write(output("#{resource.type} { #{resource.name.inspect}:", :indent => 1))
20
+ count = 0
21
+ resource.options.each_pair do |key, value|
22
+ file.write(output("#{key} => #{value.inspect}#{"," if count >= resource.options.size}", :indent => 2))
23
+ count += 1
24
+ end
25
+ file.write(output("}", :indent => 1))
26
+ end
15
27
  node.resources.each do |resource|
16
28
  file.write(output("#{resource.type} { #{resource.name.inspect}:", :indent => 1))
17
29
  count = 0
@@ -21,6 +33,9 @@ module ClassifyCluster
21
33
  end
22
34
  file.write(output("}", :indent => 1))
23
35
  end
36
+ cluster.classes.each do |klass|
37
+ file.write(output("include #{klass}", :indent => 1))
38
+ end
24
39
  node.classes.each do |klass|
25
40
  file.write(output("include #{klass}", :indent => 1))
26
41
  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: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
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-10-26 00:00:00 -07:00
18
+ date: 2010-11-05 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency