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