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.
- data/Manifest.txt +13 -2
- data/PostInstall.txt +2 -1
- data/Rakefile +8 -2
- data/bin/cloud-contract +1 -6
- data/bin/cloud-ensure-provisioning +33 -0
- data/bin/cloud-expand +1 -6
- data/bin/cloud-provision +22 -14
- data/bin/cloud-start +1 -0
- data/bin/messenger-get-load +26 -0
- data/bin/server-build-messenger +9 -2
- data/bin/server-fire-cmd +1 -1
- data/bin/server-get-load +4 -4
- data/bin/server-list-active +2 -2
- data/bin/server-rerun +4 -4
- data/bin/server-start-master +4 -4
- data/bin/server-start-node +4 -4
- data/lib/erlang/messenger/Rakefile +6 -0
- data/lib/erlang/messenger/ebin/master.app +1 -1
- data/lib/erlang/messenger/ebin/master_app.beam +0 -0
- data/lib/erlang/messenger/ebin/node.app +1 -1
- data/lib/erlang/messenger/ebin/node_app.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
- data/lib/erlang/messenger/include/defines.hrl +16 -0
- data/lib/erlang/messenger/pm_master.beam +0 -0
- data/lib/erlang/messenger/pm_node.beam +0 -0
- data/lib/erlang/messenger/src/pm_client.erl +35 -7
- data/lib/erlang/messenger/src/pm_cluster.erl +15 -12
- data/lib/erlang/messenger/src/pm_event_manager.erl +27 -0
- data/lib/erlang/messenger/src/pm_master.erl +44 -32
- data/lib/erlang/messenger/src/pm_master_event_handler.erl +72 -0
- data/lib/erlang/messenger/src/pm_master_supervisor.erl +9 -10
- data/lib/erlang/messenger/src/pm_node.erl +47 -27
- data/lib/erlang/messenger/src/pm_node_supervisor.erl +7 -9
- data/lib/erlang/messenger/src/utils.erl +20 -1
- data/lib/erlang/messenger/useful_snippets +6 -0
- data/lib/erlang/messenger/utils.beam +0 -0
- data/lib/poolparty/base_packages/haproxy.rb +6 -6
- data/lib/poolparty/base_packages/poolparty.rb +22 -43
- data/lib/poolparty/core/object.rb +3 -0
- data/lib/poolparty/helpers/console.rb +4 -0
- data/lib/poolparty/helpers/messenger.rb +14 -5
- data/lib/poolparty/helpers/optioner.rb +1 -1
- data/lib/poolparty/helpers/provisioner_base.rb +54 -15
- data/lib/poolparty/helpers/provisioners/master.rb +36 -8
- data/lib/poolparty/helpers/provisioners/slave.rb +5 -6
- data/lib/poolparty/net/remote_bases/ec2.rb +16 -18
- data/lib/poolparty/net/remote_instance.rb +4 -1
- data/lib/poolparty/net/remoter.rb +29 -10
- data/lib/poolparty/net/remoter_base.rb +2 -1
- data/lib/poolparty/plugins/git.rb +5 -6
- data/lib/poolparty/pool/base.rb +3 -2
- data/lib/poolparty/pool/cloud.rb +22 -14
- data/lib/poolparty/pool/plugin.rb +9 -0
- data/lib/poolparty/pool/pool.rb +2 -2
- data/lib/poolparty/pool/resources/class_package.rb +1 -1
- data/lib/poolparty/pool/resources/gem_package.rb +6 -4
- data/lib/poolparty/templates/puppetcleaner +6 -0
- data/lib/poolparty/version.rb +1 -1
- data/poolparty.gemspec +20 -6
- data/spec/poolparty/helpers/messenger_spec.rb +1 -1
- data/spec/poolparty/helpers/provisioner_base_spec.rb +3 -0
- data/spec/poolparty/net/remote_spec.rb +1 -0
- data/spec/poolparty/net/remoter_spec.rb +4 -1
- data/spec/poolparty/pool/cloud_spec.rb +2 -2
- data/spec/poolparty/pool/plugin_spec.rb +8 -1
- data/spec/poolparty/pool/resources/class_package_spec.rb +4 -4
- data/spec/poolparty/pool/resources/remote_file_spec.rb +1 -1
- data/website/index.html +1 -1
- metadata +20 -6
- data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
- data/lib/erlang/messenger/ebin/utils.beam +0 -0
- 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 =
|
28
|
-
MaxTimeBetRestarts =
|
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
|
Binary file
|
@@ -20,15 +20,15 @@ module PoolParty
|
|
20
20
|
has_service(:name => "haproxy")
|
21
21
|
|
22
22
|
# Tempalte variables
|
23
|
-
variable(:name => "name_haproxy", :value => "#{
|
23
|
+
variable(:name => "name_haproxy", :value => "#{cloud.name}")
|
24
24
|
|
25
|
-
if
|
26
|
-
|
27
|
-
|
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", :
|
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 => "
|
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 =>
|
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
|
-
|
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
|
@@ -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
|
-
|
17
|
-
testing ?
|
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
|
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
|
-
|
88
|
+
vputs "Logging on to #{@instance.ip} (#{@instance.name})"
|
82
89
|
@cloud.rsync_storage_files_to(@instance)
|
83
|
-
|
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
|
87
|
-
|
88
|
-
|
89
|
-
|
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
|
-
|
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
|
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(
|
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
|
-
|
158
|
+
. /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1
|
131
159
|
EOS
|
132
160
|
end
|
133
161
|
end
|