auser-poolparty 0.2.26 → 0.2.35

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.
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