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.
Files changed (33) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/cloud-show +27 -0
  3. data/lib/poolparty/base_packages/haproxy.rb +4 -3
  4. data/lib/poolparty/dependency_resolver/chef_resolver.rb +14 -2
  5. data/lib/poolparty/helpers/binary.rb +8 -7
  6. data/lib/poolparty/lite.rb +1 -1
  7. data/lib/poolparty/monitors/base_monitor.rb +81 -81
  8. data/lib/poolparty/monitors/monitor_rack.rb +8 -1
  9. data/lib/poolparty/monitors/stats_monitor.rb +11 -12
  10. data/lib/poolparty/poolparty/cloud.rb +22 -136
  11. data/lib/poolparty/poolparty/template.rb +10 -1
  12. data/lib/poolparty/provision/boot_strapper.rb +2 -1
  13. data/lib/poolparty/resources/file.rb +4 -4
  14. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +1 -1
  15. data/spec/poolparty/net/remote_spec.rb +0 -1
  16. data/spec/poolparty/poolparty/cloud_spec.rb +2 -36
  17. data/spec/poolparty/resources/file_spec.rb +1 -0
  18. data/test/fixtures/test_template.erb +1 -0
  19. data/test/poolparty/poolparty/template_test.rb +31 -0
  20. data/test/poolparty/provision/boot_strapper_test.rb +6 -0
  21. data/test/poolparty/provision/dr_configure_test.rb +6 -0
  22. data/test/test_helper.rb +2 -0
  23. metadata +12 -17
  24. data/lib/poolparty/provisioners/capistrano/capistrano.rb +0 -158
  25. data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +0 -69
  26. data/lib/poolparty/provisioners/capistrano/recipes/aws.rb +0 -21
  27. data/lib/poolparty/provisioners/capistrano/recipes/base.rb +0 -164
  28. data/lib/poolparty/provisioners/capistrano/recipes/master.rb +0 -66
  29. data/lib/poolparty/provisioners/capistrano/recipes/puppet.rb +0 -101
  30. data/lib/poolparty/provisioners/capistrano/recipes/slave.rb +0 -36
  31. data/lib/poolparty/provisioners/provisioner_base.rb +0 -222
  32. data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +0 -40
  33. 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
- run_erb = dsl_options.include?(:erb) ? dsl_options.delete(:erb) : false
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 => run_erb ? Template.compile_file(filename, template_opts).gsub("\"", "\"") : open(filename).read)
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 => run_erb ? Template.compile_string(cont, template_opts) : cont)
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/puppet/manifests/classes/poolparty.pp").and_return true
317
- @cloud.stub!(:open).with("/etc/puppet/manifests/classes/poolparty.pp").and_return @file
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
@@ -30,6 +30,7 @@ describe "File" do
30
30
  template "/absolute/path/to/template"
31
31
  runner "is super fast"
32
32
  friends "bob"
33
+ render_as :erb
33
34
  end
34
35
  end
35
36
  @file = @tc.resource(:file).first
@@ -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
@@ -0,0 +1,6 @@
1
+ require "#{::File.dirname(__FILE__)}/../../test_helper"
2
+
3
+ class TestBootstrapper < Test::Unit::TestCase
4
+ context "test" do
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require "#{::File.dirname(__FILE__)}/../../test_helper"
2
+
3
+ class TestDrConfigure < Test::Unit::TestCase
4
+ context "test" do
5
+ end
6
+ end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
1
  require "rubygems"
2
+ require "test/unit"
2
3
  require "context"
4
+ require "shoulda"
3
5
  require File.dirname(__FILE__) + '/../lib/PoolParty'
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.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-13 00:00:00 -07:00
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/provisioners
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