auser-poolparty 0.2.81 → 0.2.84

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 (49) hide show
  1. data/Capfile +1 -0
  2. data/Manifest.txt +13 -6
  3. data/PostInstall.txt +1 -1
  4. data/bin/cloud-configure +2 -1
  5. data/bin/cloud-handle-load +3 -3
  6. data/bin/cloud-maintain +2 -2
  7. data/bin/cloud-provision +4 -4
  8. data/bin/cloud-setup-dev +25 -0
  9. data/bin/cloud-start +1 -0
  10. data/bin/server-start-client +1 -1
  11. data/bin/server-start-master +1 -1
  12. data/bin/server-start-node +1 -1
  13. data/bin/server-write-new-nodes +26 -0
  14. data/lib/poolparty/capistrano.rb +18 -0
  15. data/lib/poolparty/exceptions/ProvisionerException.rb +5 -0
  16. data/lib/poolparty/helpers/optioner.rb +2 -1
  17. data/lib/poolparty/modules/cloud_resourcer.rb +17 -0
  18. data/lib/poolparty/modules/file_writer.rb +2 -2
  19. data/lib/poolparty/net/messenger.rb +1 -1
  20. data/lib/poolparty/net/remote_bases/ec2.rb +3 -2
  21. data/lib/poolparty/net/remoter.rb +12 -8
  22. data/lib/poolparty/plugins/git.rb +5 -1
  23. data/lib/poolparty/poolparty/cloud.rb +3 -1
  24. data/lib/poolparty/provisioners/capistrano/capistrano.rb +129 -0
  25. data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +58 -0
  26. data/lib/poolparty/provisioners/capistrano/recipies/base.rb +100 -0
  27. data/lib/poolparty/provisioners/capistrano/recipies/master.rb +120 -0
  28. data/lib/poolparty/provisioners/capistrano/recipies/slave.rb +12 -0
  29. data/lib/poolparty/provisioners/provisioner_base.rb +98 -274
  30. data/lib/poolparty/templates/gem +12 -10
  31. data/lib/poolparty/version.rb +1 -1
  32. data/lib/poolparty.rb +5 -3
  33. data/poolparty.gemspec +18 -9
  34. data/spec/poolparty/helpers/optioner_spec.rb +1 -1
  35. data/spec/poolparty/net/remote_spec.rb +13 -14
  36. data/spec/poolparty/net/remoter_spec.rb +11 -11
  37. data/spec/poolparty/plugins/git_spec.rb +1 -1
  38. data/spec/poolparty/poolparty_spec.rb +1 -1
  39. data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +27 -0
  40. data/spec/poolparty/provisioners/provisioner_base_spec.rb +120 -0
  41. data/spec/poolparty/spec_helper.rb +15 -1
  42. data/website/index.html +1 -1
  43. metadata +18 -9
  44. data/lib/poolparty/provisioners/provisioners/become_master.rb +0 -166
  45. data/lib/poolparty/provisioners/provisioners/master.rb +0 -196
  46. data/lib/poolparty/provisioners/provisioners/slave.rb +0 -65
  47. data/spec/poolparty/helpers/provisioner_base_spec.rb +0 -137
  48. data/spec/poolparty/helpers/provisioners/master_spec.rb +0 -53
  49. data/spec/poolparty/helpers/provisioners/slave_spec.rb +0 -27
@@ -0,0 +1,58 @@
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::Base.options.has_key?(sym)
20
+ PoolParty::Base.options[sym]
21
+ elsif PoolParty::Base.respond_to?(sym)
22
+ PoolParty::Base.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
37
+ parent.cloud
38
+ end
39
+
40
+ def method_missing(sym, *args, &block)
41
+ if parent.respond_to?(sym)
42
+ parent.send(sym, *args, &block)
43
+ elsif provisioner.respond_to?(sym)
44
+ provisioner.send(sym, *args, &block)
45
+ elsif cloud.respond_to?(sym)
46
+ cloud.send(sym, *args, &block)
47
+ elsif PoolParty::Base.options.has_key?(sym)
48
+ PoolParty::Base.options[sym]
49
+ elsif PoolParty::Base.respond_to?(sym)
50
+ PoolParty::Base.send(sym, *args, &block)
51
+ else
52
+ super
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,100 @@
1
+ =begin rdoc
2
+ Base provisioner capistrano tasks
3
+ =end
4
+ Capistrano::Configuration.instance(:must_exist).load do
5
+ # namespace(:base) do
6
+ desc "Install rubygems"
7
+ task :install_rubygems do
8
+ run "#{installer_for} ruby rubygems"
9
+ end
10
+ desc "Install provisioner"
11
+ task :install_provisioner do
12
+ run "#{installer_for} #{puppet_packages}"
13
+ end
14
+ desc "Create poolparty commands"
15
+ task :create_poolparty_commands do
16
+ end
17
+ desc "Create poolparty runner command"
18
+ task :create_puppetrunner_command do
19
+ run <<-EOR
20
+ cp #{remote_storage_path}/templates/puppetrunner /usr/bin/puppetrunner &&
21
+ chmod +x /usr/bin/puppetrunner
22
+ EOR
23
+ end
24
+ desc "Create poolparty rerun command"
25
+ task :create_puppetrerun_command do
26
+ run <<-EOR
27
+ cp #{remote_storage_path}/templates/puppetrerun /usr/bin/puppetrerun &&
28
+ chmod +x /usr/bin/puppetrerun
29
+ EOR
30
+ end
31
+ desc "Add the proper configs for provisioner"
32
+ task :add_provisioner_configs do
33
+ run "cp #{remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf"
34
+ end
35
+ desc "Setup config file for provisioner"
36
+ task :setup_provisioner_config do
37
+ run "mv #{remote_storage_path}/puppet.conf /etc/puppet/puppet.conf"
38
+ end
39
+ desc "Run the provisioner"
40
+ task :run_provisioner do
41
+ run "/usr/sbin/puppetd --onetime --daemonize --logdest syslog --server master"
42
+ end
43
+ desc "Rerun the provisioner"
44
+ task :rerun_provisioner do
45
+ run "/usr/bin/puppetrerun"
46
+ end
47
+ desc "Remove the certs"
48
+ task :remove_certs do
49
+ run "rm -rf /etc/puppet/ssl"
50
+ end
51
+ desc "Update rubygems"
52
+ task :update_rubygems do
53
+ run "/usr/bin/gem update --system 2>1 > /dev/null && /usr/bin/gem update --system"
54
+ end
55
+ desc "Fix rubygems"
56
+ task :fix_rubygems do
57
+ # echo '#{open(::File.join(template_directory, "gem")).read}' > /usr/bin/gem &&
58
+ run <<-EOR
59
+ /usr/bin/gem update --system 2>&1 > /dev/null;/usr/bin/gem update --system &&
60
+ cp -f #{remote_storage_path}/gem /usr/bin/gem
61
+ EOR
62
+ end
63
+ desc "Upgrade system"
64
+ task :upgrade_system do
65
+ str = case os
66
+ when :ubuntu
67
+ "
68
+ echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list &&
69
+ aptitude update -y
70
+ "
71
+ else
72
+ "echo 'No system upgrade needed'"
73
+ end
74
+ run str
75
+ end
76
+ desc "Upgrade rubygems"
77
+ task :upgrade_rubygems do
78
+
79
+ end
80
+ desc "Make log directory"
81
+ task :make_log_directory do
82
+ run "mkdir -p /var/log/poolparty"
83
+ end
84
+ desc "Create ssl storage directories for poolparty"
85
+ task :create_poolparty_ssl_store do
86
+ run <<-EOR
87
+ mkdir -p #{poolparty_config_directory}/ssl/private_keys &&
88
+ mkdir -p #{poolparty_config_directory}/ssl/certs &&
89
+ mkdir -p #{poolparty_config_directory}/ssl/public_keys
90
+ EOR
91
+ end
92
+ desc "Add erlang cookie"
93
+ task :write_erlang_cookie do
94
+ run <<-EOR
95
+ mv #{remote_storage_path}/cookie ~/.erlang.cookie &&
96
+ chmod 400 ~/.erlang.cookie
97
+ EOR
98
+ end
99
+ # end
100
+ end
@@ -0,0 +1,120 @@
1
+ # Cloud tasks
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace(:master) do
4
+ desc "Provision master"
5
+ task :provision_master do
6
+ upgrade_system
7
+ set_hostname_to_master
8
+ create_local_hosts_entry
9
+ install_provisioner
10
+ start_provisioner_base
11
+ setup_basic_poolparty_structure
12
+ setup_provisioner_filestore
13
+ setup_provisioner_autosigning
14
+ install_rubygems
15
+ fix_rubygems
16
+ add_provisioner_configs
17
+ setup_provisioner_config
18
+ create_puppetrunner_command
19
+ create_puppetrerun_command
20
+ download_base_gems
21
+ install_base_gems
22
+ write_erlang_cookie
23
+ end
24
+ desc "Configure master"
25
+ task :configure_master do
26
+ master:move_provisioner_manifest
27
+ master:move_template_files
28
+ master:setup_poolparty_base_structure
29
+ run_provisioner
30
+ end
31
+ desc "Set hostname to master"
32
+ task :set_hostname_to_master do
33
+ run "hostname master"
34
+ end
35
+ desc "Add host entry into the master instance"
36
+ task :create_local_hosts_entry do
37
+ run "if [ -z \"$(grep -v '#' /etc/hosts | grep 'puppet')\" ]; then echo '#{cloud.master.ip} master puppet localhost' >> /etc/hosts; fi"
38
+ end
39
+ desc "Setup basic poolparty structure"
40
+ task :setup_basic_poolparty_structure do
41
+ run <<-EOR
42
+ echo "Creating basic structure for poolparty" &&
43
+ mkdir -p /etc/puppet/manifests/nodes &&
44
+ mkdir -p /etc/puppet/manifests/classes &&
45
+ echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp &&
46
+ echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
47
+ EOR
48
+ end
49
+ desc "Setup shareable file system for provisioner"
50
+ task :setup_provisioner_filestore do
51
+ run <<-EOR
52
+ echo '[files]' > /etc/puppet/fileserver.conf &&
53
+ echo ' path #{remote_storage_path}' >> /etc/puppet/fileserver.conf &&
54
+ echo ' allow *' >> /etc/puppet/fileserver.conf &&
55
+ mkdir -p /var/poolparty/facts &&
56
+ mkdir -p /var/poolparty/files &&
57
+ mkdir -p #{base_config_directory}
58
+ EOR
59
+ end
60
+ desc "Setup autosigning for provisioner"
61
+ task :setup_provisioner_autosigning do
62
+ run "echo \"*\" > /etc/puppet/autosign.conf"
63
+ end
64
+ desc "Setup poolparty structure"
65
+ task :setup_poolparty_base_structure do
66
+ run <<-EOR
67
+ cp #{remote_storage_path}/#{key_file_locations.first} "#{base_config_directory}/.ppkeys" &&
68
+ mv #{remote_storage_path}/#{default_specfile_name} #{base_config_directory}/
69
+ EOR
70
+ end
71
+ desc "Download base gems"
72
+ task :download_base_gems do
73
+ run download_base_gems_string
74
+ end
75
+ desc "Install base gems"
76
+ task :install_base_gems do
77
+ run(returning(Array.new) do |arr|
78
+ base_gems.each do |name, url|
79
+ arr << "/usr/bin/gem install --ignore-dependencies --no-ri --no-rdoc #{Base.remote_storage_path}/#{name}.gem"
80
+ end
81
+ end.join(" && "))
82
+ end
83
+ desc "Start provisioner base"
84
+ task :start_provisioner_base do
85
+ run "/etc/init.d/puppetmaster start"
86
+ end
87
+ desc "Restart provisioner base"
88
+ task :restart_provisioner_base do
89
+ run "/etc/init.d/puppetmaster stop;rm -rf /etc/poolparty/ssl;puppetmasterd --verbose;/etc/init.d/puppetmaster start"
90
+ end
91
+ desc "Create local node for puppet manifest"
92
+ task :create_local_node_entry_for_puppet do
93
+ # run ". /etc/profile && server-write-new-nodes"
94
+ str = returning Array.new do |arr|
95
+ arr << "node default { include poolparty }"
96
+ list_of_running_instances.each do |ri|
97
+ arr << "node \"#{ri.name}\" inherits default {}\n"
98
+ end
99
+ end.join("\n")
100
+ run "echo #{str} > #{manifest_path}/nodes/nodes.pp"
101
+ end
102
+ desc "Move template files into place"
103
+ task :move_template_files do
104
+ run <<-EOR
105
+ mkdir -p #{template_path} &&
106
+ cp -R #{remote_storage_path}/templates/* #{template_path}
107
+ EOR
108
+ end
109
+ desc "Move manifest into place"
110
+ task :move_provisioner_manifest do
111
+ run <<-EOR
112
+ cp #{remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolparty.pp
113
+ EOR
114
+ end
115
+ desc "Move poolparty keys"
116
+ task :move_poolparty_keys do
117
+ run "cp #{remote_storage_path}/#{@full_keypair_name} #{@remote_keypair_path}"
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,12 @@
1
+ Capistrano::Configuration.instance(:must_exist).load do
2
+ namespace(:slave) do
3
+ desc "Add master ip to hosts file"
4
+ task :add_master_to_hosts_file do
5
+ run "if [ -z \"$(grep -v '#' /etc/hosts | grep 'master')\" ]; then echo '#{master_ip} puppet master' >> /etc/hosts; else echo 'host already set'; fi"
6
+ end
7
+ desc "Stop provisioner daemon"
8
+ task :stop_provisioner_daemon do
9
+ run "/etc/init.d/puppetmaster stop"
10
+ end
11
+ end
12
+ end