poolparty 0.2.18 → 0.2.69
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 +142 -47
- data/PostInstall.txt +5 -5
- data/README.txt +25 -4
- data/Rakefile +46 -2
- data/bin/cloud +12 -21
- data/bin/cloud-add-keypair +18 -13
- data/bin/cloud-configure +11 -18
- data/bin/cloud-contract +7 -17
- data/bin/cloud-ensure-provisioning +39 -0
- data/bin/cloud-expand +9 -17
- data/bin/cloud-handle-load +27 -0
- data/bin/cloud-list +3 -9
- data/bin/cloud-maintain +12 -18
- data/bin/cloud-osxcopy +3 -9
- data/bin/cloud-provision +20 -21
- data/bin/cloud-refresh +4 -13
- data/bin/cloud-run +3 -4
- data/bin/cloud-ssh +3 -2
- data/bin/cloud-start +18 -21
- data/bin/cloud-stats +17 -0
- data/bin/cloud-terminate +4 -7
- data/bin/messenger-get-current-nodes +14 -0
- data/bin/pool +12 -12
- data/bin/pool-describe +0 -1
- data/bin/{pool-spec → pool-generate} +1 -0
- data/bin/pool-init +28 -0
- data/bin/pool-list +14 -12
- data/bin/pool-start +11 -17
- data/bin/server-build-messenger +13 -6
- data/bin/server-fire-cmd +1 -1
- data/bin/server-get-load +5 -16
- data/bin/server-list-active +3 -10
- data/bin/server-rerun +4 -4
- data/bin/server-send-command +18 -0
- data/bin/server-show-stats +17 -0
- data/bin/server-start-client +29 -0
- data/bin/server-start-master +13 -14
- data/bin/server-start-node +14 -15
- data/bin/server-stop-client +3 -0
- data/bin/server-stop-master +3 -0
- data/bin/server-stop-node +3 -0
- data/bin/server-update-hosts +48 -0
- data/config/hoe.rb +4 -3
- data/examples/plugin_without_plugin_directory.rb +1 -2
- data/generators/poolspec/USAGE +2 -2
- data/generators/poolspec/poolspec_generator.rb +2 -1
- data/generators/poolspec/templates/pool_spec_template.erb +3 -2
- data/lib/erlang/messenger/Rakefile +12 -0
- data/lib/erlang/messenger/ebin/client.app +19 -0
- data/lib/erlang/messenger/ebin/master.app +1 -1
- data/lib/erlang/messenger/ebin/node.app +1 -1
- data/lib/erlang/messenger/ebin/pm_client_rel-0.1.rel +1 -0
- data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +1 -1
- data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -1
- data/lib/erlang/messenger/include/defines.hrl +27 -0
- data/lib/erlang/messenger/lib/eunit/.svn/all-wcprops +53 -0
- data/lib/erlang/messenger/lib/eunit/.svn/entries +140 -0
- data/lib/erlang/messenger/lib/eunit/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/.svn/prop-base/NOTES.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/AUTHORS.svn-base +2 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/CHANGELOG.svn-base +14 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/COPYING.svn-base +504 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/NOTES.svn-base +276 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/README.svn-base +3 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/sys.config.svn-base +9 -0
- data/lib/erlang/messenger/lib/eunit/.svn/text-base/vsn.mk.svn-base +1 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/all-wcprops +59 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/entries +142 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/erlang.png.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/eunit.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/index.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/modules-frame.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/overview-summary.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/packages-frame.html.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/edoc-info.svn-base +3 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/erlang.png.svn-base +0 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/eunit.html.svn-base +172 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/index.html.svn-base +17 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/modules-frame.html.svn-base +12 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview-summary.html.svn-base +984 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview.edoc.svn-base +980 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/packages-frame.html.svn-base +11 -0
- data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/stylesheet.css.svn-base +55 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/all-wcprops +5 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/dir-prop-base +8 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/entries +28 -0
- data/lib/erlang/messenger/lib/eunit/ebin/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/all-wcprops +23 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/entries +66 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/eunit_examples.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/fib.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/eunit_examples.erl.svn-base +339 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/fib.erl.svn-base +19 -0
- data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/tests.txt.svn-base +1 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/all-wcprops +11 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/entries +41 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/prop-base/eunit.hrl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/include/.svn/text-base/eunit.hrl.svn-base +313 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/all-wcprops +113 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/entries +259 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/format +1 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/autoload.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/code_monitor.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_autoexport.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_data.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_internal.hrl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_lib.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_proc.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_serial.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_server.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_striptests.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_test.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tests.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tty.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/file_monitor.erl.svn-base +5 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/autoload.erl.svn-base +388 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/code_monitor.erl.svn-base +243 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.app.src.svn-base +21 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.appup.src.svn-base +1 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.erl.svn-base +196 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_autoexport.erl.svn-base +102 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_data.erl.svn-base +798 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_internal.hrl.svn-base +48 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_lib.erl.svn-base +682 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_proc.erl.svn-base +552 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_serial.erl.svn-base +157 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_server.erl.svn-base +340 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_striptests.erl.svn-base +64 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_test.erl.svn-base +334 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tests.erl.svn-base +45 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tty.erl.svn-base +272 -0
- data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/file_monitor.erl.svn-base +409 -0
- data/lib/erlang/messenger/pm_client_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_client_rel-0.1.script +238 -0
- data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_master_rel-0.1.script +82 -85
- data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
- data/lib/erlang/messenger/pm_node_rel-0.1.script +80 -85
- data/lib/erlang/messenger/src/client_app.erl +39 -0
- data/lib/erlang/messenger/src/client_server.erl +60 -0
- data/lib/erlang/messenger/src/pm_client.erl +48 -18
- data/lib/erlang/messenger/src/pm_client_old.erl +52 -0
- data/lib/erlang/messenger/src/pm_client_supervisor.erl +38 -0
- data/lib/erlang/messenger/src/pm_cluster.erl +20 -16
- data/lib/erlang/messenger/src/pm_event_manager.erl +27 -0
- data/lib/erlang/messenger/src/pm_master.erl +126 -34
- 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 +107 -30
- data/lib/erlang/messenger/src/pm_node_supervisor.erl +13 -15
- data/lib/erlang/messenger/src/pm_packager.erl +5 -2
- data/lib/erlang/messenger/src/pm_strings.erl +11 -0
- data/lib/erlang/messenger/src/utils.erl +43 -8
- data/lib/erlang/messenger/useful_snippets +17 -0
- data/lib/poolparty/aska/aska.rb +150 -0
- data/lib/poolparty/base_packages/haproxy.rb +19 -26
- data/lib/poolparty/base_packages/heartbeat.rb +48 -47
- data/lib/poolparty/base_packages/poolparty.rb +88 -36
- data/lib/poolparty/base_packages/runit.rb +21 -0
- data/lib/poolparty/config/postlaunchmessage.txt +5 -0
- data/lib/poolparty/core/array.rb +4 -1
- data/lib/poolparty/core/class.rb +2 -0
- data/lib/poolparty/core/exception.rb +2 -1
- data/lib/poolparty/core/hash.rb +2 -2
- data/lib/poolparty/core/kernel.rb +3 -3
- data/lib/poolparty/core/metaid.rb +15 -0
- data/lib/poolparty/core/object.rb +42 -2
- data/lib/poolparty/core/string.rb +21 -6
- data/lib/poolparty/core/symbol.rb +9 -0
- data/lib/poolparty/dependency_resolutions/puppet.rb +20 -7
- data/lib/poolparty/exceptions/CloudNotFoundException.rb +7 -0
- data/lib/poolparty/exceptions/LoadRulesException.rb +7 -0
- data/lib/poolparty/exceptions/MasterException.rb +10 -0
- data/lib/poolparty/helpers/binary.rb +37 -4
- data/lib/poolparty/helpers/console.rb +25 -8
- data/lib/poolparty/helpers/nice_printer.rb +36 -0
- data/lib/poolparty/helpers/optioner.rb +51 -16
- data/lib/poolparty/helpers/provisioner_base.rb +117 -28
- data/lib/poolparty/helpers/provisioners/master.rb +102 -35
- data/lib/poolparty/helpers/provisioners/slave.rb +25 -9
- data/lib/poolparty/modules/cloud_dsl.rb +13 -0
- data/lib/poolparty/modules/cloud_resourcer.rb +51 -8
- data/lib/poolparty/modules/configurable.rb +1 -1
- data/lib/poolparty/modules/definable_resource.rb +2 -2
- data/lib/poolparty/modules/file_writer.rb +37 -6
- data/lib/poolparty/modules/method_missing_sugar.rb +8 -3
- data/lib/poolparty/modules/pretty_printer.rb +1 -0
- data/lib/poolparty/modules/resourcing_dsl.rb +4 -2
- data/lib/poolparty/modules/thread_pool.rb +106 -0
- data/lib/poolparty/monitors/base_monitor.rb +65 -6
- data/lib/poolparty/monitors/monitors/cpu_monitor.rb +1 -1
- data/lib/poolparty/monitors/monitors/memory_monitor.rb +28 -1
- data/lib/poolparty/monitors/monitors/web_monitor.rb +18 -0
- data/lib/poolparty/net/messenger.rb +72 -0
- data/lib/poolparty/net/remote.rb +5 -2
- data/lib/poolparty/net/remote_bases/ec2/ec2_response_object.rb +66 -0
- data/lib/poolparty/net/remote_bases/ec2.rb +133 -131
- data/lib/poolparty/net/remote_instance.rb +28 -6
- data/lib/poolparty/net/remoter.rb +117 -64
- data/lib/poolparty/net/remoter_base.rb +49 -11
- data/lib/poolparty/plugins/deploydirectory.rb +66 -0
- data/lib/poolparty/plugins/line.rb +5 -4
- data/lib/poolparty/plugins/rsyncmirror.rb +26 -0
- data/lib/poolparty/plugins/runit.rb +96 -0
- data/lib/poolparty/plugins/svn.rb +1 -1
- data/lib/poolparty/pool/base.rb +47 -18
- data/lib/poolparty/pool/cloud.rb +121 -65
- data/lib/poolparty/pool/custom_resource.rb +4 -20
- data/lib/poolparty/pool/loggable.rb +3 -8
- data/lib/poolparty/pool/plugin.rb +14 -19
- data/lib/poolparty/pool/plugin_model.rb +8 -8
- data/lib/poolparty/pool/pool.rb +28 -11
- data/lib/poolparty/pool/resource.rb +109 -40
- data/lib/poolparty/pool/resources/class_package.rb +74 -33
- data/lib/poolparty/pool/resources/conditional.rb +32 -10
- data/lib/poolparty/pool/resources/custom_service.rb +30 -0
- data/lib/poolparty/pool/resources/exec.rb +6 -5
- data/lib/poolparty/pool/resources/gem_package.rb +52 -0
- data/lib/poolparty/pool/resources/mount.rb +22 -0
- data/lib/poolparty/pool/resources/package.rb +13 -3
- data/lib/poolparty/pool/resources/sshkey.rb +1 -1
- data/lib/poolparty/pool/resources/variable.rb +4 -0
- data/lib/poolparty/pool/script.rb +8 -6
- data/lib/poolparty/templates/haproxy.conf +1 -1
- data/lib/poolparty/templates/messenger/client/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/client/run.erb +4 -0
- data/lib/poolparty/templates/messenger/master/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/master/run.erb +4 -0
- data/lib/poolparty/templates/messenger/node/log-run.erb +2 -0
- data/lib/poolparty/templates/messenger/node/run.erb +4 -0
- data/lib/poolparty/templates/poolparty.monitor +1 -1
- data/lib/poolparty/templates/puppet.conf +0 -0
- data/lib/poolparty/templates/puppetcleaner +6 -0
- data/lib/poolparty/templates/puppetrerun +9 -0
- data/lib/poolparty/templates/puppetrunner +8 -0
- data/lib/poolparty/templates/yaws.conf +19 -0
- data/lib/poolparty/version.rb +1 -1
- data/lib/poolparty.rb +35 -6
- data/lib/poolpartycl.rb +4 -0
- data/log/pool.logs +0 -0
- data/poolparty.gemspec +574 -61
- data/spec/poolparty/aska/aska_spec.rb +122 -0
- data/spec/poolparty/bin/console_spec.rb +18 -0
- data/spec/poolparty/core/hash_spec.rb +4 -4
- data/spec/poolparty/core/object_spec.rb +29 -0
- data/spec/poolparty/core/string_spec.rb +6 -0
- data/spec/poolparty/core/time_spec.rb +0 -3
- data/spec/poolparty/helpers/binary_spec.rb +2 -2
- data/spec/poolparty/helpers/optioner_spec.rb +1 -4
- data/spec/poolparty/helpers/provisioner_base_spec.rb +14 -1
- data/spec/poolparty/helpers/provisioners/master_spec.rb +3 -3
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +3 -3
- data/spec/poolparty/modules/configurable_spec.rb +4 -1
- data/spec/poolparty/monitors/base_monitor_spec.rb +94 -2
- data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +0 -1
- data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +47 -0
- data/spec/poolparty/{helpers → net}/messenger_spec.rb +3 -1
- data/spec/poolparty/net/remote_bases/ec2_spec.rb +46 -5
- data/spec/poolparty/net/remote_instance_spec.rb +2 -1
- data/spec/poolparty/net/remote_spec.rb +30 -8
- data/spec/poolparty/net/remoter_base_spec.rb +4 -1
- data/spec/poolparty/net/remoter_spec.rb +11 -108
- data/spec/poolparty/plugins/deploydirectory_spec.rb +51 -0
- data/spec/poolparty/pool/base_spec.rb +43 -33
- data/spec/poolparty/pool/cloud_spec.rb +299 -248
- data/spec/poolparty/pool/custom_resource_spec.rb +10 -5
- data/spec/poolparty/pool/example_spec.rb +0 -84
- data/spec/poolparty/pool/plugin_model_spec.rb +3 -2
- data/spec/poolparty/pool/plugin_spec.rb +89 -62
- data/spec/poolparty/pool/pool_spec.rb +17 -2
- data/spec/poolparty/pool/resource_spec.rb +341 -236
- data/spec/poolparty/pool/resources/class_package_spec.rb +102 -66
- data/spec/poolparty/pool/resources/conditional_spec.rb +65 -26
- data/spec/poolparty/pool/resources/cron_spec.rb +3 -2
- data/spec/poolparty/pool/resources/exec_spec.rb +1 -1
- data/spec/poolparty/pool/resources/gem_spec.rb +18 -14
- data/spec/poolparty/pool/resources/remote_file_spec.rb +1 -1
- data/spec/poolparty/pool/resources/variable_spec.rb +1 -1
- data/spec/poolparty/pool/script_spec.rb +58 -37
- data/spec/poolparty/pool/test_plugins/webserver.rb +1 -0
- data/spec/poolparty/spec_helper.rb +16 -5
- data/tasks/deployment.rake +19 -3
- data/tasks/development.rake +11 -2
- data/tasks/ec2.rake +9 -1
- data/website/index.html +2 -2
- metadata +167 -70
- data/bin/pool-provision +0 -34
- data/erl_crash.dump +0 -8409
- data/examples/with_apache_plugin.rb +0 -22
- data/lib/erlang/messenger/Makefile +0 -15
- data/lib/erlang/messenger/ebin/master_app.beam +0 -0
- 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_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_node.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/ebin/utils.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/Makefile +0 -28
- data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
- data/lib/erlang/messenger/lib/eunit/src/Makefile +0 -46
- data/lib/erlang/messenger/src/pm_event_handler.erl +0 -21
- data/lib/poolparty/config/allowed_commands.yml +0 -1
- data/lib/poolparty/helpers/messenger.rb +0 -29
- data/lib/poolparty/plugins/git.rb +0 -39
- data/lib/poolparty/pool/resources/gem.rb +0 -28
- data/lib/poolparty/pool/tmp/.ppkeys +0 -3
- data/lib/poolparty/pool/tmp/happydayz +0 -1
- data/lib/poolparty/pool/tmp/install_master.sh +0 -33
- data/lib/poolparty/pool/tmp/pool.spec +0 -11
- data/lib/poolparty/pool/tmp/poolparty.pp +0 -600
- data/lib/poolparty/pool/tmp/tc-instances.list +0 -1
- data/lib/poolparty/templates/fileserver.conf +0 -4
- data/spec/poolparty/plugins/git_spec.rb +0 -33
- data/test_manifest.pp +0 -658
|
@@ -5,15 +5,30 @@ module PoolParty
|
|
|
5
5
|
|
|
6
6
|
include Display
|
|
7
7
|
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
# Print help commands for the console
|
|
9
|
+
# level 0 - Basic help
|
|
10
|
+
# level 1 - Commands
|
|
11
|
+
def help(level=0)
|
|
12
|
+
@np = NicePrinter.new(60)
|
|
13
|
+
@np.header
|
|
14
|
+
@np.center "PoolParty console help"
|
|
15
|
+
@np.center "Basics"
|
|
16
|
+
@np << "Load your pool with load_pool(filename)"
|
|
17
|
+
@np << "Reference clouds with"
|
|
18
|
+
@np << "c = cloud :cloudname"
|
|
19
|
+
@np.empty
|
|
20
|
+
if level >= 1
|
|
21
|
+
@np.center "CloudSpeak"
|
|
22
|
+
@np << "All the commands set on your cloud can be called within the console"
|
|
23
|
+
@np << "list_of_running_instances - get list of running nodes"
|
|
24
|
+
@np << "list_of_pending_instances - get list of pending nodes"
|
|
25
|
+
@np << "available_monitors - get list of the available monitors on the cloud"
|
|
26
|
+
@np << " note: all monitors can be called as a method on the cloud"
|
|
27
|
+
@np << " i.e. CpuMonitor makes the method cpu available on the cloud"
|
|
28
|
+
@np.empty
|
|
16
29
|
end
|
|
30
|
+
@np.footer
|
|
31
|
+
@np.print
|
|
17
32
|
end
|
|
18
33
|
|
|
19
34
|
# Clear all the pools and reload the console
|
|
@@ -21,6 +36,8 @@ module PoolParty
|
|
|
21
36
|
# as well
|
|
22
37
|
def reload!
|
|
23
38
|
reset!
|
|
39
|
+
require File.dirname(__FILE__) + "/../../../poolparty"
|
|
40
|
+
require File.dirname(__FILE__) + "/../../../poolpartycl"
|
|
24
41
|
end
|
|
25
42
|
|
|
26
43
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
class NicePrinter
|
|
2
|
+
|
|
3
|
+
attr_accessor :num_lines
|
|
4
|
+
attr_reader :centered_lines
|
|
5
|
+
|
|
6
|
+
def initialize(num_lines=60)
|
|
7
|
+
@num_lines = num_lines
|
|
8
|
+
@centered_lines = @num_lines - 4
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def center(line)
|
|
12
|
+
lines << "* #{line.center(@centered_lines)} *"
|
|
13
|
+
end
|
|
14
|
+
def left(line)
|
|
15
|
+
lines << "* #{line.ljust(@centered_lines)} *"
|
|
16
|
+
end
|
|
17
|
+
def header
|
|
18
|
+
lines << "*"*@num_lines
|
|
19
|
+
end
|
|
20
|
+
def footer
|
|
21
|
+
header
|
|
22
|
+
end
|
|
23
|
+
def empty
|
|
24
|
+
lines << "* #{" ".ljust(@centered_lines)} *"
|
|
25
|
+
end
|
|
26
|
+
def print
|
|
27
|
+
puts lines.join("\n")
|
|
28
|
+
""
|
|
29
|
+
end
|
|
30
|
+
def <<(line)
|
|
31
|
+
left(line)
|
|
32
|
+
end
|
|
33
|
+
def lines
|
|
34
|
+
@lines ||= []
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
require 'optparse'
|
|
2
|
+
require "poolparty"
|
|
3
|
+
require "poolpartycl"
|
|
2
4
|
require 'rdoc/usage'
|
|
3
5
|
require 'ostruct'
|
|
4
6
|
require 'date'
|
|
@@ -11,9 +13,12 @@ module PoolParty
|
|
|
11
13
|
def initialize(args=[], opts={}, &block)
|
|
12
14
|
@arguments = parse_args(args)
|
|
13
15
|
@parse_options = opts[:parse_options] ? opts[:parse_options] : true
|
|
16
|
+
@extra_help = opts.has_key?(:extra_help) ? opts[:extra_help] : ""
|
|
17
|
+
@abstract = opts[:abstract] ? opts[:abstract] : false
|
|
18
|
+
@command = opts[:command] ? opts[:command] : false
|
|
14
19
|
|
|
15
|
-
set_default_options
|
|
16
20
|
parse_options(&block) if @parse_options
|
|
21
|
+
set_default_options
|
|
17
22
|
self
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -26,43 +31,73 @@ module PoolParty
|
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
def set_default_options
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
@options[:quiet] = false
|
|
32
|
-
@options[:version] = PoolParty::VERSION::STRING
|
|
34
|
+
self.verbose false
|
|
35
|
+
self.quiet false
|
|
33
36
|
end
|
|
34
37
|
|
|
35
38
|
def parse_options(&blk)
|
|
39
|
+
progname = $0.include?("-") ? "#{::File.basename($0[/(\w+)-/, 1])} #{::File.basename($0[/-(.*)/, 1])}" : ::File.basename($0)
|
|
36
40
|
opts = OptionParser.new
|
|
37
|
-
opts.banner = "Usage:
|
|
41
|
+
opts.banner = "Usage: #{progname} #{@abstract ? "[command] " : ""}[options]"
|
|
38
42
|
|
|
39
43
|
opts.separator ""
|
|
40
|
-
opts.separator "Options:"
|
|
41
44
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
unless @abstract
|
|
46
|
+
opts.separator "Options:"
|
|
47
|
+
|
|
48
|
+
opts.on('-v', '--verbose', 'Be verbose') { self.verbose true }
|
|
49
|
+
opts.on('-s [file]', '--spec-file [file]', 'Set the spec file') { |file| self.spec file.chomp }
|
|
50
|
+
opts.on('-t', '--test', 'Testing mode') { self.testing true }
|
|
51
|
+
|
|
52
|
+
blk.call(opts, self) if blk
|
|
53
|
+
end
|
|
48
54
|
|
|
55
|
+
opts.on('-V', '--version', 'Display the version') { puts @version ; exit 0 }
|
|
49
56
|
opts.on_tail("-h", "--help", "Show this message") do
|
|
50
57
|
puts opts
|
|
58
|
+
puts @extra_help
|
|
51
59
|
exit
|
|
52
60
|
end
|
|
53
61
|
|
|
54
62
|
opts.parse(@arguments.dup)
|
|
55
63
|
|
|
56
|
-
process_options
|
|
64
|
+
process_options
|
|
57
65
|
output_options if verbose
|
|
66
|
+
unless @abstract
|
|
67
|
+
self.loaded_pool load_pool(self.spec || Binary.get_existing_spec_location)
|
|
68
|
+
|
|
69
|
+
self.loaded_clouds extract_cloud_from_options(self)
|
|
70
|
+
self.loaded_pools extract_pool_from_options(self)
|
|
71
|
+
|
|
72
|
+
reject_junk_options!
|
|
73
|
+
raise CloudNotFoundException.new("Please specify your cloud with -s, move it to ./pool.spec or in your POOL_SPEC environment variable") unless loaded_clouds && !loaded_clouds.empty?
|
|
74
|
+
loaded_pools.each do |pl|
|
|
75
|
+
pl.configure(self.options)
|
|
76
|
+
end
|
|
77
|
+
loaded_clouds.each do |cl|
|
|
78
|
+
cl.configure(self.options)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
def reject_junk_options!
|
|
83
|
+
%w(loaded_pool cloudname extract_pool_from_options).each do |opt|
|
|
84
|
+
@options.delete(opt.to_sym)
|
|
85
|
+
end
|
|
58
86
|
end
|
|
59
87
|
def process_options
|
|
60
|
-
@options[:verbose] = false if @options[:quiet]
|
|
61
88
|
end
|
|
62
89
|
|
|
63
90
|
def output_version
|
|
64
|
-
puts version
|
|
91
|
+
puts @version
|
|
65
92
|
end
|
|
66
93
|
|
|
67
94
|
end
|
|
95
|
+
|
|
96
|
+
def extract_cloud_from_options(o)
|
|
97
|
+
o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : clouds.collect {|n,cl| cl}
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def extract_pool_from_options(o)
|
|
101
|
+
o.poolname ? [pool(o.poolname.downcase.to_sym)] : pools.collect {|n,pl| pl}
|
|
102
|
+
end
|
|
68
103
|
end
|
|
@@ -15,9 +15,13 @@ module PoolParty
|
|
|
15
15
|
def self.configure_master(cloud, testing=false)
|
|
16
16
|
Provisioner::Master.new(cloud).process_configure!(testing)
|
|
17
17
|
end
|
|
18
|
+
|
|
19
|
+
def self.reconfigure_master(cloud, testing=false)
|
|
20
|
+
Provisioner::Master.new(cloud).process_reconfigure!(testing)
|
|
21
|
+
end
|
|
18
22
|
|
|
19
23
|
def self.provision_slaves(cloud, testing=false)
|
|
20
|
-
cloud.nonmaster_nonterminated_instances.each do |sl|
|
|
24
|
+
cloud.nonmaster_nonterminated_instances.each do |sl|
|
|
21
25
|
provision_slave(sl, cloud, testing)
|
|
22
26
|
end
|
|
23
27
|
end
|
|
@@ -36,17 +40,26 @@ module PoolParty
|
|
|
36
40
|
Provisioner::Slave.new(instance, cloud).process_configure!(testing)
|
|
37
41
|
end
|
|
38
42
|
|
|
43
|
+
def self.process_clean_reconfigure_for!(instance, cloud, testing=false)
|
|
44
|
+
Provisioner::Master.new(cloud).process_clean_reconfigure_for!(instance, testing)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.clear_master_ssl_certs(cloud, testing=false)
|
|
48
|
+
Provisioner::Master.new(cloud).clear_master_ssl_certs
|
|
49
|
+
end
|
|
50
|
+
|
|
39
51
|
class ProvisionerBase
|
|
40
52
|
|
|
41
53
|
include Configurable
|
|
42
54
|
include CloudResourcer
|
|
55
|
+
include FileWriter
|
|
43
56
|
|
|
44
|
-
def initialize(instance,
|
|
57
|
+
def initialize(instance,cld=self, os=:ubuntu)
|
|
45
58
|
@instance = instance
|
|
46
|
-
@cloud =
|
|
59
|
+
@cloud = cld
|
|
47
60
|
|
|
48
61
|
options(cloud.options) if cloud && cloud.respond_to?(:options)
|
|
49
|
-
set_vars_from_options(instance.options) unless instance.nil? || instance.options.empty?
|
|
62
|
+
set_vars_from_options(instance.options) unless instance.nil? || !instance.options || !instance.options.empty?
|
|
50
63
|
options(instance.options) if instance.respond_to?(:options)
|
|
51
64
|
|
|
52
65
|
@os = os.to_s.downcase.to_sym
|
|
@@ -55,32 +68,56 @@ module PoolParty
|
|
|
55
68
|
# Callback after initialized
|
|
56
69
|
def loaded(opts={}, parent=self)
|
|
57
70
|
end
|
|
71
|
+
|
|
72
|
+
### Installation tasks
|
|
73
|
+
|
|
58
74
|
# This is the actual runner for the installation
|
|
59
75
|
def install
|
|
60
76
|
valid? ? install_string : error
|
|
61
77
|
end
|
|
78
|
+
# Write the installation tasks to a file in the storage directory
|
|
62
79
|
def write_install_file
|
|
63
80
|
error unless valid?
|
|
64
81
|
::FileUtils.mkdir_p Base.storage_directory unless ::File.exists?(Base.storage_directory)
|
|
65
82
|
provisioner_file = ::File.join(Base.storage_directory, "install_#{name}.sh")
|
|
66
83
|
::File.open(provisioner_file, "w+") {|f| f << install }
|
|
67
84
|
end
|
|
85
|
+
def name
|
|
86
|
+
@instance.name
|
|
87
|
+
end
|
|
88
|
+
# TODO: Clean up this method
|
|
68
89
|
def process_install!(testing=false)
|
|
69
90
|
error unless valid?
|
|
70
91
|
write_install_file
|
|
71
|
-
setup_runner
|
|
92
|
+
setup_runner
|
|
72
93
|
|
|
73
94
|
unless testing
|
|
74
|
-
|
|
75
|
-
@cloud.prepare_reconfiguration
|
|
95
|
+
vputs "Logging on to #{@instance.ip} (#{@instance.name})"
|
|
76
96
|
@cloud.rsync_storage_files_to(@instance)
|
|
97
|
+
vputs "Preparing configuration on the master"
|
|
98
|
+
|
|
99
|
+
before_install(@instance)
|
|
100
|
+
|
|
101
|
+
process_clean_reconfigure_for!(@instance, testing)
|
|
102
|
+
|
|
103
|
+
vputs "Logging in and running provisioning on #{@instance.name}"
|
|
104
|
+
cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh; /bin/rm install_#{name}.sh"
|
|
105
|
+
verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
|
|
106
|
+
|
|
107
|
+
process_clean_reconfigure_for!(@instance, testing)
|
|
77
108
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
109
|
+
after_install(@instance)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
# Install callbacks
|
|
113
|
+
# Before installation callback
|
|
114
|
+
def before_install(instance)
|
|
83
115
|
end
|
|
116
|
+
def after_install(instance)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
### Configuraton tasks
|
|
120
|
+
|
|
84
121
|
def configure
|
|
85
122
|
valid? ? configure_string : error
|
|
86
123
|
end
|
|
@@ -92,19 +129,48 @@ module PoolParty
|
|
|
92
129
|
def process_configure!(testing=false)
|
|
93
130
|
error unless valid?
|
|
94
131
|
write_configure_file
|
|
95
|
-
setup_runner
|
|
132
|
+
setup_runner
|
|
96
133
|
|
|
97
134
|
unless testing
|
|
98
|
-
|
|
135
|
+
vputs "Logging on to #{@instance.ip}"
|
|
99
136
|
@cloud.rsync_storage_files_to(@instance)
|
|
100
137
|
|
|
101
|
-
cmd = "cd #{Base.remote_storage_path} && chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && rm configure_#{name}.sh"
|
|
102
|
-
@cloud.run_command_on(cmd, @instance)
|
|
138
|
+
cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && /bin/rm configure_#{name}.sh"
|
|
139
|
+
verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
def process_clean_reconfigure_for!(instance, testing=false)
|
|
143
|
+
if instance.is_a?(String)
|
|
144
|
+
name = instance
|
|
145
|
+
instance = MyOpenStruct.new(:name => name)
|
|
103
146
|
end
|
|
147
|
+
vputs "Cleaning certs from master: #{instance.name}"
|
|
148
|
+
# puppetca --clean #{instance.name}.compute-1.internal; puppetca --clean #{instance.name}.ec2.internal
|
|
149
|
+
# find /etc/puppet/ssl -type f -exec rm {} \;
|
|
150
|
+
unless testing
|
|
151
|
+
# @cloud.run_command_on("rm -rf /etc/puppet/ssl", instance) unless instance.master?
|
|
152
|
+
str = returning String.new do |s|
|
|
153
|
+
s << "puppetca --clean #{instance.name}.compute-1.internal 2>&1 > /dev/null;"
|
|
154
|
+
s << "puppetca --clean #{instance.name}.ec2.internal 2>&1 > /dev/null"
|
|
155
|
+
end
|
|
156
|
+
@cloud.run_command_on(str, @cloud.master)
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
def clear_master_ssl_certs
|
|
160
|
+
str = returning String.new do |s|
|
|
161
|
+
s << "puppetca --clean master.compute-1.internal 2>&1 > /dev/null;"
|
|
162
|
+
s << "puppetca --clean master.ec2.internal 2>&1 > /dev/null"
|
|
163
|
+
end
|
|
164
|
+
@cloud.run_command_on("if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; else #{str}; fi", @cloud.master)
|
|
165
|
+
end
|
|
166
|
+
def process_reconfigure!(testing=false)
|
|
167
|
+
@cloud.run_command_on(PoolParty::Remote::RemoteInstance.puppet_runner_command, @instance) unless testing
|
|
104
168
|
end
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
169
|
+
# Tasks that need to be performed everytime we do any
|
|
170
|
+
# remote ssh'ing into any instance
|
|
171
|
+
def setup_runner(force=false)
|
|
172
|
+
@cloud.prepare_for_configuration
|
|
173
|
+
@cloud.build_and_store_new_config_file(force)
|
|
108
174
|
end
|
|
109
175
|
def valid?
|
|
110
176
|
true
|
|
@@ -114,7 +180,7 @@ module PoolParty
|
|
|
114
180
|
end
|
|
115
181
|
# Gather all the tasks into one string
|
|
116
182
|
def install_string
|
|
117
|
-
|
|
183
|
+
[default_install_tasks, last_install_tasks].flatten.each do |task|
|
|
118
184
|
case task.class
|
|
119
185
|
when String
|
|
120
186
|
task
|
|
@@ -123,8 +189,11 @@ module PoolParty
|
|
|
123
189
|
end
|
|
124
190
|
end.nice_runnable
|
|
125
191
|
end
|
|
192
|
+
def last_install_tasks
|
|
193
|
+
[]
|
|
194
|
+
end
|
|
126
195
|
def configure_string
|
|
127
|
-
|
|
196
|
+
[default_configure_tasks, last_configure_tasks].flatten.each do |task|
|
|
128
197
|
case task.class
|
|
129
198
|
when String
|
|
130
199
|
task
|
|
@@ -133,12 +202,17 @@ module PoolParty
|
|
|
133
202
|
end
|
|
134
203
|
end.nice_runnable
|
|
135
204
|
end
|
|
205
|
+
def last_configure_tasks
|
|
206
|
+
[]
|
|
207
|
+
end
|
|
136
208
|
# Tasks with default tasks
|
|
137
209
|
# These are run on all the provisioners, master or slave
|
|
138
210
|
def default_install_tasks
|
|
139
211
|
[
|
|
212
|
+
"#!/usr/bin/env sh",
|
|
140
213
|
upgrade_system,
|
|
141
214
|
fix_rubygems,
|
|
215
|
+
make_logger_directory,
|
|
142
216
|
install_puppet,
|
|
143
217
|
custom_install_tasks
|
|
144
218
|
] << install_tasks
|
|
@@ -208,7 +282,11 @@ module PoolParty
|
|
|
208
282
|
end
|
|
209
283
|
|
|
210
284
|
def fix_rubygems
|
|
211
|
-
|
|
285
|
+
<<-EOE
|
|
286
|
+
#{installer_for("ruby rubygems")}
|
|
287
|
+
gem update --system # Force rubygems update
|
|
288
|
+
echo '#{open(::File.join(template_directory, "gem")).read}' > /usr/bin/gem
|
|
289
|
+
EOE
|
|
212
290
|
end
|
|
213
291
|
|
|
214
292
|
def create_local_node
|
|
@@ -228,11 +306,18 @@ module PoolParty
|
|
|
228
306
|
def upgrade_system
|
|
229
307
|
case @os
|
|
230
308
|
when :ubuntu
|
|
231
|
-
"
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
309
|
+
"
|
|
310
|
+
if grep -q 'http://mirrors.kernel.org/ubuntu hardy main universe' /etc/apt/sources.list
|
|
311
|
+
then
|
|
312
|
+
echo 'Updated already'
|
|
313
|
+
else
|
|
314
|
+
touch /etc/apt/sources.list
|
|
315
|
+
echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
|
|
316
|
+
aptitude update -y #{unix_hide_string} <<heredoc
|
|
317
|
+
Y
|
|
318
|
+
|
|
319
|
+
heredoc
|
|
320
|
+
fi
|
|
236
321
|
"
|
|
237
322
|
else
|
|
238
323
|
"# No system upgrade needed"
|
|
@@ -242,7 +327,11 @@ module PoolParty
|
|
|
242
327
|
def install_puppet
|
|
243
328
|
"#{installer_for( puppet_packages )}"
|
|
244
329
|
end
|
|
245
|
-
|
|
330
|
+
|
|
331
|
+
def make_logger_directory
|
|
332
|
+
"mkdir -p /var/log/poolparty"
|
|
333
|
+
end
|
|
334
|
+
|
|
246
335
|
def create_poolparty_manifest
|
|
247
336
|
<<-EOS
|
|
248
337
|
cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes
|
|
@@ -2,9 +2,10 @@ module PoolParty
|
|
|
2
2
|
module Provisioner
|
|
3
3
|
class Master < ProvisionerBase
|
|
4
4
|
|
|
5
|
-
def initialize(
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
def initialize(cl=self, os=:ubuntu)
|
|
6
|
+
raise MasterException.new(:no_ip) unless cl.master && cl.master.ip
|
|
7
|
+
super(cl.master, cl, os)
|
|
8
|
+
@master_ip = cl.master.ip
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def valid?
|
|
@@ -17,19 +18,21 @@ module PoolParty
|
|
|
17
18
|
|
|
18
19
|
def install_tasks
|
|
19
20
|
[
|
|
20
|
-
install_haproxy,
|
|
21
|
-
install_heartbeat,
|
|
22
21
|
create_local_hosts_entry,
|
|
23
22
|
setup_basic_structure,
|
|
24
23
|
setup_configs,
|
|
25
24
|
setup_fileserver,
|
|
26
|
-
setup_autosigning,
|
|
25
|
+
setup_autosigning,
|
|
26
|
+
install_poolparty,
|
|
27
|
+
setup_poolparty,
|
|
28
|
+
restart_puppetmaster,
|
|
29
|
+
run_first_time,
|
|
30
|
+
create_local_node,
|
|
27
31
|
] << configure_tasks
|
|
28
32
|
end
|
|
29
33
|
|
|
30
34
|
def configure_tasks
|
|
31
35
|
[
|
|
32
|
-
# start_puppetmaster,
|
|
33
36
|
create_local_node,
|
|
34
37
|
move_templates,
|
|
35
38
|
create_poolparty_manifest,
|
|
@@ -40,30 +43,33 @@ module PoolParty
|
|
|
40
43
|
# If the master is not in the hosts file, then add it to the hosts file
|
|
41
44
|
def create_local_hosts_entry
|
|
42
45
|
<<-EOS
|
|
43
|
-
|
|
46
|
+
echo "Creating local host entry"
|
|
47
|
+
if [ -z \"$(grep -v '#' /etc/hosts | grep 'puppet')" ]; then echo '#{@master_ip} puppet master localhost' >> /etc/hosts; fi
|
|
48
|
+
hostname master
|
|
44
49
|
EOS
|
|
45
50
|
end
|
|
46
51
|
|
|
47
52
|
def setup_basic_structure
|
|
48
53
|
<<-EOS
|
|
49
|
-
|
|
50
|
-
mkdir -p #{Base.remote_storage_path}
|
|
51
|
-
echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp
|
|
52
|
-
echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
|
|
54
|
+
echo "Creating basic structure for poolparty"
|
|
53
55
|
mkdir -p /etc/puppet/manifests/nodes
|
|
54
56
|
mkdir -p /etc/puppet/manifests/classes
|
|
57
|
+
echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp
|
|
58
|
+
echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
|
|
55
59
|
cp #{Base.remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf
|
|
56
60
|
EOS
|
|
57
61
|
end
|
|
58
62
|
|
|
59
63
|
def setup_configs
|
|
60
64
|
<<-EOS
|
|
65
|
+
echo "Setting up configuration"
|
|
61
66
|
echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
|
|
62
67
|
EOS
|
|
63
68
|
end
|
|
64
69
|
|
|
65
70
|
def setup_fileserver
|
|
66
71
|
<<-EOS
|
|
72
|
+
echo "Setting up the master fileserver"
|
|
67
73
|
echo "
|
|
68
74
|
[files]
|
|
69
75
|
path #{Base.remote_storage_path}
|
|
@@ -76,10 +82,75 @@ mkdir -p /etc/poolparty
|
|
|
76
82
|
# Change this eventually for better security supportsetup_fileserver
|
|
77
83
|
def setup_autosigning
|
|
78
84
|
<<-EOS
|
|
85
|
+
echo "Creating accessibility for the nodes"
|
|
79
86
|
echo "*" > /etc/puppet/autosign.conf
|
|
80
87
|
EOS
|
|
81
88
|
end
|
|
89
|
+
|
|
90
|
+
def setup_poolparty
|
|
91
|
+
<<-EOS
|
|
92
|
+
echo "Setting the poolparty configuration"
|
|
93
|
+
cp #{Base.remote_storage_path}/#{Base.key_file_locations.first} "#{Base.base_config_directory}/.ppkeys"
|
|
94
|
+
cp #{Base.remote_storage_path}/#{Base.default_specfile_name} #{Base.base_config_directory}/#{Base.default_specfile_name}
|
|
95
|
+
EOS
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def copy_ssh_app
|
|
99
|
+
"cp #{Base.remote_storage_path}/#{@cloud.full_keypair_name} #{@cloud.remote_keypair_path}" if @cloud.remote_keypair_path != "#{Base.remote_storage_path}/#{@cloud.full_keypair_name}"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def install_poolparty
|
|
103
|
+
<<-EOE
|
|
104
|
+
echo "Installing poolparty"
|
|
105
|
+
cd /var/poolparty
|
|
106
|
+
wget http://rubyforge.org/frs/download.php/44731/logging-0.9.4.gem -O logging.gem 2>&1
|
|
107
|
+
wget http://rubyforge.org/frs/download.php/45581/ZenTest-3.11.0.gem -O ZenTest.gem 2>&1
|
|
108
|
+
wget http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem -O ParseTree.gem 2>&1
|
|
109
|
+
wget http://rubyforge.org/frs/download.php/45587/ruby2ruby-1.2.0.gem -O ruby2ruby.gem 2>&1
|
|
110
|
+
wget http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem -O activesupport.gem 2>&1
|
|
111
|
+
wget http://rubyforge.org/frs/download.php/18366/xml-simple-1.0.11.gem -O xml-simple.gem 2>&1
|
|
112
|
+
wget http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem -O RubyInline.gem 2>&1
|
|
113
|
+
wget http://rubyforge.org/frs/download.php/42580/flexmock-0.8.3.gem -O flexmock.gem 2>&1
|
|
114
|
+
wget http://rubyforge.org/frs/download.php/45685/hoe-1.8.2.gem -O hoe.gem 2>&1
|
|
115
|
+
wget http://rubyforge.org/frs/download.php/18698/lockfile-1.4.3.gem -O lockfile.gem 2>&1
|
|
116
|
+
wget http://rubyforge.org/frs/download.php/45546/rubyforge-1.0.1.gem -O rubyforge.gem 2>&1
|
|
117
|
+
wget http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem -O rake.gem 2>&1
|
|
118
|
+
wget http://rubyforge.org/frs/download.php/45589/sexp_processor-3.0.0.gem -O sexp_processor.gem 2>&1
|
|
119
|
+
wget http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty.gem?raw=true -O poolparty.gem 2>&1
|
|
120
|
+
# wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O amazon-ec2.gem 2>&1
|
|
82
121
|
|
|
122
|
+
#{
|
|
123
|
+
%w(rake lockfile rubyforge hoe ZenTest sexp_processor flexmock logging activesupport
|
|
124
|
+
RubyInline ParseTree ruby2ruby xml-simple poolparty).map do |dep|
|
|
125
|
+
"gem install --ignore-dependencies -y --no-ri --no-rdoc #{dep}.gem #{unix_hide_string}"
|
|
126
|
+
end.join("\n")
|
|
127
|
+
}
|
|
128
|
+
EOE
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# ps aux | grep puppetmasterd | awk '{print $2}' | xargs kill
|
|
132
|
+
# /etc/init.d/puppetmaster stop; rm -rf /etc/puppet/ssl; /etc/init.d/puppetmaster start
|
|
133
|
+
def restart_puppetmaster
|
|
134
|
+
<<-EOS
|
|
135
|
+
echo "(Re)starting poolparty"
|
|
136
|
+
. /etc/profile
|
|
137
|
+
# /etc/init.d/puppetmaster stop #{unix_hide_string}
|
|
138
|
+
ps aux | grep puppetmaster | awk '{print $2}' | xargs kill;rm -rf /etc/puppet/ssl;puppetmasterd --verbose;/etc/init.d/puppetmaster start
|
|
139
|
+
EOS
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def run_first_time
|
|
143
|
+
<<-EOE
|
|
144
|
+
echo "Running first time run"
|
|
145
|
+
cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrerun /usr/bin/puppetrerun
|
|
146
|
+
cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrunner /usr/bin/puppetrunner
|
|
147
|
+
chmod +x /usr/bin/puppetrerun
|
|
148
|
+
chmod +x /usr/bin/puppetrunner
|
|
149
|
+
EOE
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# TODO:
|
|
153
|
+
# Consider this method in the manifest
|
|
83
154
|
def create_local_node
|
|
84
155
|
str = <<-EOS
|
|
85
156
|
node default {
|
|
@@ -91,48 +162,44 @@ node default {
|
|
|
91
162
|
node "#{ri.name}" inherits default {}
|
|
92
163
|
EOS
|
|
93
164
|
end
|
|
94
|
-
"echo '#{str}' > /
|
|
165
|
+
"echo '#{str}' > #{Base.manifest_path}/nodes/nodes.pp"
|
|
95
166
|
end
|
|
96
167
|
|
|
97
168
|
def move_templates
|
|
98
169
|
<<-EOS
|
|
170
|
+
echo "Moving templates into place"
|
|
99
171
|
mkdir -p #{Base.template_path}
|
|
100
|
-
cp #{Base.remote_storage_path}/#{Base.template_directory}/* #{Base.template_path}
|
|
172
|
+
cp -R #{Base.remote_storage_path}/#{Base.template_directory}/* #{Base.template_path}
|
|
101
173
|
EOS
|
|
102
174
|
end
|
|
103
175
|
|
|
104
176
|
def create_poolparty_manifest
|
|
105
177
|
<<-EOS
|
|
106
|
-
|
|
107
|
-
cp #{Base.remote_storage_path}
|
|
108
|
-
cp #{Base.remote_storage_path}/#{Base.default_specfile_name} #{Base.base_config_directory}/#{Base.default_specfile_name}
|
|
178
|
+
echo "Creating the manifest"
|
|
179
|
+
cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolparty.pp
|
|
109
180
|
#{copy_ssh_app}
|
|
110
181
|
EOS
|
|
111
182
|
end
|
|
112
183
|
|
|
113
|
-
def
|
|
114
|
-
|
|
115
|
-
"
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
# ps aux | grep puppetmasterd | awk '{print $2}' | xargs kill
|
|
120
|
-
# rm -rf /etc/puppet/ssl
|
|
121
|
-
# puppetmasterd --verbose
|
|
122
|
-
def start_puppetmaster
|
|
123
|
-
<<-EOS
|
|
124
|
-
EOS
|
|
184
|
+
def clean_master_certs
|
|
185
|
+
str = returning Array.new do |s|
|
|
186
|
+
s << "puppetca --clean master.compute-1.internal 2>&1 > /dev/null"
|
|
187
|
+
s << "puppetca --clean master.ec2.internal 2>&1 > /dev/null"
|
|
188
|
+
end.join(";")
|
|
189
|
+
"if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; else #{str}; fi"
|
|
125
190
|
end
|
|
126
|
-
|
|
127
|
-
# puppetd --listen --fqdn #{@instance.name}
|
|
191
|
+
|
|
128
192
|
def restart_puppetd
|
|
129
193
|
<<-EOS
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
puppetmasterd --verbose
|
|
133
|
-
. /etc/profile && #{@instance.puppet_runner_command}
|
|
194
|
+
echo "Running puppet manifest"
|
|
195
|
+
/usr/bin/puppetrunner
|
|
134
196
|
EOS
|
|
135
197
|
end
|
|
198
|
+
def last_install_tasks
|
|
199
|
+
[
|
|
200
|
+
"/usr/bin/puppetrerun"
|
|
201
|
+
]
|
|
202
|
+
end
|
|
136
203
|
end
|
|
137
204
|
end
|
|
138
205
|
end
|