auser-poolparty 0.2.26 → 0.2.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/Manifest.txt +13 -2
  2. data/PostInstall.txt +2 -1
  3. data/Rakefile +8 -2
  4. data/bin/cloud-contract +1 -6
  5. data/bin/cloud-ensure-provisioning +33 -0
  6. data/bin/cloud-expand +1 -6
  7. data/bin/cloud-provision +22 -14
  8. data/bin/cloud-start +1 -0
  9. data/bin/messenger-get-load +26 -0
  10. data/bin/server-build-messenger +9 -2
  11. data/bin/server-fire-cmd +1 -1
  12. data/bin/server-get-load +4 -4
  13. data/bin/server-list-active +2 -2
  14. data/bin/server-rerun +4 -4
  15. data/bin/server-start-master +4 -4
  16. data/bin/server-start-node +4 -4
  17. data/lib/erlang/messenger/Rakefile +6 -0
  18. data/lib/erlang/messenger/ebin/master.app +1 -1
  19. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  20. data/lib/erlang/messenger/ebin/node.app +1 -1
  21. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  22. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  23. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  24. data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
  25. data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
  26. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  27. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  28. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  29. data/lib/erlang/messenger/include/defines.hrl +16 -0
  30. data/lib/erlang/messenger/pm_master.beam +0 -0
  31. data/lib/erlang/messenger/pm_node.beam +0 -0
  32. data/lib/erlang/messenger/src/pm_client.erl +35 -7
  33. data/lib/erlang/messenger/src/pm_cluster.erl +15 -12
  34. data/lib/erlang/messenger/src/pm_event_manager.erl +27 -0
  35. data/lib/erlang/messenger/src/pm_master.erl +44 -32
  36. data/lib/erlang/messenger/src/pm_master_event_handler.erl +72 -0
  37. data/lib/erlang/messenger/src/pm_master_supervisor.erl +9 -10
  38. data/lib/erlang/messenger/src/pm_node.erl +47 -27
  39. data/lib/erlang/messenger/src/pm_node_supervisor.erl +7 -9
  40. data/lib/erlang/messenger/src/utils.erl +20 -1
  41. data/lib/erlang/messenger/useful_snippets +6 -0
  42. data/lib/erlang/messenger/utils.beam +0 -0
  43. data/lib/poolparty/base_packages/haproxy.rb +6 -6
  44. data/lib/poolparty/base_packages/poolparty.rb +22 -43
  45. data/lib/poolparty/core/object.rb +3 -0
  46. data/lib/poolparty/helpers/console.rb +4 -0
  47. data/lib/poolparty/helpers/messenger.rb +14 -5
  48. data/lib/poolparty/helpers/optioner.rb +1 -1
  49. data/lib/poolparty/helpers/provisioner_base.rb +54 -15
  50. data/lib/poolparty/helpers/provisioners/master.rb +36 -8
  51. data/lib/poolparty/helpers/provisioners/slave.rb +5 -6
  52. data/lib/poolparty/net/remote_bases/ec2.rb +16 -18
  53. data/lib/poolparty/net/remote_instance.rb +4 -1
  54. data/lib/poolparty/net/remoter.rb +29 -10
  55. data/lib/poolparty/net/remoter_base.rb +2 -1
  56. data/lib/poolparty/plugins/git.rb +5 -6
  57. data/lib/poolparty/pool/base.rb +3 -2
  58. data/lib/poolparty/pool/cloud.rb +22 -14
  59. data/lib/poolparty/pool/plugin.rb +9 -0
  60. data/lib/poolparty/pool/pool.rb +2 -2
  61. data/lib/poolparty/pool/resources/class_package.rb +1 -1
  62. data/lib/poolparty/pool/resources/gem_package.rb +6 -4
  63. data/lib/poolparty/templates/puppetcleaner +6 -0
  64. data/lib/poolparty/version.rb +1 -1
  65. data/poolparty.gemspec +20 -6
  66. data/spec/poolparty/helpers/messenger_spec.rb +1 -1
  67. data/spec/poolparty/helpers/provisioner_base_spec.rb +3 -0
  68. data/spec/poolparty/net/remote_spec.rb +1 -0
  69. data/spec/poolparty/net/remoter_spec.rb +4 -1
  70. data/spec/poolparty/pool/cloud_spec.rb +2 -2
  71. data/spec/poolparty/pool/plugin_spec.rb +8 -1
  72. data/spec/poolparty/pool/resources/class_package_spec.rb +4 -4
  73. data/spec/poolparty/pool/resources/remote_file_spec.rb +1 -1
  74. data/website/index.html +1 -1
  75. metadata +20 -6
  76. data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
  77. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  78. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  79. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  80. data/lib/erlang/messenger/src/pm_event_handler.erl +0 -21
@@ -24,17 +24,15 @@ start_link(Args) ->
24
24
 
25
25
  init([]) ->
26
26
  RestartStrategy = one_for_one,
27
- MaxRestarts = 3, % 1000
28
- MaxTimeBetRestarts = 30, % 3600
27
+ MaxRestarts = 1000,
28
+ MaxTimeBetRestarts = 3600,
29
+ TimeoutTime = 5000,
29
30
 
30
31
  SupFlags = {RestartStrategy, MaxRestarts, MaxTimeBetRestarts},
32
+
33
+ EventManager = {pm_event_manager, {pm_event_manager, start_link, []}, permanent, TimeoutTime, worker, dynamic},
34
+ NodeServer = {pm_node1, {pm_node, start_link, []}, permanent, TimeoutTime, worker, [pm_node]},
31
35
 
32
- LoadServers = [
33
- {pm_node1,
34
- {pm_node, start_link, []},
35
- permanent, 5000, worker,
36
- [pm_node]
37
- }
38
- ],
36
+ LoadServers = [EventManager, NodeServer],
39
37
 
40
38
  {ok, {SupFlags, LoadServers}}.
@@ -35,4 +35,23 @@ average_for_list(Num, L) ->
35
35
  0;
36
36
  _ ->
37
37
  Num / length(L)
38
- end.
38
+ end.
39
+
40
+
41
+
42
+ % Provisioning utils
43
+ distribute_modules_to(Modules, Nodes) ->
44
+ % transfer the modules to all the nodes
45
+ io:format("Sending ~p to ~p~n", [Modules, Nodes]),
46
+ lists:foreach(fun(Node) ->
47
+ transfer_modules(Node, Modules)
48
+ end, Nodes).
49
+
50
+ % Transfer modules of code to this node
51
+ transfer_modules(Node, Modules) ->
52
+ [transfer_module(Node, M) || M <- Modules].
53
+
54
+ % Transfer one module to the Node
55
+ transfer_module(Node, Module) ->
56
+ {_Module, Binary, Filename} = code:get_object_code(Module),
57
+ rpc:call(Node, code, load_binary, [Module, Filename, Binary]).
@@ -0,0 +1,6 @@
1
+ % Snippets
2
+ % lists:map(fun(No) -> net_adm:ping(No) end, pm_cluster:any_new_servers()).
3
+
4
+ % Start test nodes, defining testing
5
+ % erl -pa ./ebin -kernel inet_dist_listen_min 7000 inet_dist_listen_max 7050 -setcookie poolparty -boot pm_node_rel-0.1 -sname node0
6
+ % erl -pa ./ebin -kernel inet_dist_listen_min 7000 inet_dist_listen_max 7050 -setcookie poolparty -boot pm_node_rel-0.1 -sname node1
@@ -20,15 +20,15 @@ module PoolParty
20
20
  has_service(:name => "haproxy")
21
21
 
22
22
  # Tempalte variables
23
- variable(:name => "name_haproxy", :value => "#{@parent.name}")
23
+ variable(:name => "name_haproxy", :value => "#{cloud.name}")
24
24
 
25
- if @parent.provisioning?
26
- variable(:name => "nodenames_haproxy", :value => "#{list_of_running_instances.map{|a| "#{a.send :name}" }.join("\t")}")
27
- variable(:name => "node_ips_haproxy", :value => "#{list_of_running_instances.map{|a| "#{a.send :ip}" }.join("\t")}")
28
- else
25
+ # if cloud.provisioning?
26
+ # variable(:name => "nodenames_haproxy", :value => "#{list_of_running_instances.map{|a| "#{a.send :name}" }.join("\t")}")
27
+ # variable(:name => "node_ips_haproxy", :value => "#{list_of_running_instances.map{|a| "#{a.send :ip}" }.join("\t")}")
28
+ # else
29
29
  variable(:name => "nodenames_haproxy", :value => "generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'name')")
30
30
  variable(:name => "node_ips_haproxy", :value => "generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'ip')")
31
- end
31
+ # end
32
32
 
33
33
  variable(:name => "ports_haproxy", :value => ([(self.respond_to?(:port) ? port : Base.port)].flatten))
34
34
  variable(:name => "forwarding_port", :value => (respond_to?(:forwarding_port) ? forwarding_port : Base.forwarding_port))
@@ -2,23 +2,7 @@ module PoolParty
2
2
  class Base
3
3
  plugin :poolparty do
4
4
 
5
- def enable
6
- # These are all requirements on the master
7
- execute_if("$hostname", "master") do
8
- has_cron({:name => "maintain script ", :command => ". /etc/profile && which cloud-maintain | /bin/sh", :minute => "*/3"})
9
- # TODO: Update this so it only runs when needed
10
- has_exec(:name => ". /etc/profile && server-start-master")
11
- # has_exec(:name => "download-activesupport", :cwd => Base.remote_storage_path) do
12
- # command "wget http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem -O activesupport.gem"
13
- # end
14
- # has_exec(:name => "download-ParseTree", :cwd => Base.remote_storage_path) do
15
- # command "wget http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem -O ParseTree.gem"
16
- # end
17
- # has_exec(:name => "download-RubyInline", :cwd => Base.remote_storage_path) do
18
- # command "wget http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem -O RubyInline.gem"
19
- # end
20
- end
21
-
5
+ def enable
22
6
  has_package(:name => "erlang")
23
7
  has_package(:name => "erlang-dev")
24
8
  has_package(:name => "erlang-src")
@@ -27,20 +11,21 @@ module PoolParty
27
11
  # These should be installed automagically by poolparty, but just in case
28
12
  # TODO: Fix the requires method with a helper
29
13
  g.has_gempackage(:name => "logging", :download_url => "http://rubyforge.org/frs/download.php/44731/logging-0.9.4.gem")
14
+ g.has_gempackage(:name => "hoe", :download_url => "http://rubyforge.org/frs/download.php/45685/hoe-1.8.2.gem")
15
+ g.has_gempackage(:name => "rake", :download_url => "http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem")
30
16
  g.has_gempackage(:name => "xml-simple") do |x|
31
- x.has_gempackage(:name => "grempe-amazon-ec2", :source => "http://gems.github.com")
17
+ x.has_gempackage(:name => "grempe-amazon-ec2", :download_url => "http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem")
32
18
  end
33
19
 
34
20
  has_gempackage(:name => "ParseTree", :download_url => "http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem") do |pt|
35
21
  pt.has_gempackage(:name => "ruby2ruby", :download_url => "http://rubyforge.org/frs/download.php/45587/ruby2ruby-1.2.0.gem")
36
22
  pt.has_gempackage(:name => "activesupport", :download_url => "http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem") do |a|
37
- a.has_gempackage(:name => "auser-poolparty", :source => "http://gems.github.com") do |pool|
38
- pool.has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger", :requires => get_gempackage("auser-poolparty")) do |mess|
39
- mess.has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node")
40
- end
41
- end
23
+ a.has_gempackage(:name => "poolparty", :download_url => "http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty-latest.gem?raw=true")
42
24
  end
43
25
  has_gempackage(:name => "RubyInline", :download_url => "http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem")
26
+
27
+ has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger", :requires => get_gempackage("poolparty"))
28
+ has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node", :requires => get_exec("build_messenger"))
44
29
  end
45
30
 
46
31
  end
@@ -53,29 +38,23 @@ module PoolParty
53
38
 
54
39
  # Custom run puppet to minimize footprint
55
40
  # TODO: Update the offsetted times
56
- has_cron(:name => "puppetd runner", :user => Base.user, :minute => [0,15,30,45]) do
41
+ has_cron(:name => "puppetd runner", :user => Base.user, :minute => "*/8") do
57
42
  command((self.respond_to?(:master) ? self : parent).master.puppet_runner_command)
58
43
  end
59
- # has_host(:name => "puppet", :ip => (self.respond_to?(:master) ? self : parent).master.ip)
60
- custom_function <<-EOE
61
- define download_file(
62
- $site="",
63
- $cwd="",
64
- $creates="",
65
- $require="",
66
- $user="") {
67
-
68
- exec { $name:
69
- command => "wget ${site}/${name}",
70
- cwd => $cwd,
71
- creates => "${cwd}/${name}",
72
- require => $require,
73
- user => $user,
74
- }
75
-
76
- }
77
44
 
78
- EOE
45
+ # These are all requirements on the master
46
+ execute_if("$hostname", "master") do
47
+ has_cron({:name => "maintain script ", :command => ". /etc/profile && which cloud-maintain | /bin/sh", :minute => "*/3"})
48
+ # TODO: Update this so it only runs when needed
49
+ has_exec(:name => "start master messenger", :command => ". /etc/profile && server-start-master", :requires => [get_gempackage("poolparty"), get_exec("build_messenger")])
50
+
51
+ has_remotefile(:name => "/usr/bin/puppetcleaner") do
52
+ mode 744
53
+ template File.join(File.dirname(__FILE__), "..", "templates/puppetcleaner")
54
+ end
55
+ end
56
+
57
+ # has_host(:name => "puppet", :ip => (self.respond_to?(:master) ? self : parent).master.ip)
79
58
  end
80
59
 
81
60
  end
@@ -69,4 +69,7 @@ class Object
69
69
  # self.instance_eval &block if block
70
70
  meta_undef name
71
71
  end
72
+ def vputs(m="", o=self)
73
+ puts m if o.verbose
74
+ end
72
75
  end
@@ -16,6 +16,10 @@ module PoolParty
16
16
  end
17
17
  end
18
18
 
19
+ def extract_cloud_from_options(o)
20
+ o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : [clouds[clouds.keys.first]]
21
+ end
22
+
19
23
  # Clear all the pools and reload the console
20
24
  # Call within console to reset and reload the entire poolparty base
21
25
  # as well
@@ -1,3 +1,6 @@
1
+ =begin rdoc
2
+ The connection to the messenger from poolparty, the client
3
+ =end
1
4
  module PoolParty
2
5
  module Messenger
3
6
 
@@ -5,16 +8,22 @@ module PoolParty
5
8
  def self.erl_command(hostname, extra="")
6
9
  command_line_opts = "-pa #{append_dir}/ebin -kernel inet_dist_listen_min 7000 inet_dist_listen_max 7050 -sname #{hostname} -setcookie poolparty"
7
10
 
8
- "erl #{command_line_opts} #{extra} 2>&1 &"
11
+ "erl #{command_line_opts} #{extra} 2>&1"
9
12
  end
10
13
 
11
14
  def self.append_dir
12
- ::File.join( ::File.dirname(__FILE__), "..", "..", "erlang/messenger" )
15
+ ::File.expand_path(::File.join( ::File.dirname(__FILE__), "..", "..", "erlang/messenger" ))
13
16
  end
14
17
 
15
- def messenger_send!(cmd="", testing=false)
16
- cmd = Messenger.erl_command("client", "-rsh ssh -noshell -run pm_client #{cmd} -s erlang halt")
17
- testing ? cmd : Kernel.system(cmd)
18
+ def self.messenger_send!(cmd="", testing=false)
19
+ command = Messenger.erl_command("client", "-rsh ssh -noshell -run pm_client #{cmd} -s erlang halt")
20
+ testing ? command : %x[#{command}]
21
+ end
22
+
23
+ # Helper methods
24
+ def self.startup_remote_messenger(hostname, testing=false)
25
+ messenger_send!("")
26
+ testing ? command : %x[#{command}]
18
27
  end
19
28
 
20
29
  end
@@ -42,7 +42,7 @@ module PoolParty
42
42
  opts.on('-V', '--version', 'Display the version') { output_version ; exit 0 }
43
43
  opts.on('-v', '--verbose', 'Be verbose') { @options[:verbose] = true }
44
44
  opts.on('-s [file]', '--spec-file [file]', 'Set the spec file') { |file| self.spec file }
45
- opts.on('-t', '--test', 'Testing mode') { self.testing "true" }
45
+ opts.on('-t', '--test', 'Testing mode') { self.testing true }
46
46
 
47
47
  blk.call(opts, self) if blk
48
48
 
@@ -10,6 +10,7 @@ module PoolParty
10
10
  # Convenience method to clean
11
11
  def self.provision_master(cloud, testing=false)
12
12
  Provisioner::Master.new(cloud).process_install!(testing)
13
+ process_clean_reconfigure_for!(cloud.master, cloud, testing)
13
14
  end
14
15
 
15
16
  def self.configure_master(cloud, testing=false)
@@ -21,13 +22,14 @@ module PoolParty
21
22
  end
22
23
 
23
24
  def self.provision_slaves(cloud, testing=false)
24
- cloud.nonmaster_nonterminated_instances.each do |sl|
25
+ cloud.nonmaster_nonterminated_instances.each do |sl|
25
26
  provision_slave(sl, cloud, testing)
26
27
  end
27
28
  end
28
29
 
29
30
  def self.configure_slaves(cloud, testing=false)
30
31
  cloud.nonmaster_nonterminated_instances.each do |sl|
32
+ puts "Slave: #{sl.name} (#{sl.ip})"
31
33
  configure_slave(sl, cloud, testing)
32
34
  end
33
35
  end
@@ -40,6 +42,10 @@ module PoolParty
40
42
  Provisioner::Slave.new(instance, cloud).process_configure!(testing)
41
43
  end
42
44
 
45
+ def self.process_clean_reconfigure_for!(instance, cloud, testing=false)
46
+ Provisioner::Master.new(cloud).process_clean_reconfigure_for!(instance, testing)
47
+ end
48
+
43
49
  class ProvisionerBase
44
50
 
45
51
  include Configurable
@@ -72,21 +78,37 @@ module PoolParty
72
78
  def name
73
79
  @instance.name
74
80
  end
81
+ # TODO: Clean up this method
75
82
  def process_install!(testing=false)
76
83
  error unless valid?
77
84
  write_install_file
78
85
  setup_runner(@cloud)
79
86
 
80
87
  unless testing
81
- puts "Logging on to #{@instance.ip}" if verbose
88
+ vputs "Logging on to #{@instance.ip} (#{@instance.name})"
82
89
  @cloud.rsync_storage_files_to(@instance)
83
- @cloud.prepare_reconfiguration
90
+ vputs "Preparing configuration on the master"
91
+ process_clean_reconfigure_for!(@instance)
92
+
93
+ before_install(@instance)
84
94
 
95
+ vputs "Logging in and running provisioning on #{@instance.name}"
85
96
  cmd = "cd #{Base.remote_storage_path} && chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh && rm install_#{name}.sh"
86
- hide_output do
87
- @cloud.run_command_on(cmd, @instance)
88
- end
89
- end
97
+ verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
98
+
99
+ process_clean_reconfigure_for!(@instance)
100
+ after_install(@instance)
101
+
102
+ end
103
+ # We have to get the right generated data into the manifest
104
+ # TODO: Clean this setup
105
+ @cloud.provisioning_complete
106
+ end
107
+ # Install callbacks
108
+ # Before installation callback
109
+ def before_install(instance)
110
+ end
111
+ def after_install(instance)
90
112
  end
91
113
  def configure
92
114
  valid? ? configure_string : error
@@ -102,19 +124,30 @@ module PoolParty
102
124
  setup_runner(@cloud)
103
125
 
104
126
  unless testing
105
- puts "Logging on to #{@instance.ip}" if verbose
127
+ vputs "Logging on to #{@instance.ip}"
106
128
  @cloud.rsync_storage_files_to(@instance)
129
+ process_clean_reconfigure_for!(@instance)
107
130
 
108
131
  cmd = "cd #{Base.remote_storage_path} && chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && rm configure_#{name}.sh"
109
- @cloud.run_command_on(cmd, @instance)
132
+ verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
133
+ process_clean_reconfigure_for!(@instance)
110
134
  end
111
135
  end
112
- def process_reconfigure!(testing=false)
136
+ def process_clean_reconfigure_for!(instance, testing=false)
137
+ vputs "Cleaning certs from master: #{instance.name}"
138
+ # puppetca --clean #{instance.name}.compute-1.internal; puppetca --clean #{instance.name}.ec2.internal
139
+ # find /etc/puppet/ssl -type f -exec rm {} \;
140
+ command = <<-EOE
141
+ if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/puppetcleaner; fi
142
+ EOE
143
+ @cloud.run_command_on(command, @cloud.master) unless testing
144
+ end
145
+ def process_reconfigure!(testing=false)
113
146
  @cloud.run_command_on("puppetd --test 2>&1 &", @instance) unless testing
114
147
  end
115
- def setup_runner(cloud)
116
- cloud.prepare_to_configuration
117
- cloud.build_and_store_new_config_file
148
+ def setup_runner(force=false)
149
+ @cloud.prepare_to_configuration
150
+ @cloud.build_and_store_new_config_file(force)
118
151
  end
119
152
  def valid?
120
153
  true
@@ -147,6 +180,7 @@ module PoolParty
147
180
  # These are run on all the provisioners, master or slave
148
181
  def default_install_tasks
149
182
  [
183
+ "#!/usr/bin/env sh",
150
184
  upgrade_system,
151
185
  fix_rubygems,
152
186
  install_puppet,
@@ -238,13 +272,18 @@ module PoolParty
238
272
  def upgrade_system
239
273
  case @os
240
274
  when :ubuntu
241
- "
275
+ "
276
+ if grep -q 'http://mirrors.kernel.org/ubuntu hardy main universe' /etc/apt/sources.list
277
+ then
278
+ echo 'Updated already'
279
+ else
242
280
  touch /etc/apt/sources.list
243
281
  echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
244
282
  aptitude update -y <<heredoc
245
283
  Y
246
284
  heredoc
247
285
  aptitude autoclean
286
+ fi
248
287
  "
249
288
  else
250
289
  "# No system upgrade needed"
@@ -254,7 +293,7 @@ aptitude autoclean
254
293
  def install_puppet
255
294
  "#{installer_for( puppet_packages )}"
256
295
  end
257
-
296
+
258
297
  def create_poolparty_manifest
259
298
  <<-EOS
260
299
  cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes
@@ -22,13 +22,14 @@ module PoolParty
22
22
  setup_basic_structure,
23
23
  setup_configs,
24
24
  setup_fileserver,
25
- setup_autosigning,
25
+ setup_autosigning,
26
+ install_poolparty,
27
+ start_puppetmaster
26
28
  ] << configure_tasks
27
29
  end
28
30
 
29
31
  def configure_tasks
30
32
  [
31
- # start_puppetmaster,
32
33
  create_local_node,
33
34
  move_templates,
34
35
  create_poolparty_manifest,
@@ -74,9 +75,6 @@ mkdir -p /etc/poolparty
74
75
  def setup_autosigning
75
76
  <<-EOS
76
77
  echo "*" > /etc/puppet/autosign.conf
77
- killall ruby
78
- rm -rf /etc/puppet/ssl/*
79
- puppetmasterd --verbose
80
78
  EOS
81
79
  end
82
80
 
@@ -115,19 +113,49 @@ cp #{Base.remote_storage_path}/#{Base.default_specfile_name} #{Base.base_config_
115
113
  "cp #{Base.remote_storage_path}/#{@cloud.full_keypair_name} #{@cloud.remote_keypair_path}"
116
114
  end
117
115
  end
116
+
117
+ def install_poolparty
118
+ <<-EOE
119
+ cd /var/poolparty
120
+ wget http://rubyforge.org/frs/download.php/44731/logging-0.9.4.gem -O logging.gem 2>&1
121
+ wget http://rubyforge.org/frs/download.php/45581/ZenTest-3.11.0.gem -O zentest.gem 2>&1
122
+ wget http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem -O ParseTree.gem 2>&1
123
+ wget http://rubyforge.org/frs/download.php/45587/ruby2ruby-1.2.0.gem -O ruby2ruby.gem 2>&1
124
+ wget http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem -O activesupport.gem 2>&1
125
+ wget http://rubyforge.org/frs/download.php/18366/xml-simple-1.0.11.gem -O xml-simple.gem 2>&1
126
+ wget http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem -O RubyInline.gem 2>&1
127
+ wget http://rubyforge.org/frs/download.php/42580/flexmock-0.8.3.gem -O flexmock.gem 2>&1
128
+ wget http://rubyforge.org/frs/download.php/45685/hoe-1.8.2.gem -O hoe.gem 2>&1
129
+ wget http://rubyforge.org/frs/download.php/18698/lockfile-1.4.3.gem -O lockfile.gem 2>&1
130
+ wget http://rubyforge.org/frs/download.php/45546/rubyforge-1.0.1.gem -O rubyforge.gem 2>&1
131
+ wget http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem -O rake.gem 2>&1
132
+ wget http://rubyforge.org/frs/download.php/45589/sexp_processor-3.0.0.gem -O sexp_processor.gem 2>&1
133
+ wget http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty-latest.gem?raw=true -O poolparty-latest.gem 2>&1
134
+ wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O amazon-ec2.gem 2>&1
135
+
136
+ #{
137
+ %w(rake lockfile rubyforge hoe zentest sexp_processor flexmock logging activesupport RubyInline ParseTree ruby2ruby xml-simple poolparty-latest amazon-ec2).map do |dep|
138
+ "gem install -y --no-ri --no-rdoc #{dep}.gem\n"
139
+ end
140
+ }
141
+
142
+ # gem install -y --no-ri --no-rdoc --source http://gems.github.com grempe-amazon-ec2
143
+ # gem install -y --no-ri --no-rdoc --source http://gems.github.com auser-poolparty
144
+ EOE
145
+ end
118
146
 
119
147
  # ps aux | grep puppetmasterd | awk '{print $2}' | xargs kill
120
148
  # rm -rf /etc/puppet/ssl
121
- # puppetmasterd --verbose
122
149
  def start_puppetmaster
123
- <<-EOS
150
+ <<-EOS
151
+ puppetmasterd --verbose
124
152
  EOS
125
153
  end
126
154
 
127
155
  # puppetd --listen --fqdn #{@instance.name}
128
156
  def restart_puppetd
129
157
  <<-EOS
130
- . /etc/profile && #{@instance.puppet_runner_command}
158
+ . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1
131
159
  EOS
132
160
  end
133
161
  end