auser-poolparty 1.1.1 → 1.1.3
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/VERSION.yml +1 -1
- data/bin/cloud-show +27 -0
- data/lib/poolparty/base_packages/haproxy.rb +4 -3
- data/lib/poolparty/dependency_resolver/chef_resolver.rb +14 -2
- data/lib/poolparty/helpers/binary.rb +8 -7
- data/lib/poolparty/lite.rb +1 -1
- data/lib/poolparty/monitors/base_monitor.rb +81 -81
- data/lib/poolparty/monitors/monitor_rack.rb +8 -1
- data/lib/poolparty/monitors/stats_monitor.rb +11 -12
- data/lib/poolparty/poolparty/cloud.rb +22 -136
- data/lib/poolparty/poolparty/template.rb +10 -1
- data/lib/poolparty/provision/boot_strapper.rb +2 -1
- data/lib/poolparty/resources/file.rb +4 -4
- data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +1 -1
- data/spec/poolparty/net/remote_spec.rb +0 -1
- data/spec/poolparty/poolparty/cloud_spec.rb +2 -36
- data/spec/poolparty/resources/file_spec.rb +1 -0
- data/test/fixtures/test_template.erb +1 -0
- data/test/poolparty/poolparty/template_test.rb +31 -0
- data/test/poolparty/provision/boot_strapper_test.rb +6 -0
- data/test/poolparty/provision/dr_configure_test.rb +6 -0
- data/test/test_helper.rb +2 -0
- metadata +12 -17
- data/lib/poolparty/provisioners/capistrano/capistrano.rb +0 -158
- data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +0 -69
- data/lib/poolparty/provisioners/capistrano/recipes/aws.rb +0 -21
- data/lib/poolparty/provisioners/capistrano/recipes/base.rb +0 -164
- data/lib/poolparty/provisioners/capistrano/recipes/master.rb +0 -66
- data/lib/poolparty/provisioners/capistrano/recipes/puppet.rb +0 -101
- data/lib/poolparty/provisioners/capistrano/recipes/slave.rb +0 -36
- data/lib/poolparty/provisioners/provisioner_base.rb +0 -222
- data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +0 -40
- data/spec/poolparty/provisioners/provisioner_base_spec.rb +0 -129
@@ -105,7 +105,7 @@ module PoolParty
|
|
105
105
|
"groupadd -f poolparty",
|
106
106
|
# "useradd poolparty --home-dir /var/poolparty --groups poolparty --create-home",
|
107
107
|
'cd /var/poolparty/dependencies',
|
108
|
-
"cp /var/poolparty/dependencies/etc/poolparty/gemrc /etc/poolparty",
|
108
|
+
"cp /var/poolparty/dependencies/etc/poolparty/gemrc /etc/poolparty",
|
109
109
|
"#{installer} update",
|
110
110
|
"#{installer} install -y ruby1.8 ruby1.8-dev libopenssl-ruby1.8 build-essential wget", #optional, but nice to have
|
111
111
|
"tar -zxvf packages/rubygems-1.3.1.tgz",
|
@@ -113,6 +113,7 @@ module PoolParty
|
|
113
113
|
"ruby setup.rb --no-ri --no-rdoc",
|
114
114
|
"ln -sfv /usr/bin/gem1.8 /usr/bin/gem", #TODO: check if this is really needed
|
115
115
|
"cd ../ && rm -rf rubygems-1.3.1*",
|
116
|
+
"gem source --add http://gems.github.com",
|
116
117
|
"cd /var/poolparty/dependencies/gems/",
|
117
118
|
"gem install --no-rdoc --no-ri -y *.gem",
|
118
119
|
"cd /var/poolparty/dependencies",
|
@@ -4,7 +4,7 @@ module PoolParty
|
|
4
4
|
class File < Resource
|
5
5
|
|
6
6
|
def after_create
|
7
|
-
|
7
|
+
run_render = dsl_options.include?(:render_as) ? dsl_options.delete(:render_as) : false
|
8
8
|
|
9
9
|
if dsl_options.include?(:template)
|
10
10
|
filename = ::File.expand_path(dsl_options.template)
|
@@ -13,13 +13,13 @@ module PoolParty
|
|
13
13
|
raise TemplateNotFound.new("no template given") unless file
|
14
14
|
|
15
15
|
template_opts = (parent ? options.merge(parent.options) : options)
|
16
|
-
options.merge!(:content =>
|
16
|
+
options.merge!(:content => run_render ? Template.compile_file(filename, template_opts.merge(:renderer => run_render)).gsub("\"", "\"") : open(filename).read)
|
17
17
|
end
|
18
18
|
|
19
19
|
if dsl_options.include?(:content)
|
20
20
|
cont = dsl_options.delete(:content)
|
21
|
-
template_opts = (parent ? options.merge(parent.options) : options)
|
22
|
-
options.merge!(:content =>
|
21
|
+
template_opts = (parent ? options.merge(parent.options) : options).merge(:renderer => run_render)
|
22
|
+
options.merge!(:content => run_render ? Template.compile_string(cont, template_opts) : cont)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -96,7 +96,7 @@ describe "Resolution spec" do
|
|
96
96
|
# parent == TestClass
|
97
97
|
# puts "<pre>#{parent}</pre> on <pre>#{context_stack.map {|a| a.class }.join(", ")} from #{self.class}</pre>"
|
98
98
|
listen "8080"
|
99
|
-
has_file :name => "/etc/apache2/apache2.conf", :template => "/absolute/path/to/template", :friends => "bob"
|
99
|
+
has_file :name => "/etc/apache2/apache2.conf", :template => "/absolute/path/to/template", :friends => "bob", :render_as => :erb
|
100
100
|
end
|
101
101
|
end
|
102
102
|
@cloud = clouds[:dog_for_test]
|
@@ -184,7 +184,6 @@ describe "Remote" do
|
|
184
184
|
setup
|
185
185
|
@tc.stub!(:copy_ssh_app).and_return true
|
186
186
|
@tc.stub!(:prepare_reconfiguration).and_return "full"
|
187
|
-
PoolParty::Provisioner.stub!(:reconfigure_master).and_return true
|
188
187
|
@tc.stub!(:wait).and_return true
|
189
188
|
@tc.stub!(:nonmaster_nonterminated_instances).and_return response_list_of_instances
|
190
189
|
@inst = stub_instance(9, "running")
|
@@ -313,8 +313,8 @@ describe "Cloud" do
|
|
313
313
|
before(:each) do
|
314
314
|
@file = "/etc/puppet/manifests/nodes/nodes.pp"
|
315
315
|
@file.stub!(:read).and_return "nodes generate"
|
316
|
-
::FileTest.stub!(:file?).with("/etc/
|
317
|
-
@cloud.stub!(:open).with("/etc/
|
316
|
+
::FileTest.stub!(:file?).with("/etc/poolparty/poolparty.pp").and_return true
|
317
|
+
@cloud.stub!(:open).with("/etc/poolparty/poolparty.pp").and_return @file
|
318
318
|
end
|
319
319
|
it "should not call resources_string_from_resources if the file /etc/puppet/manifests/nodes/nodes.pp exists" do
|
320
320
|
@cloud.should_not_receive(:add_poolparty_base_requirements)
|
@@ -325,40 +325,6 @@ describe "Cloud" do
|
|
325
325
|
end
|
326
326
|
end
|
327
327
|
end
|
328
|
-
describe "minimum_runnable_options" do
|
329
|
-
it "should be an array on the cloud" do
|
330
|
-
@cloud.minimum_runnable_options.class.should == Array
|
331
|
-
end
|
332
|
-
["keypair","minimum_instances","maximum_instances",
|
333
|
-
"expand_when","contract_when","set_master_ip_to"].each do |k|
|
334
|
-
eval <<-EOE
|
335
|
-
it "should have #{k} in the minimum_runnable_options" do
|
336
|
-
@cloud.minimum_runnable_options.include?(:#{k}).should == true
|
337
|
-
end
|
338
|
-
EOE
|
339
|
-
end
|
340
|
-
it "should include the custom_minimum_runnable_options" do
|
341
|
-
@cloud.stub!(:custom_minimum_runnable_options).and_return [:blank]
|
342
|
-
@cloud.minimum_runnable_options.include?(:blank).should == true
|
343
|
-
end
|
344
|
-
end
|
345
|
-
describe "unique_cookie" do
|
346
|
-
it "should have the method generate generate_unique_cookie_string" do
|
347
|
-
@cloud.respond_to?(:generate_unique_cookie_string).should == true
|
348
|
-
end
|
349
|
-
it "should call hexdigest to digest/sha" do
|
350
|
-
Digest::SHA256.should_receive(:hexdigest).with("#{@cloud.keypair.basename}#{@cloud.name}").and_return "blaaaaah"
|
351
|
-
@cloud.generate_unique_cookie_string
|
352
|
-
end
|
353
|
-
it "should generate the same cookie string every time" do
|
354
|
-
older = @cloud.generate_unique_cookie_string
|
355
|
-
old = @cloud.generate_unique_cookie_string
|
356
|
-
new_one = @cloud.generate_unique_cookie_string
|
357
|
-
older.should == old
|
358
|
-
old.should == new_one
|
359
|
-
new_one.should == older
|
360
|
-
end
|
361
|
-
end
|
362
328
|
end
|
363
329
|
|
364
330
|
# describe "instances" do
|
@@ -0,0 +1 @@
|
|
1
|
+
Hello <%= friends %>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "#{::File.dirname(__FILE__)}/../../test_helper"
|
2
|
+
|
3
|
+
class TestDrConfigure < Test::Unit::TestCase
|
4
|
+
context "Rendering of a string" do
|
5
|
+
before do
|
6
|
+
@template_string = "Hello <%= name %>"
|
7
|
+
end
|
8
|
+
it "should have a method called compile_string on the class" do assert Template.respond_to?(:compile_string);end
|
9
|
+
it "should return rendered content" do assert Template.compile_string(@template_string, {:name => "bob"}), "Hello bob" end
|
10
|
+
end
|
11
|
+
context "Rendering of a file" do
|
12
|
+
before do
|
13
|
+
@template_file = ::File.dirname(__FILE__) + "/../../fixtures/test_template.erb"
|
14
|
+
end
|
15
|
+
it "should have a method called compile_file on the class" do assert Template.respond_to?(:compile_file);end
|
16
|
+
it "should return rendered content" do assert Template.compile_file(@template_file, {:friends => "bob"}), "Hello bob" end
|
17
|
+
end
|
18
|
+
context "render_as" do
|
19
|
+
setup do
|
20
|
+
@template_options = {:render_as => :erb}
|
21
|
+
end
|
22
|
+
|
23
|
+
should "should call render with as erb" do
|
24
|
+
assert Template.compile_string("Hi <%= world %>", @template_options.merge(:world => "world")), "Hi world"
|
25
|
+
end
|
26
|
+
should "call render with haml if rendered with haml" do
|
27
|
+
# assert Template.compile_string("Hi <%= world %>", @template_options.merge(:render_as => :haml, :world => "world")), nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auser-poolparty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Lerner
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-14 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -98,6 +98,7 @@ executables:
|
|
98
98
|
- cloud-rsync
|
99
99
|
- cloud-run
|
100
100
|
- cloud-setup-dev
|
101
|
+
- cloud-show
|
101
102
|
- cloud-spec
|
102
103
|
- cloud-ssh
|
103
104
|
- cloud-start
|
@@ -394,17 +395,6 @@ files:
|
|
394
395
|
- lib/poolparty/provision/configurations/chef.rb
|
395
396
|
- lib/poolparty/provision/configurations/puppet.rb
|
396
397
|
- lib/poolparty/provision/dr_configure.rb
|
397
|
-
- lib/poolparty/provisioners
|
398
|
-
- lib/poolparty/provisioners/capistrano
|
399
|
-
- lib/poolparty/provisioners/capistrano/capistrano.rb
|
400
|
-
- lib/poolparty/provisioners/capistrano/capistrano_configurer.rb
|
401
|
-
- lib/poolparty/provisioners/capistrano/recipes
|
402
|
-
- lib/poolparty/provisioners/capistrano/recipes/aws.rb
|
403
|
-
- lib/poolparty/provisioners/capistrano/recipes/base.rb
|
404
|
-
- lib/poolparty/provisioners/capistrano/recipes/master.rb
|
405
|
-
- lib/poolparty/provisioners/capistrano/recipes/puppet.rb
|
406
|
-
- lib/poolparty/provisioners/capistrano/recipes/slave.rb
|
407
|
-
- lib/poolparty/provisioners/provisioner_base.rb
|
408
398
|
- lib/poolparty/resources
|
409
399
|
- lib/poolparty/resources/cron.rb
|
410
400
|
- lib/poolparty/resources/custom_service.rb
|
@@ -576,10 +566,7 @@ files:
|
|
576
566
|
- spec/poolparty/poolparty/test_plugins/webserver.rb
|
577
567
|
- spec/poolparty/poolparty_base_class_spec.rb
|
578
568
|
- spec/poolparty/poolparty_spec.rb
|
579
|
-
- spec/poolparty/
|
580
|
-
- spec/poolparty/provisioners/capistrano
|
581
|
-
- spec/poolparty/provisioners/capistrano/capistrano_spec.rb
|
582
|
-
- spec/poolparty/provisioners/provisioner_base_spec.rb
|
569
|
+
- spec/poolparty/provision
|
583
570
|
- spec/poolparty/resources
|
584
571
|
- spec/poolparty/resources/cron_spec.rb
|
585
572
|
- spec/poolparty/resources/directory_spec.rb
|
@@ -601,9 +588,16 @@ files:
|
|
601
588
|
- spec/poolparty/spec/core/string_spec.rb
|
602
589
|
- spec/poolparty/spec_helper.rb
|
603
590
|
- spec/poolparty/test_spec_helper.rb
|
591
|
+
- test/fixtures
|
592
|
+
- test/fixtures/test_template.erb
|
604
593
|
- test/poolparty
|
605
594
|
- test/poolparty/core
|
606
595
|
- test/poolparty/core/hash_test.rb
|
596
|
+
- test/poolparty/poolparty
|
597
|
+
- test/poolparty/poolparty/template_test.rb
|
598
|
+
- test/poolparty/provision
|
599
|
+
- test/poolparty/provision/boot_strapper_test.rb
|
600
|
+
- test/poolparty/provision/dr_configure_test.rb
|
607
601
|
- test/test_generator_helper.rb
|
608
602
|
- test/test_helper.rb
|
609
603
|
- test/test_pool_spec_generator.rb
|
@@ -636,6 +630,7 @@ files:
|
|
636
630
|
- bin/cloud-rsync
|
637
631
|
- bin/cloud-run
|
638
632
|
- bin/cloud-setup-dev
|
633
|
+
- bin/cloud-show
|
639
634
|
- bin/cloud-spec
|
640
635
|
- bin/cloud-ssh
|
641
636
|
- bin/cloud-start
|
@@ -1,158 +0,0 @@
|
|
1
|
-
require "poolparty/capistrano"
|
2
|
-
|
3
|
-
module PoolParty
|
4
|
-
module Provisioner
|
5
|
-
class Capistrano < ProvisionerBase
|
6
|
-
|
7
|
-
include ::Capistrano::Configuration::Actions::Invocation
|
8
|
-
|
9
|
-
def loaded
|
10
|
-
dputs "Capistrano provisioner loaded..."
|
11
|
-
create_config
|
12
|
-
end
|
13
|
-
def process_install!(testing=false)
|
14
|
-
unless testing
|
15
|
-
@cloud.rsync_storage_files_to(@instance)
|
16
|
-
run_capistrano(roles_to_provision, :install)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
def process_configure!(testing=false)
|
20
|
-
unless testing
|
21
|
-
@cloud.rsync_storage_files_to(@instance)
|
22
|
-
run_capistrano(roles_to_provision, :configure)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def install_tasks
|
27
|
-
provision_master? ? master_install_tasks : slave_install_tasks
|
28
|
-
end
|
29
|
-
def configure_tasks
|
30
|
-
provision_master? ? master_configure_tasks : slave_configure_tasks
|
31
|
-
end
|
32
|
-
def master_install_tasks
|
33
|
-
[
|
34
|
-
"custom_install_tasks",
|
35
|
-
"master_provision_master_task",
|
36
|
-
"after_install_tasks",
|
37
|
-
"custom_configure_tasks",
|
38
|
-
"before_configuration_tasks",
|
39
|
-
"master_configure_master_task",
|
40
|
-
"run_provisioner_twice"
|
41
|
-
]#.map {|a| a.to_sym }
|
42
|
-
end
|
43
|
-
def master_configure_tasks
|
44
|
-
[
|
45
|
-
"before_configuration_tasks",
|
46
|
-
"master_configure_master_task"
|
47
|
-
]#.map {|a| a.to_sym }
|
48
|
-
end
|
49
|
-
|
50
|
-
def slave_install_tasks
|
51
|
-
[
|
52
|
-
"custom_install_tasks",
|
53
|
-
"slave_provision_slave_task",
|
54
|
-
"after_install_tasks",
|
55
|
-
"custom_configure_tasks",
|
56
|
-
"slave_configure_slave_task"
|
57
|
-
]
|
58
|
-
end
|
59
|
-
def slave_configure_tasks
|
60
|
-
[
|
61
|
-
"custom_configure_tasks",
|
62
|
-
"slave_configure_slave_task"
|
63
|
-
]#.flatten.map {|a| a.to_sym }
|
64
|
-
end
|
65
|
-
|
66
|
-
def set_poolparty_roles
|
67
|
-
return "" if testing
|
68
|
-
returning Array.new do |arr|
|
69
|
-
arr << "role 'master.#{cloud.name}'.to_sym, '#{cloud.ip}'"
|
70
|
-
arr << "role :master, '#{cloud.ip}'"
|
71
|
-
arr << "role :slaves, '#{cloud.nonmaster_nonterminated_instances.map{|a| a.ip}.join('", "')}'" if cloud.nonmaster_nonterminated_instances.size > 0
|
72
|
-
arr << "role :single, '#{@instance.ip}'" if @instance && @instance.ip
|
73
|
-
end.join("\n")
|
74
|
-
end
|
75
|
-
|
76
|
-
def parent
|
77
|
-
@cloud
|
78
|
-
end
|
79
|
-
|
80
|
-
# Create the config for capistrano
|
81
|
-
# This is a dynamic capistrano configuration file
|
82
|
-
def create_config
|
83
|
-
@config = ::Capistrano::Configuration.new
|
84
|
-
if @cloud.debug || @cloud.verbose
|
85
|
-
@config.logger.level = @cloud.debug ? ::Capistrano::Logger::MAX_LEVEL : ::Capistrano::Logger::INFO
|
86
|
-
else
|
87
|
-
@config.logger.level = ::Capistrano::Logger::IMPORTANT
|
88
|
-
end
|
89
|
-
|
90
|
-
capfile = returning Array.new do |arr|
|
91
|
-
Dir["#{::File.dirname(__FILE__)}/recipes/*.rb"].each {|a| arr << "require '#{a}'" }
|
92
|
-
arr << "ssh_options[:keys] = '#{parent.keypair}'"
|
93
|
-
|
94
|
-
arr << set_poolparty_roles
|
95
|
-
end.join("\n")
|
96
|
-
|
97
|
-
@config.provisioner = self
|
98
|
-
@config.cloud = @cloud
|
99
|
-
|
100
|
-
@config.load(:string => capfile)
|
101
|
-
|
102
|
-
@cloud.deploy_file? ? @config.load(@cloud.deploy_file) : @config.set(:user, @cloud.user)
|
103
|
-
end
|
104
|
-
|
105
|
-
# Prerun
|
106
|
-
def prerun_setup
|
107
|
-
end
|
108
|
-
|
109
|
-
# In run_capistrano, we are going to run the entire capistrano process
|
110
|
-
# First,
|
111
|
-
def run_capistrano(roles = [:master], meth = :install)
|
112
|
-
prerun_setup
|
113
|
-
commands = (meth == :install ? install_tasks : configure_tasks)
|
114
|
-
name = "#{roles.first}_provisioner_#{meth}"
|
115
|
-
|
116
|
-
__define_task(name, roles) do
|
117
|
-
commands.map do |command|
|
118
|
-
puts "executing task #{command}"
|
119
|
-
task = find_task(command.to_sym)
|
120
|
-
if task
|
121
|
-
task.options.merge!(:roles => roles)
|
122
|
-
execute_task task
|
123
|
-
else
|
124
|
-
if provisioner.respond_to?(command.to_sym)
|
125
|
-
cmd = provisioner.send(command.to_sym)
|
126
|
-
cmd = cmd.join(" && ") if cmd.is_a?(Array)
|
127
|
-
run(cmd)
|
128
|
-
else
|
129
|
-
self.send(command.to_sym)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
begin
|
136
|
-
__run(name)
|
137
|
-
return true
|
138
|
-
rescue ::Capistrano::CommandError => e
|
139
|
-
return false unless verbose
|
140
|
-
puts "Error: #{e} " and raise ProvisionerException.new("Error: #{e}")
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
def __define_task(name, roles, &block)
|
145
|
-
@config.task __task_sym(name), :roles => roles, &block
|
146
|
-
end
|
147
|
-
|
148
|
-
def __run(task)
|
149
|
-
@config.send __task_sym(task)
|
150
|
-
end
|
151
|
-
|
152
|
-
def __task_sym(name)
|
153
|
-
"#{name.to_s.downcase.underscore}".to_sym
|
154
|
-
end
|
155
|
-
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
=begin rdoc
|
2
|
-
This overwriting of the Capistrano method missing allows our capistrano
|
3
|
-
tasks to have access to the methods on the provisioner and options
|
4
|
-
set on the clouds. This saves us the responsibility of setting variables
|
5
|
-
in the dynamic cap file.
|
6
|
-
=end
|
7
|
-
#TODO# Clean up
|
8
|
-
module Capistrano
|
9
|
-
class Configuration
|
10
|
-
attr_accessor :cloud, :provisioner
|
11
|
-
|
12
|
-
def method_missing_without_variables(sym, *args, &block)
|
13
|
-
if parent.respond_to?(sym)
|
14
|
-
parent.send(sym, *args, &block)
|
15
|
-
elsif provisioner.respond_to?(sym)
|
16
|
-
provisioner.send(sym, *args, &block)
|
17
|
-
elsif cloud.respond_to?(sym)
|
18
|
-
cloud.send(sym, *args, &block)
|
19
|
-
elsif PoolParty::Default.options.has_key?(sym)
|
20
|
-
PoolParty::Default.options[sym]
|
21
|
-
elsif PoolParty::Default.respond_to?(sym)
|
22
|
-
PoolParty::Default.send(sym, *args, &block)
|
23
|
-
else
|
24
|
-
super
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
module Namespaces
|
30
|
-
class Namespace
|
31
|
-
|
32
|
-
def provisioner
|
33
|
-
parent.provisioner
|
34
|
-
end
|
35
|
-
|
36
|
-
def cloud(name=nil)
|
37
|
-
puts "name: #{name}"
|
38
|
-
name ? PoolParty::Cloud.clouds[name] : parent.cloud
|
39
|
-
end
|
40
|
-
|
41
|
-
def parent
|
42
|
-
cloud
|
43
|
-
end
|
44
|
-
|
45
|
-
def method_missing(sym, *args, &block)
|
46
|
-
# if parent
|
47
|
-
# parent.send(sym, *args, &block) rescue super
|
48
|
-
# else
|
49
|
-
# super
|
50
|
-
# end
|
51
|
-
if parent.respond_to?(sym)
|
52
|
-
parent.send(sym, *args, &block)
|
53
|
-
elsif provisioner.respond_to?(sym)
|
54
|
-
provisioner.send(sym, *args, &block)
|
55
|
-
elsif cloud.respond_to?(sym)
|
56
|
-
cloud.send(sym, *args, &block)
|
57
|
-
elsif PoolParty::Default.options.has_key?(sym)
|
58
|
-
PoolParty::Default.options[sym]
|
59
|
-
elsif PoolParty::Default.respond_to?(sym)
|
60
|
-
PoolParty::Default.send(sym, *args, &block)
|
61
|
-
else
|
62
|
-
super
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
-
|
3
|
-
desc "FIXME: temporary, ec2 specific hack untill server binaries are refactored"
|
4
|
-
def copy_ec2_poolparty_server_binaries
|
5
|
-
upload( "#{::File.dirname(__FILE__)}/../../../../../bin/ec2-list-active", '/usr/bin/server-list-active', :mode=>755)
|
6
|
-
# Dir["#{::File.dirname(__FILE__)}/../../../../../bin/*"].each{ |f|
|
7
|
-
# put f, '/usr'}
|
8
|
-
end
|
9
|
-
|
10
|
-
desc "Put poolparty keys"
|
11
|
-
def put_poolparty_keys
|
12
|
-
put keypair.full_filepath, remote_keypair_path, :mode => 600
|
13
|
-
end
|
14
|
-
|
15
|
-
desc "place the aws keys on the server at /etc/poolparty/aws_keys"
|
16
|
-
def put_aws_credintials_on_server
|
17
|
-
aws_keys={:access_key => access_key, :secret_access_key => secret_access_key}
|
18
|
-
put aws_keys.to_yaml, '/etc/poolparty/aws_keys.yml', :mode => 400
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
@@ -1,164 +0,0 @@
|
|
1
|
-
=begin rdoc
|
2
|
-
Base provisioner capistrano tasks
|
3
|
-
=end
|
4
|
-
|
5
|
-
# Run each of these methods inside the Capistrano:Configuration context, dynamicly adding each method as a capistrano task.
|
6
|
-
Capistrano::Configuration.instance(:must_exist).load do
|
7
|
-
|
8
|
-
# namespace(:base) do
|
9
|
-
desc "Install ruby"
|
10
|
-
def install_ruby_from_stable_source
|
11
|
-
# Not sure which is the appropriate step to take yet... install from source or using a package manager...
|
12
|
-
# We'll stick with the package manager for now
|
13
|
-
run "#{installer_for} ruby"
|
14
|
-
# run <<-EOR
|
15
|
-
# cd #{remote_storage_path}/dependencies.tar/packages/
|
16
|
-
# tar -zxf stable-snapshot.tar.gz
|
17
|
-
# cd ruby
|
18
|
-
# ./configure
|
19
|
-
# make
|
20
|
-
# make install
|
21
|
-
# EOR
|
22
|
-
end
|
23
|
-
desc "Install rubygems"
|
24
|
-
def install_rubygems_from_stable_source
|
25
|
-
# run "#{installer_for} ruby rubygems"
|
26
|
-
run <<-EOR
|
27
|
-
cd #{remote_storage_path}/dependencies.tar/packages/
|
28
|
-
tar -zxf rubygems
|
29
|
-
cd rubygems-1.3.1
|
30
|
-
ruby setup.rb
|
31
|
-
EOR
|
32
|
-
end
|
33
|
-
|
34
|
-
desc "Setup for poolparty"
|
35
|
-
def setup_for_poolparty
|
36
|
-
run "mkdir -p #{Default.base_config_directory}"
|
37
|
-
put cloud.to_properties_hash.to_json, "/etc/poolparty/clouds.json"
|
38
|
-
upload $pool_specfile, "#{Default.base_config_directory}/clouds.rb"
|
39
|
-
end
|
40
|
-
|
41
|
-
desc "Install provisioner"
|
42
|
-
def install_provisioner
|
43
|
-
run "#{installer_for} #{puppet_packages}"
|
44
|
-
end
|
45
|
-
|
46
|
-
desc "Create poolparty commands"
|
47
|
-
def create_poolparty_commands
|
48
|
-
end
|
49
|
-
|
50
|
-
desc "Fix rubygems"
|
51
|
-
def fix_rubygems
|
52
|
-
# echo '#{open(::File.join(template_directory, "gem")).read}' > /usr/bin/gem &&
|
53
|
-
# cp #{remote_storage_path}/gem /usr/bin/gem
|
54
|
-
run <<-EOR
|
55
|
-
if gem -v; then echo "gem is working"; else cp #{remote_storage_path}/gem /usr/bin/gem; fi;
|
56
|
-
/usr/bin/gem update --system 2>&1 > /dev/null;/usr/bin/gem update --system
|
57
|
-
GEMPATH=`gem env gempath`
|
58
|
-
cp $GEMPATH/bin/* /usr/bin;
|
59
|
-
if gem -v; then echo "gem is working"; else cp #{remote_storage_path}/gem /usr/bin/gem; fi;
|
60
|
-
echo 'gems updated!'
|
61
|
-
EOR
|
62
|
-
end
|
63
|
-
|
64
|
-
desc "Unpack dependency store"
|
65
|
-
def unpack_dependencies_store
|
66
|
-
"tar -zxf #{remote_storage_path}/dependencies.tar.gz"
|
67
|
-
end
|
68
|
-
|
69
|
-
desc "Install base gems"
|
70
|
-
def install_base_gems
|
71
|
-
# run(returning(Array.new) do |arr|
|
72
|
-
# base_gems.each do |name, url|
|
73
|
-
# str = url.empty? ? "#{name}" : "#{Base.remote_storage_path}/#{name}.gem"
|
74
|
-
# arr << "/usr/bin/gem install --ignore-dependencies --no-ri --no-rdoc #{str}; echo 'insatlled #{name}'"
|
75
|
-
# end
|
76
|
-
# end.join(" && "))
|
77
|
-
run <<-EOR
|
78
|
-
ruby -e 'Dir["#{remote_storage_path}/gems/cache/*.gem"].each {|g| `/usr/bin/gem install --ignore-dependencies --no-ri --no-rdoc \#\{g\}` }'
|
79
|
-
EOR
|
80
|
-
end
|
81
|
-
|
82
|
-
desc "Upgrade system"
|
83
|
-
def upgrade_system
|
84
|
-
str = case os
|
85
|
-
when :ubuntu
|
86
|
-
"
|
87
|
-
echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list &&
|
88
|
-
aptitude update -y
|
89
|
-
"
|
90
|
-
else
|
91
|
-
"echo 'No system upgrade needed'"
|
92
|
-
end
|
93
|
-
run str
|
94
|
-
end
|
95
|
-
|
96
|
-
# DEPRECATE
|
97
|
-
desc "Upgrade rubygems"
|
98
|
-
def upgrade_rubygems
|
99
|
-
|
100
|
-
end
|
101
|
-
|
102
|
-
desc "Make log directory"
|
103
|
-
def make_log_directory
|
104
|
-
run "mkdir -p /var/log/poolparty"
|
105
|
-
end
|
106
|
-
|
107
|
-
desc "Create ssl storage directories for poolparty"
|
108
|
-
def create_poolparty_ssl_store
|
109
|
-
run <<-EOR
|
110
|
-
mkdir -p #{poolparty_config_directory}/ssl/private_keys &&
|
111
|
-
mkdir -p #{poolparty_config_directory}/ssl/certs &&
|
112
|
-
mkdir -p #{poolparty_config_directory}/ssl/public_keys
|
113
|
-
EOR
|
114
|
-
end
|
115
|
-
desc "Add erlang cookie"
|
116
|
-
def write_erlang_cookie
|
117
|
-
# cookie = (1..16).collect { chars[rand(chars.size)] }.pack("C*")
|
118
|
-
cookie = (1..65).collect {rand(9)}.join()
|
119
|
-
put( cookie, '/root/.erlang.cookie', :mode => 400 )
|
120
|
-
end
|
121
|
-
|
122
|
-
desc "Setup basic poolparty structure"
|
123
|
-
def setup_basic_poolparty_structure
|
124
|
-
run <<-EOR
|
125
|
-
echo "Creating basic structure for poolparty" &&
|
126
|
-
mkdir -p /etc/puppet/manifests/nodes &&
|
127
|
-
mkdir -p /etc/puppet/manifests/classes &&
|
128
|
-
echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp &&
|
129
|
-
echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
|
130
|
-
EOR
|
131
|
-
end
|
132
|
-
|
133
|
-
desc "Setup shareable file system for provisioner"
|
134
|
-
def setup_provisioner_filestore
|
135
|
-
run <<-EOR
|
136
|
-
echo '[files]' > /etc/puppet/fileserver.conf &&
|
137
|
-
echo ' path #{remote_storage_path}' >> /etc/puppet/fileserver.conf &&
|
138
|
-
echo ' allow *' >> /etc/puppet/fileserver.conf &&
|
139
|
-
mkdir -p /var/poolparty/facts &&
|
140
|
-
mkdir -p /var/poolparty/files &&
|
141
|
-
mkdir -p #{base_config_directory}
|
142
|
-
EOR
|
143
|
-
end
|
144
|
-
|
145
|
-
desc "Setup autosigning for provisioner"
|
146
|
-
def setup_provisioner_autosigning
|
147
|
-
run "echo \"*\" > /etc/puppet/autosign.conf"
|
148
|
-
end
|
149
|
-
|
150
|
-
desc "ensure gem binaries are copied to /usr/bin/"
|
151
|
-
def copy_gem_bins_to_usr_bin
|
152
|
-
run 'cp /usr/lib/ruby/gems/1.8/gems/*/bin/* /usr/bin'
|
153
|
-
end
|
154
|
-
|
155
|
-
|
156
|
-
desc "ensure gem binaries are copied to /usr/bin/"
|
157
|
-
def copy_gem_bins_to_usr_bin
|
158
|
-
run 'GEMPATH=`gem env gempath` && cp $GEMPATH/bin/* /usr/bin/'
|
159
|
-
run 'ls /usr/bin/|grep server'
|
160
|
-
run 'echo --------- binaries copied ---------\n\n'
|
161
|
-
end
|
162
|
-
|
163
|
-
# end
|
164
|
-
end
|