fairchild-poolparty 1.1.5 → 1.2.12
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -0
- data/README.txt +13 -9
- data/Rakefile +0 -1
- data/VERSION.yml +2 -2
- data/bin/cloud +43 -46
- data/bin/cloud-bootstrap +33 -23
- data/bin/cloud-configure +33 -34
- data/bin/cloud-console +31 -9
- data/bin/cloud-contract +27 -11
- data/bin/cloud-expand +32 -19
- data/bin/cloud-list +43 -15
- data/bin/cloud-osxcopy +22 -12
- data/bin/cloud-provision +39 -24
- data/bin/cloud-run +37 -0
- data/bin/cloud-setup-dev +31 -20
- data/bin/cloud-show +40 -21
- data/bin/cloud-ssh +24 -15
- data/bin/cloud-start +33 -19
- data/bin/cloud-terminate +34 -15
- data/bin/cloud-verify +41 -0
- data/bin/install-poolparty +22 -0
- data/bin/server-cloud-elections +17 -23
- data/bin/server-list-active +23 -22
- data/bin/server-manage-election +14 -23
- data/bin/server-show-stats +1 -1
- data/config/jeweler.rb +6 -6
- data/examples/basic.rb +13 -14
- data/examples/fairchild.rb +25 -20
- data/examples/maize.rb +37 -0
- data/examples/metavirt_cloud.rb +33 -0
- data/examples/simple.rb +13 -0
- data/examples/vmrun_cloud.rb +17 -0
- data/lib/poolparty/{aska/aska.rb → aska.rb} +3 -0
- data/lib/poolparty/core/array.rb +13 -1
- data/lib/poolparty/core/exception.rb +1 -1
- data/lib/poolparty/core/hash.rb +63 -2
- data/lib/poolparty/core/integer.rb +11 -0
- data/lib/poolparty/core/object.rb +41 -19
- data/lib/poolparty/core/proc.rb +0 -7
- data/lib/poolparty/core/string.rb +35 -2
- data/lib/poolparty/core/symbol.rb +10 -0
- data/lib/poolparty/core/time.rb +6 -0
- data/lib/poolparty/dependency_resolver/chef_resolver.rb +40 -41
- data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
- data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +6 -6
- data/lib/poolparty/dependency_resolver/puppet.rb +0 -1
- data/lib/poolparty/dependency_resolver/puppet_resolver.rb +14 -48
- data/lib/poolparty/exceptions/MasterException.rb +2 -2
- data/lib/poolparty/extra/duration.rb +96 -0
- data/lib/poolparty/helpers/binary.rb +1 -1
- data/lib/poolparty/helpers/console.rb +0 -5
- data/lib/poolparty/helpers/optioner.rb +18 -13
- data/lib/poolparty/installers/base_installer.rb +113 -0
- data/lib/poolparty/installers/ec2.rb +141 -0
- data/lib/poolparty/installers/vmrun.rb +144 -0
- data/lib/poolparty/lite.rb +5 -2
- data/lib/poolparty/modules/callbacks.rb +15 -2
- data/lib/poolparty/modules/cloud_dsl.rb +10 -8
- data/lib/poolparty/modules/cloud_resourcer.rb +39 -59
- data/lib/poolparty/modules/daemonizable.rb +4 -5
- data/lib/poolparty/modules/definable_resource.rb +6 -7
- data/lib/poolparty/modules/file_writer.rb +2 -2
- data/lib/poolparty/modules/output.rb +2 -2
- data/lib/poolparty/modules/pinger.rb +9 -2
- data/lib/poolparty/modules/pretty_printer.rb +1 -1
- data/lib/poolparty/modules/resourcing_dsl.rb +1 -29
- data/lib/poolparty/modules/searchable_paths.rb +100 -0
- data/lib/poolparty/modules/user_helpers.rb +1 -1
- data/lib/poolparty/monitors/base_monitor.rb +65 -0
- data/lib/poolparty/monitors/monitor_daemon.rb +168 -0
- data/lib/poolparty/monitors/monitor_rack.rb +29 -15
- data/lib/poolparty/monitors/monitors/{time_monitor.rb → clock_monitor.rb} +7 -2
- data/lib/poolparty/monitors/monitors/cloud_monitor.rb +36 -0
- data/lib/poolparty/monitors/monitors/elections_monitor.rb +76 -0
- data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +15 -12
- data/lib/poolparty/monitors/monitors/stats_monitor.rb +68 -49
- data/lib/poolparty/net/init.rb +12 -7
- data/lib/poolparty/net/remote_instance.rb +48 -64
- data/lib/poolparty/net/remoter/cloud_control.rb +0 -177
- data/lib/poolparty/net/remoter/connections.rb +19 -14
- data/lib/poolparty/net/remoter/interactive.rb +30 -24
- data/lib/poolparty/net/remoter_base.rb +140 -48
- data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +119 -71
- data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +42 -31
- data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +75 -10
- data/lib/poolparty/net/remoter_bases/libvirt/libvirt.rb +73 -0
- data/lib/poolparty/net/remoter_bases/libvirt/libvirt_instance.rb +64 -0
- data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +110 -0
- data/lib/poolparty/net/remoter_bases/metavirt/metavirt_instance.rb +37 -0
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +1 -1
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +1 -1
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -117
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +59 -43
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +37 -21
- data/lib/poolparty/plugins/apache2/apache.rb +266 -0
- data/lib/poolparty/plugins/apache2/passenger_site.rb +86 -0
- data/lib/poolparty/plugins/apache2/php5.rb +40 -0
- data/lib/poolparty/plugins/apache2/virtual_host.rb +53 -0
- data/lib/poolparty/plugins/authorized_key.rb +29 -0
- data/lib/poolparty/plugins/bind.rb +5 -6
- data/lib/poolparty/plugins/{chef.rb → chef/chef.rb} +32 -44
- data/lib/poolparty/plugins/chef/chef_deploy.rb +55 -0
- data/lib/poolparty/plugins/chef/chef_deploy_definition.rb +32 -0
- data/lib/poolparty/plugins/chef/chef_library.rb +7 -0
- data/lib/poolparty/plugins/chef/chef_recipe.rb +7 -0
- data/lib/poolparty/plugins/chef/include_chef_recipe.rb +14 -0
- data/lib/poolparty/plugins/deploy_directory.rb +41 -26
- data/lib/poolparty/plugins/gem_package.rb +42 -14
- data/lib/poolparty/plugins/git.rb +62 -33
- data/lib/poolparty/{base_packages → plugins}/haproxy.rb +21 -20
- data/lib/poolparty/plugins/heartbeat.rb +16 -0
- data/lib/poolparty/plugins/host.rb +39 -0
- data/lib/poolparty/plugins/line_in_file.rb +24 -2
- data/lib/poolparty/plugins/plugin_template.rb +13 -0
- data/lib/poolparty/{base_packages/poolparty.rb → plugins/poolparty_base_packages.rb} +4 -6
- data/lib/poolparty/plugins/rails_deploy.rb +128 -0
- data/lib/poolparty/{base_packages → plugins}/ruby.rb +3 -3
- data/lib/poolparty/plugins/runit.rb +17 -92
- data/lib/poolparty/plugins/sshkey.rb +50 -0
- data/lib/poolparty/plugins/svn.rb +10 -8
- data/lib/poolparty/poolparty/cloud.rb +224 -61
- data/lib/poolparty/poolparty/default.rb +22 -15
- data/lib/poolparty/poolparty/key.rb +19 -28
- data/lib/poolparty/poolparty/neighborhoods.rb +16 -5
- data/lib/poolparty/poolparty/plugin.rb +49 -13
- data/lib/poolparty/poolparty/pool.rb +32 -9
- data/lib/poolparty/poolparty/poolparty_base_class.rb +65 -45
- data/lib/poolparty/poolparty/resource.rb +24 -49
- data/lib/poolparty/poolparty/service.rb +11 -9
- data/lib/poolparty/provision/boot_strapper.rb +48 -37
- data/lib/poolparty/provision/configurations/chef.rb +6 -5
- data/lib/poolparty/provision/dr_configure.rb +25 -19
- data/lib/poolparty/resources/cron.rb +37 -4
- data/lib/poolparty/resources/directory.rb +30 -0
- data/lib/poolparty/resources/exec.rb +31 -1
- data/lib/poolparty/resources/file.rb +54 -12
- data/lib/poolparty/resources/group.rb +21 -0
- data/lib/poolparty/resources/mount.rb +24 -4
- data/lib/poolparty/resources/package.rb +30 -6
- data/lib/poolparty/resources/remote_file.rb +33 -1
- data/lib/poolparty/resources/service.rb +22 -1
- data/lib/poolparty/resources/symlink.rb +37 -2
- data/lib/poolparty/resources/user.rb +25 -0
- data/lib/poolparty/resources/variable.rb +26 -1
- data/lib/poolparty/resources.rb +42 -0
- data/lib/poolparty/schema.rb +6 -8
- data/lib/poolparty/templates/apache2/apache2.conf +14 -0
- data/lib/poolparty/templates/apache2/base.conf.erb +168 -0
- data/lib/poolparty/templates/apache2/browser_fixes.conf.erb +26 -0
- data/lib/poolparty/templates/apache2/debian.conf.erb +675 -0
- data/lib/poolparty/templates/apache2/default-site.conf.erb +41 -0
- data/lib/poolparty/templates/apache2/directory_indexes.conf.erb +101 -0
- data/lib/poolparty/templates/apache2/logging-syslog.conf.erb +42 -0
- data/lib/poolparty/templates/apache2/mime-extras.conf.erb +211 -0
- data/lib/poolparty/templates/apache2/mime-minimal.conf.erb +15 -0
- data/lib/poolparty/templates/apache2/mpm-worker.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/mpm-worker.erb +20 -0
- data/lib/poolparty/templates/apache2/passenger.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/php.ini.erb +1253 -0
- data/lib/poolparty/templates/apache2/server-status.erb +19 -0
- data/lib/poolparty/templates/{gemrc → gemrc_template} +0 -0
- data/lib/poolparty/templates/haproxy.conf +2 -2
- data/lib/poolparty/templates/monitor.ru +13 -0
- data/lib/poolparty/templates/php.ini.erb +1253 -0
- data/lib/poolparty/verification/verifier_base.rb +10 -0
- data/lib/poolparty/verification/verifiers/http_match.rb +43 -0
- data/lib/poolparty/verification/verifiers/http_status.rb +59 -0
- data/lib/poolparty/verification/verifiers/ping.rb +18 -1
- data/lib/poolparty/verification/verify.rb +6 -0
- data/lib/poolparty.rb +14 -15
- data/lib/poolpartycl.rb +1 -1
- data/spec/bin/bin_spec_helper.rb +1 -0
- data/spec/bin/fixtures/bin_cloud_for_test.rb +0 -6
- data/spec/bin/server-list-active_spec.rb +4 -6
- data/spec/poolparty/core/object_spec.rb +1 -62
- data/spec/poolparty/core/ordered_hash_spec.rb +7 -7
- data/spec/poolparty/core/string_spec.rb +1 -1
- data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +0 -8
- data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +35 -32
- data/spec/poolparty/extra/deployments_spec.rb +68 -68
- data/spec/poolparty/fixtures/clouds.json +1 -1
- data/spec/poolparty/fixtures/fake_key.pub +1 -0
- data/spec/poolparty/helpers/optioner_spec.rb +4 -11
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +1 -1
- data/spec/poolparty/modules/searchable_paths_spec.rb +83 -0
- data/spec/poolparty/net/remote_instance_spec.rb +1 -2
- data/spec/poolparty/net/remoter_base_spec.rb +7 -11
- data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +9 -11
- data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +6 -56
- data/spec/poolparty/net/remoter_bases/ec2_spec.rb +10 -7
- data/spec/poolparty/net/remoter_spec.rb +2 -3
- data/spec/poolparty/plugins/authorized_key_spec.rb +23 -0
- data/spec/poolparty/plugins/deploydirectory_spec.rb +64 -51
- data/spec/poolparty/plugins/git_spec.rb +8 -10
- data/spec/poolparty/poolparty/cloud_spec.rb +61 -64
- data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +2 -4
- data/spec/poolparty/poolparty/configurers/files/ruby_plugins.rb +1 -1
- data/spec/poolparty/poolparty/configurers/ruby_spec.rb +1 -6
- data/spec/poolparty/poolparty/default_spec.rb +23 -22
- data/spec/poolparty/poolparty/example_spec.rb +47 -26
- data/spec/poolparty/{base_packages → poolparty}/haproxy_spec.rb +1 -1
- data/spec/poolparty/{base_packages → poolparty}/heartbeat_spec.rb +1 -1
- data/spec/poolparty/poolparty/key_spec.rb +2 -2
- data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -1
- data/spec/poolparty/poolparty/plugin_model_spec.rb +13 -17
- data/spec/poolparty/poolparty/plugin_spec.rb +7 -7
- data/spec/poolparty/poolparty/pool_spec.rb +4 -10
- data/spec/poolparty/poolparty/resource_spec.rb +25 -29
- data/spec/poolparty/poolparty/script_spec.rb +1 -4
- data/spec/poolparty/poolparty/test_plugins/webserver.rb +27 -25
- data/spec/poolparty/resources/file_spec.rb +5 -4
- data/spec/poolparty/resources/sshkey_spec.rb +39 -40
- data/spec/poolparty/spec_helper.rb +9 -39
- data/tasks/poolparty.rake +29 -1
- data/tasks/spec.rake +39 -1
- data/test/fixtures/fake_clouds.rb +11 -0
- data/test/fixtures/metavirt_cloud.json +1 -0
- data/test/fixtures/test_key +1 -0
- data/test/poolparty/core/array_test.rb +11 -0
- data/test/poolparty/core/hash_test.rb +5 -7
- data/test/poolparty/core/object_test.rb +29 -0
- data/test/poolparty/dependency_resolver/chef_resolver_test.rb +82 -0
- data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +5 -26
- data/test/poolparty/modules/callbacks_test.rb +1 -1
- data/test/poolparty/modules/cloud_dsl_test.rb +10 -8
- data/test/poolparty/monitors/test_base_monitor.rb +17 -0
- data/test/poolparty/monitors/test_monitor_rack.rb +26 -0
- data/test/poolparty/net/remoter_base_test.rb +17 -0
- data/test/poolparty/net/remoter_bases/libvirt/libvirt_test.rb +70 -0
- data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +81 -0
- data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +58 -27
- data/test/poolparty/plugins/chef_deploy_test.rb +37 -0
- data/test/poolparty/plugins/chef_plugin_test.rb +23 -0
- data/test/poolparty/plugins/rails_deploy_test.rb +50 -0
- data/test/poolparty/poolparty/cloud_test.rb +65 -0
- data/test/poolparty/poolparty/isolated_cloud_test.rb +25 -0
- data/test/poolparty/poolparty/neighborhood_test.rb +1 -1
- data/test/poolparty/poolparty/plugin_test.rb +19 -0
- data/test/poolparty/poolparty/pool_test.rb +22 -0
- data/test/poolparty/poolparty/poolparty_base_class_test.rb +53 -15
- data/test/poolparty/poolparty/schema_test.rb +13 -0
- data/test/poolparty/poolparty/template_test.rb +6 -6
- data/test/poolparty/verification/verify_test.rb +7 -3
- data/test/test_helper.rb +15 -4
- data/test/test_methods.rb +11 -0
- data/vendor/chef/apache2/attributes/apache.rb +1 -1
- data/vendor/gems/dslify/LICENSE +20 -0
- data/vendor/gems/dslify/README.rdoc +33 -0
- data/vendor/gems/dslify/Rakefile +56 -0
- data/vendor/gems/dslify/VERSION.yml +4 -0
- data/vendor/gems/dslify/dslify.gemspec +29 -0
- data/vendor/gems/dslify/lib/dslify.rb +81 -0
- data/vendor/gems/dslify/test/dslify_test.rb +283 -0
- data/vendor/gems/dslify/test/test_helper.rb +7 -0
- data/vendor/gems/git-style-binaries/README.markdown +280 -0
- data/vendor/gems/git-style-binaries/Rakefile +64 -0
- data/vendor/gems/git-style-binaries/VERSION.yml +4 -0
- data/vendor/gems/git-style-binaries/doc/EXAMPLES +1 -0
- data/vendor/gems/git-style-binaries/doc/gsb-screencast.png +0 -0
- data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +412 -0
- data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +78 -0
- data/vendor/gems/git-style-binaries/lib/ext/colorize.rb +198 -0
- data/vendor/gems/git-style-binaries/lib/ext/core.rb +16 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/autorunner.rb +21 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/command.rb +204 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/commands/help.rb +32 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +78 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb +37 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +223 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary.rb +88 -0
- data/vendor/gems/git-style-binaries/test/fixtures/flickr +4 -0
- data/vendor/gems/git-style-binaries/test/fixtures/flickr-download +17 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress +42 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-categories +18 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-list +18 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-post +26 -0
- data/vendor/gems/git-style-binaries/test/git-style-binary/command_test.rb +17 -0
- data/vendor/gems/git-style-binaries/test/git_style_binary_test.rb +21 -0
- data/vendor/gems/git-style-binaries/test/running_binaries_test.rb +224 -0
- data/vendor/gems/git-style-binaries/test/shoulda_macros/matching_stdio.rb +13 -0
- data/vendor/gems/git-style-binaries/test/test_helper.rb +28 -0
- data/vendor/gems/parenting/History.txt +4 -0
- data/vendor/gems/parenting/Manifest.txt +14 -0
- data/vendor/gems/parenting/PostInstall.txt +2 -0
- data/vendor/gems/parenting/README.rdoc +47 -0
- data/vendor/gems/parenting/Rakefile +28 -0
- data/vendor/gems/parenting/lib/parenting/parenting.rb +70 -0
- data/vendor/gems/parenting/lib/parenting.rb +10 -0
- data/vendor/gems/parenting/parenting.gemspec +39 -0
- data/vendor/gems/parenting/script/console +10 -0
- data/vendor/gems/parenting/script/destroy +14 -0
- data/vendor/gems/parenting/script/generate +14 -0
- data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
- data/vendor/gems/parenting/test/test_helper.rb +5 -0
- data/vendor/gems/parenting/test/test_parenting.rb +117 -0
- data/vendor/gems/suitcase/LICENSE +20 -0
- data/vendor/gems/suitcase/README.rdoc +31 -0
- data/vendor/gems/suitcase/Rakefile +57 -0
- data/vendor/gems/suitcase/VERSION.yml +4 -0
- data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
- data/vendor/gems/suitcase/lib/suitcase/zipper.rb +167 -0
- data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
- data/vendor/gems/suitcase/suitcase.gemspec +32 -0
- data/vendor/gems/suitcase/test/suitcase_test.rb +108 -0
- data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
- data/vendor/gems/suitcase/test/test_dir/gems/famoseagle-carrot-0.6.0.gem +0 -0
- data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
- data/vendor/gems/suitcase/test/test_helper.rb +12 -0
- data/vendor/gems/trollop/FAQ.txt +35 -0
- data/vendor/gems/trollop/History.txt +97 -0
- data/vendor/gems/trollop/Manifest.txt +7 -0
- data/vendor/gems/trollop/README.txt +40 -0
- data/vendor/gems/trollop/Rakefile +36 -0
- data/vendor/gems/trollop/lib/trollop.rb +735 -0
- data/vendor/gems/trollop/release-script.txt +13 -0
- data/vendor/gems/trollop/test/test_trollop.rb +1042 -0
- data/vendor/gems/trollop/www/index.html +167 -0
- metadata +205 -150
- data/bin/cloud-describe +0 -28
- data/bin/cloud-handle-load +0 -27
- data/bin/cloud-rsync +0 -28
- data/bin/cloud-spec +0 -41
- data/bin/messenger-get-current-nodes +0 -14
- data/bin/server-become-master +0 -24
- data/bin/server-build-messenger +0 -28
- data/bin/server-clean-cert-for +0 -15
- data/bin/server-provision +0 -32
- data/bin/server-start-agent +0 -15
- data/bin/server-start-client +0 -29
- data/bin/server-start-master +0 -26
- data/bin/server-start-node +0 -32
- data/bin/server-stop-client +0 -3
- data/bin/server-stop-master +0 -3
- data/bin/server-stop-node +0 -3
- data/bin/server-update-hosts +0 -49
- data/examples/poolparty.rb +0 -12
- data/lib/poolparty/base_packages/heartbeat.rb +0 -58
- data/lib/poolparty/base_packages/runit.rb +0 -21
- data/lib/poolparty/capistrano/cloud_tasks.rb +0 -10
- data/lib/poolparty/capistrano.rb +0 -54
- data/lib/poolparty/config/postlaunchmessage.txt +0 -5
- data/lib/poolparty/core/metaid.rb +0 -15
- data/lib/poolparty/core/module.rb +0 -40
- data/lib/poolparty/extra/deployments.rb +0 -31
- data/lib/poolparty/helpers/display.rb +0 -30
- data/lib/poolparty/net/messenger.rb +0 -57
- data/lib/poolparty/net/remote_bases.rb +0 -21
- data/lib/poolparty/plugins/chef_deploy.rb +0 -58
- data/lib/poolparty/plugins/dynomite.rb +0 -14
- data/lib/poolparty/plugins/nanite.rb +0 -41
- data/lib/poolparty/plugins/rsyncmirror.rb +0 -28
- data/lib/poolparty/plugins/tokyo_tyrant.rb +0 -23
- data/lib/poolparty/poolparty/plugin_model.rb +0 -45
- data/lib/poolparty/resources/host.rb +0 -16
- data/lib/poolparty/resources/sshkey.rb +0 -27
- data/lib/poolparty/services/conditional.rb +0 -46
- data/lib/poolparty/spec/core/string.rb +0 -18
- data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
- data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
- data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
- data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
- data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
- data/lib/poolparty/spec/matchers/have_file.rb +0 -28
- data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
- data/lib/poolparty/spec/matchers/have_git.rb +0 -28
- data/lib/poolparty/spec/matchers/have_host.rb +0 -28
- data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
- data/lib/poolparty/spec/matchers/have_package.rb +0 -28
- data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
- data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
- data/lib/poolparty/spec/matchers/have_service.rb +0 -28
- data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
- data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
- data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
- data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
- data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
- data/lib/poolparty/spec/templates/have_base.rb +0 -28
- data/lib/poolparty/spec.rb +0 -31
- data/spec/poolparty/core/module_spec.rb +0 -15
- data/spec/poolparty/helpers/display_spec.rb +0 -13
- data/spec/poolparty/id_rsa +0 -27
- data/spec/poolparty/net/messenger_spec.rb +0 -16
- data/spec/poolparty/resources/host_spec.rb +0 -35
- data/spec/poolparty/services/conditional_spec.rb +0 -52
- data/spec/poolparty/spec/core/string_spec.rb +0 -57
@@ -0,0 +1,266 @@
|
|
1
|
+
module PoolParty
|
2
|
+
module Plugin
|
3
|
+
|
4
|
+
=begin rdoc
|
5
|
+
|
6
|
+
Install Apache2 and make various helpers accessible.
|
7
|
+
|
8
|
+
NOTE: this will not install a virtual host by default, *including* a default
|
9
|
+
host. This means apache will not start up unless you specify at least the
|
10
|
+
default host.
|
11
|
+
|
12
|
+
=end
|
13
|
+
class Apache < Plugin
|
14
|
+
dsl_methods :passenger_version
|
15
|
+
|
16
|
+
default_options :port => 80,
|
17
|
+
:www_user => 'www-data'
|
18
|
+
|
19
|
+
def loaded(opts={}, &block)
|
20
|
+
configs
|
21
|
+
has_service("apache2", :requires => get_package("apache2"))
|
22
|
+
end
|
23
|
+
|
24
|
+
def enable
|
25
|
+
enable_default
|
26
|
+
end
|
27
|
+
|
28
|
+
def before_load(o={}, &block)
|
29
|
+
install
|
30
|
+
end
|
31
|
+
|
32
|
+
def install
|
33
|
+
installed_as_worker
|
34
|
+
end
|
35
|
+
|
36
|
+
def installed_as_worker
|
37
|
+
unless @installed_as_worker
|
38
|
+
has_package("apache2")
|
39
|
+
# has_package("apache2-mpm-worker")
|
40
|
+
|
41
|
+
base_install
|
42
|
+
@installed_as_worker = true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def base_install
|
47
|
+
unless @base_install
|
48
|
+
has_exec({:name => "restart-apache2", :command => "/etc/init.d/apache2 restart", :action => :nothing})
|
49
|
+
has_exec({:name => "reload-apache2", :command => "/etc/init.d/apache2 reload", :action => :nothing})
|
50
|
+
has_exec({:name => "force-reload-apache2", :command => "/etc/init.d/apache2 force-reload", :action => :nothing})
|
51
|
+
@base_install = true
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def install_passenger# {{{
|
56
|
+
install
|
57
|
+
enable_passenger
|
58
|
+
end# }}}
|
59
|
+
|
60
|
+
def enable_passenger
|
61
|
+
unless @enable_passenger
|
62
|
+
installed_as_worker
|
63
|
+
has_package "build-essential"
|
64
|
+
has_package "apache2-prefork-dev"
|
65
|
+
has_gem_package "fastthread"
|
66
|
+
has_gem_package "passenger"
|
67
|
+
passenger_configs
|
68
|
+
|
69
|
+
has_exec(:name => "install_passenger_script",
|
70
|
+
:command => 'echo -en \"\\\\n\\\\n\\\\n\\\\n\" | passenger-install-apache2-module',
|
71
|
+
:if_not => "test -f /etc/apache2/conf.d/passenger.conf && test -s /etc/apache2/conf.d/passenger.conf",
|
72
|
+
:creates => lambda { "node[:poolparty][:passenger_module_path]" },
|
73
|
+
:calls => get_exec("restart-apache2")
|
74
|
+
)
|
75
|
+
|
76
|
+
@enable_passenger = true
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def passenger_configs
|
81
|
+
unless @passenger_configs
|
82
|
+
has_variable "gems_path", :value => lambda { "`gem env gemdir`.chomp!" }
|
83
|
+
has_variable "ruby_path", :value => lambda { "`which ruby`.chomp!" }
|
84
|
+
|
85
|
+
passenger_version ||= "2.2.2"
|
86
|
+
|
87
|
+
has_variable("passenger_version", :value => passenger_version)
|
88
|
+
has_variable("passenger_root_path", :value => "\#{poolparty[:gems_path]}/gems/passenger-#{passenger_version}")
|
89
|
+
has_variable("passenger_module_path", :value => "\#{poolparty[:passenger_root_path]}/ext/apache2/mod_passenger.so")
|
90
|
+
|
91
|
+
has_file(:name => "/etc/apache2/mods-available/passenger.load") do
|
92
|
+
content <<-eof
|
93
|
+
LoadModule passenger_module <%= @node[:poolparty][:passenger_module_path] %>
|
94
|
+
eof
|
95
|
+
end
|
96
|
+
|
97
|
+
has_file(:name => "/etc/apache2/mods-available/passenger.conf") do
|
98
|
+
content <<-eof
|
99
|
+
PassengerRoot <%= @node[:poolparty][:passenger_root_path] %>
|
100
|
+
PassengerRuby <%= @node[:poolparty][:ruby_path] %>
|
101
|
+
eof
|
102
|
+
end
|
103
|
+
|
104
|
+
present_apache_module(:passenger)
|
105
|
+
@passenger_configs = true
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# def enable_ssl# {{{
|
110
|
+
# unless @enable_ssl
|
111
|
+
# has_package("apache2.2-common")
|
112
|
+
# has_package("openssl")
|
113
|
+
# has_variable(:name => "ssl_enabled", :value => "true")
|
114
|
+
|
115
|
+
# has_exec(:command => "a2enmod ssl") do
|
116
|
+
# requires [ get_package("openssl") ]
|
117
|
+
# if_not "/usr/bin/test -L /etc/apache2/mods-enabled/ssl.load"
|
118
|
+
# calls get_exec("restart-apache2")
|
119
|
+
# end
|
120
|
+
# @enable_ssl = true
|
121
|
+
# end
|
122
|
+
# end# }}}
|
123
|
+
|
124
|
+
def configs
|
125
|
+
unless @configs
|
126
|
+
listen(port) unless @listen
|
127
|
+
has_directory("/etc/apache2")
|
128
|
+
has_directory("/etc/apache2/conf.d")
|
129
|
+
has_directory("/etc/apache2/site-includes")
|
130
|
+
|
131
|
+
has_file(:name => "/etc/apache2/apache2.conf") do
|
132
|
+
mode 0644
|
133
|
+
requires get_directory("/etc/apache2/conf.d")
|
134
|
+
template "apache2"/"apache2.conf"
|
135
|
+
end
|
136
|
+
# does_not_have_file(:name => "/etc/apache2/ports.conf")
|
137
|
+
|
138
|
+
has_exec(:command => "/usr/sbin/a2dissite default") do
|
139
|
+
only_if "/usr/bin/test -L /etc/apache2/sites-enabled/000-default"
|
140
|
+
calls get_exec("reload-apache2")
|
141
|
+
end
|
142
|
+
|
143
|
+
# Base config
|
144
|
+
config("base", "apache2"/"base.conf.erb")
|
145
|
+
config("mime", "apache2"/"mime-minimal.conf.erb")
|
146
|
+
config("browser_fixes", "apache2"/"browser_fixes.conf.erb")
|
147
|
+
|
148
|
+
present_apache_module("mime", "rewrite")
|
149
|
+
# end
|
150
|
+
@configs = true
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def enable_default
|
155
|
+
listen 80 # assumes no haproxy
|
156
|
+
site "default-site", :template => :apache2/"default-site.conf.erb"
|
157
|
+
end
|
158
|
+
|
159
|
+
|
160
|
+
def config(name, temp)
|
161
|
+
has_file(:name => "/etc/apache2/conf.d/#{name}.conf") do
|
162
|
+
template temp
|
163
|
+
calls get_exec("reload-apache2")
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def listen(p="80")
|
168
|
+
has_variable(:name => "port", :value => p)
|
169
|
+
self.port = p
|
170
|
+
@listen = true
|
171
|
+
end
|
172
|
+
|
173
|
+
def site(name, opts={})
|
174
|
+
case opts[:ensure] || "present"
|
175
|
+
when "present", "installed"
|
176
|
+
install_site(name, opts)
|
177
|
+
when "absent"
|
178
|
+
has_exec(:command => "/usr/sbin/a2dissite #{name}", :calls => get_exec("reload-apache2")) do
|
179
|
+
requires get_package("apache2")
|
180
|
+
only_if "/bin/sh -c \"[ -L /etc/apache2/sites-enabled/#{name} ] && [ /etc/apache2/sites-enabled/#{name} -ef /etc/apache2/sites-available/#{name}]\""
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def install_site(name, opts={})
|
186
|
+
opts.merge!(:name => "/etc/apache2/sites-available/#{name}")
|
187
|
+
has_directory(:name => "/etc/apache2/sites-available")
|
188
|
+
has_file(opts) unless opts[:no_file]
|
189
|
+
has_exec(:name => "/usr/sbin/a2ensite #{name}", :calls => get_exec("reload-apache2")) do
|
190
|
+
requires get_package("apache2")
|
191
|
+
if_not "/bin/sh -c '[ -L /etc/apache2/sites-enabled/#{name} ] && [ /etc/apache2/sites-enabled/#{name} -ef /etc/apache2/sites-available/#{name} ]'"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
def site_include(name, content, ensureer="present")
|
196
|
+
has_file(:name => "/etc/apache2/site-includes/#{name}.inc", :ensures => ensureer, :content => content, :requires => get_file("/etc/apache2/site-includes"))
|
197
|
+
end
|
198
|
+
|
199
|
+
def present_apache_module(*names)
|
200
|
+
names.each do |name|
|
201
|
+
has_exec(:name => "mod-#{name}", :command => "/usr/sbin/a2enmod #{name}") do
|
202
|
+
requires get_package("apache2")
|
203
|
+
if_not "/bin/sh -c \'[ -L /etc/apache2/mods-enabled/#{name}.load ] && [ /etc/apache2/mods-enabled/#{name}.load -ef /etc/apache2/mods-available/#{name}.load ]\'"
|
204
|
+
calls get_exec("force-reload-apache2")
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def absent_apache_module(*names)
|
210
|
+
names.each do |name|
|
211
|
+
has_exec({:name => "no-mod-#{name}"}, :command => "/usr/sbin/a2dismod #{name}") do
|
212
|
+
requires get_package("apache2")
|
213
|
+
if_not "/bin/sh -c \'[ -L /etc/apache2/mods-enabled/#{name}.load ] && [ /etc/apache2/mods-enabled/#{name}.load -ef /etc/apache2/mods-available/#{name}.load ]\'"
|
214
|
+
calls get_exec("force-reload-apache2")
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
|
221
|
+
# plugin(:passengersite_with_ssl) do# {{{
|
222
|
+
# def loaded(opts={}, parent=self)
|
223
|
+
# enable_passenger
|
224
|
+
|
225
|
+
# has_variable(:name => "virtualhost_name", :value => name)
|
226
|
+
# has_variable(:name => "port", :value => port.nil? ? "8080" : port)
|
227
|
+
|
228
|
+
# has_directory(:name => "/var/www")
|
229
|
+
# has_directory(:name => "/var/www/#{name}")
|
230
|
+
# has_directory(:name => "/var/www/#{name}/log", :requires => get_directory("/var/www/#{name}/"))
|
231
|
+
|
232
|
+
# has_variable(:name => "passenger_name", :value => name)
|
233
|
+
|
234
|
+
# has_file(options.merge({:name => "/etc/apache2/sites-available/#{name}", :ensures => 'present', :alias => "#{name}", :requires => get_package("apache2")})) do
|
235
|
+
# template File.dirname(__FILE__), "/../templates/webserver", "passenger.conf.erb"
|
236
|
+
# end
|
237
|
+
|
238
|
+
# has_exec(:command => "/usr/sbin/a2ensite #{name}", :calls => 'Exec["reload-apache2"]', :requires => get_file("/etc/apache2/sites-available/#{name}")) do
|
239
|
+
# if_not "/bin/sh -c \"[ -L /etc/apache2/sites-enabled/#{@parent.name} ] && [ /etc/apache2/sites-enabled/#{@parent.name} -ef /etc/apache2/sites-available/#{@parent.name} ]\""
|
240
|
+
# end
|
241
|
+
# end
|
242
|
+
|
243
|
+
# tell apache ssl which certificate/private key files to use for this virtual site
|
244
|
+
# def certificate(cert_path, key_path)
|
245
|
+
# cert_name = File.basename(cert_path)
|
246
|
+
# key_name = File.basename(key_path)
|
247
|
+
# has_variable(:name => "ssl_cert_file", :value => "/var/www/#{name}/cert/#{cert_name}")
|
248
|
+
# has_variable(:name => "ssl_private_key_file", :value => "/var/www/#{name}/cert/#{key_name}")
|
249
|
+
|
250
|
+
# has_directory(:name => "/var/www")
|
251
|
+
# has_directory(:name => "/var/www/#{name}")
|
252
|
+
# has_directory(:name => "/var/www/#{name}/cert", :requires => get_directory("/var/www/#{name}/"))
|
253
|
+
|
254
|
+
# has_file(:name => "/var/www/#{name}/cert/#{cert_name}") do
|
255
|
+
# content open(cert_path).read
|
256
|
+
# end
|
257
|
+
# has_file(:name => "/var/www/#{name}/cert/#{key_name}") do
|
258
|
+
# content open(key_path).read
|
259
|
+
# end
|
260
|
+
# end
|
261
|
+
# end
|
262
|
+
# }}}
|
263
|
+
|
264
|
+
end
|
265
|
+
|
266
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/apache'
|
2
|
+
module PoolParty
|
3
|
+
module Plugin
|
4
|
+
# Usage:
|
5
|
+
#
|
6
|
+
# passengersite do
|
7
|
+
# end
|
8
|
+
class PassengerSite < Apache
|
9
|
+
|
10
|
+
default_options(
|
11
|
+
:dir => "/var/www",
|
12
|
+
:appended_path => nil,
|
13
|
+
:owner => 'www-data',
|
14
|
+
:mode =>'0744',
|
15
|
+
:enviornment => 'production',
|
16
|
+
:deploy_dirs => false
|
17
|
+
)
|
18
|
+
|
19
|
+
def loaded(opts={}, prnt=nil)
|
20
|
+
enable_passenger
|
21
|
+
port "80" unless self.port
|
22
|
+
|
23
|
+
has_directory(:name => dir, :owner => www_user, :mode => '0744')
|
24
|
+
has_directory(:name => "#{site_directory}", :owner => www_user, :mode => '0744')
|
25
|
+
has_site_directory 'logs'
|
26
|
+
|
27
|
+
if deploy_dirs || opts[:with_deployment_directories]
|
28
|
+
has_site_directory "shared"
|
29
|
+
has_site_directory "shared/public"
|
30
|
+
has_site_directory "shared/config"
|
31
|
+
has_site_directory "shared/log"
|
32
|
+
has_site_directory "releases"
|
33
|
+
if !::File.exists?("#{dir}/#{name}/current")
|
34
|
+
|
35
|
+
# setup an initial symlink so apache will start even if there have not been any deploys yet
|
36
|
+
has_site_directory "releases/initial/public"
|
37
|
+
#FIXME the following line is chef specific. It will fail with puppet
|
38
|
+
has_symlink({:target_file => "#{dir}/#{name}/current",
|
39
|
+
:to => "#{dir}/#{name}/releases/initial"})
|
40
|
+
end
|
41
|
+
log_dir = "#{site_directory}/shared/log"
|
42
|
+
appended_path "current"
|
43
|
+
|
44
|
+
else
|
45
|
+
log_dir = "#{site_directory}/log"
|
46
|
+
end
|
47
|
+
|
48
|
+
passenger_entry <<-EOE
|
49
|
+
<VirtualHost *:#{port}>
|
50
|
+
ServerName #{name}
|
51
|
+
DocumentRoot #{site_directory}/public
|
52
|
+
RailsEnv #{enviornment}
|
53
|
+
ErrorLog #{log_dir}/error_log
|
54
|
+
CustomLog #{log_dir}/access_log common
|
55
|
+
</VirtualHost>
|
56
|
+
EOE
|
57
|
+
|
58
|
+
# has_directory(:name => "/var/www")
|
59
|
+
# has_directory(:name => "/var/www/#{name}")
|
60
|
+
# has_directory(:name => "/var/www/#{name}/log")
|
61
|
+
parent.install_site(name, :no_file => true) # we already created the file with #passenger_entry
|
62
|
+
end
|
63
|
+
|
64
|
+
def passenger_entry(file)
|
65
|
+
if ::File.file?(file)
|
66
|
+
has_file({:name => "/etc/apache2/sites-available/#{name}", :template => file})
|
67
|
+
else
|
68
|
+
has_file({:content => file, :name => "/etc/apache2/sites-available/#{name}" })
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def has_site_directory( dir_name='' , opts={})
|
73
|
+
has_directory({ :name => "#{site_directory}/#{dir_name}",
|
74
|
+
:owner => www_user,
|
75
|
+
:mode =>'0744'
|
76
|
+
}.merge(opts) )
|
77
|
+
end
|
78
|
+
|
79
|
+
def site_directory
|
80
|
+
"#{dir}/#{name}%s" % [appended_path ? "/" + appended_path : ""]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/apache'
|
2
|
+
module PoolParty
|
3
|
+
module Plugin
|
4
|
+
# Usage:
|
5
|
+
#
|
6
|
+
# enable_php5 do
|
7
|
+
# extras :cli, :pspell, :mysql
|
8
|
+
# end
|
9
|
+
class EnablePhp5 < Plugin
|
10
|
+
def loaded(opts={}, parent=self)
|
11
|
+
has_package(:name => "php5")
|
12
|
+
has_package(:name => "libapache2-mod-php5")
|
13
|
+
present_apache_module("php5")
|
14
|
+
has_file({:name => "/etc/php5/apache2/php.ini",
|
15
|
+
:template => "apache2/php.ini.erb",
|
16
|
+
:mode => 755,
|
17
|
+
:requires => get_package("libapache2-mod-php5"),
|
18
|
+
:calls => get_exec("reload-apache2")})
|
19
|
+
|
20
|
+
has_file(:name => "/etc/apache2/conf.d/enable-php.conf",
|
21
|
+
:mode => 755,
|
22
|
+
:calls => get_exec("reload-apache2"),
|
23
|
+
:content => <<-eos
|
24
|
+
AddHandler php5-script php
|
25
|
+
AddType text/html php
|
26
|
+
eos
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
def extras(*names)
|
31
|
+
names.each do |name|
|
32
|
+
has_package(:name => "php5-#{name}")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/apache'
|
2
|
+
module PoolParty
|
3
|
+
module Plugin
|
4
|
+
class VirtualHost < Plugin
|
5
|
+
def listen(port="80")
|
6
|
+
has_variable(:name => "port", :value => port)
|
7
|
+
port port
|
8
|
+
end
|
9
|
+
|
10
|
+
def virtual_host_entry(file)
|
11
|
+
@virtual_host_entry = true
|
12
|
+
if ::File.file?(file)
|
13
|
+
has_file(dsl_options.merge({:name => "/etc/apache2/sites-available/#{name}",
|
14
|
+
:template => file,
|
15
|
+
:requires => get_package("apache2")}))
|
16
|
+
else
|
17
|
+
has_file(dsl_options.merge({:content => file,
|
18
|
+
:name => "/etc/apache2/sites-available/#{name}",
|
19
|
+
:requires => get_package("apache2")}))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def loaded(opts={}, parent=self)
|
25
|
+
has_directory(:name => "/var/www", :owner => www_user, :mode=>'0744')
|
26
|
+
has_directory(:name => "/var/www/#{name}", :owner => www_user, :mode=>'0744')
|
27
|
+
has_directory(:name => "/var/www/#{name}/logs", :owner => www_user, :mode=>'0744')
|
28
|
+
|
29
|
+
has_variable(:name => "sitename", :value => "#{name}")
|
30
|
+
|
31
|
+
unless @virtual_host_entry
|
32
|
+
virtual_host_entry <<-eof
|
33
|
+
<VirtualHost *:#{port}>
|
34
|
+
ServerName #{name}
|
35
|
+
DocumentRoot /var/www/#{name}
|
36
|
+
</VirtualHost>
|
37
|
+
eof
|
38
|
+
end
|
39
|
+
|
40
|
+
has_exec(:name => "insert-site-#{name}",
|
41
|
+
:command => "/usr/sbin/a2ensite #{name}",
|
42
|
+
:calls => get_exec("reload-apache2"),
|
43
|
+
:requires => get_file("/etc/apache2/sites-available/#{name}")) do
|
44
|
+
requires get_package("apache2")
|
45
|
+
if_not "/bin/sh -c '[ -L /etc/apache2/sites-enabled/#{parent.name} ] && [ /etc/apache2/sites-enabled/#{parent.name} -ef /etc/apache2/sites-available/#{parent.name} ]'"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
=begin rdoc
|
2
|
+
Authorized key
|
3
|
+
|
4
|
+
Usage:
|
5
|
+
has_authorized_key :for_user => "username",
|
6
|
+
:public_key_file => "/Users/alerner/.ssh/id_rsa.pub"
|
7
|
+
=end
|
8
|
+
module PoolParty
|
9
|
+
module Plugin
|
10
|
+
class AuthorizedKey < Plugin
|
11
|
+
|
12
|
+
default_options(
|
13
|
+
:for_user => "root",
|
14
|
+
:public_key_file => nil
|
15
|
+
)
|
16
|
+
|
17
|
+
def loaded(o={}, &block)
|
18
|
+
has_directory "~#{for_user}/.ssh", :owner => for_user
|
19
|
+
has_file "~#{for_user}/.ssh/authorized_keys", :content => ""
|
20
|
+
has_line_in_file(:line => public_key_content, :file => "~#{for_user}/.ssh/authorized_keys")
|
21
|
+
end
|
22
|
+
|
23
|
+
def public_key_content
|
24
|
+
open(public_key_file).read
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -1,25 +1,16 @@
|
|
1
|
+
$:.unshift(::File.dirname(__FILE__))
|
1
2
|
require "tempfile"
|
3
|
+
require "chef_deploy"
|
4
|
+
require "chef_library"
|
5
|
+
require "chef_recipe"
|
6
|
+
require "include_chef_recipe"
|
7
|
+
|
2
8
|
# BIG TODO: Slim the place where the content is gathered from
|
3
9
|
module PoolParty
|
4
|
-
|
5
|
-
|
6
|
-
end
|
7
|
-
class Chef
|
8
|
-
define_resource :chef_recipe do
|
9
|
-
end
|
10
|
-
define_resource :chef_library do
|
11
|
-
end
|
12
|
-
|
13
|
-
plugin :include_chef_recipe do
|
14
|
-
def loaded(opts={}, &block)
|
15
|
-
parent.has_chef_recipe ::File.basename(name)
|
16
|
-
end
|
17
|
-
def before_configure
|
18
|
-
::Suitcase::Zipper.add(name, "chef/cookbooks") if ::File.exist?(name)
|
19
|
-
end
|
20
|
-
end
|
10
|
+
|
11
|
+
module Plugin
|
21
12
|
|
22
|
-
|
13
|
+
class Chef < Plugin
|
23
14
|
def before_load(o, &block)
|
24
15
|
end
|
25
16
|
|
@@ -31,22 +22,19 @@ module PoolParty
|
|
31
22
|
end
|
32
23
|
|
33
24
|
def basedir
|
34
|
-
@basedir ||= "#{
|
25
|
+
@basedir ||= "#{cloud.tmp_path}/dr_configure/chef/cookbooks/main"
|
35
26
|
end
|
36
27
|
|
37
28
|
def recipe(file=nil, o={}, &block)
|
38
29
|
if file
|
39
|
-
file =
|
40
|
-
|
41
|
-
|
42
|
-
unless ::File.file?(file)
|
43
|
-
tfile = Tempfile.new("main-poolparty-recipe")
|
44
|
-
tfile << file # copy the string into the temp file
|
45
|
-
file = tfile.path
|
46
|
-
end
|
47
|
-
::FileUtils.rm "#{basedir}/recipes/default.rb" if ::File.file?("#{basedir}/recipes/default.rb")
|
48
|
-
::File.cp file, "#{basedir}/recipes/default.rb"
|
30
|
+
file = search_in_known_locations(file)
|
31
|
+
raise RecipeNotFoundError.new(file) unless file
|
49
32
|
|
33
|
+
::FileUtils.mkdir_p "#{basedir}/recipes" unless ::File.directory?("#{basedir}/recipes")
|
34
|
+
::FileUtils.rm "#{basedir}/recipes/default.rb" if ::File.file?("#{basedir}/recipes/default.rb")
|
35
|
+
# ::FileUtils.cp file, "#{basedir}/recipes/default.rb"
|
36
|
+
::File.open("#{basedir}/recipes/default.rb", "w") {|f| f << open(file).read }
|
37
|
+
|
50
38
|
templates o[:templates] if o[:templates]
|
51
39
|
|
52
40
|
recipe_files << basedir
|
@@ -66,13 +54,13 @@ module PoolParty
|
|
66
54
|
templates.each do |f|
|
67
55
|
f = ::File.expand_path(f)
|
68
56
|
if ::File.file?(f)
|
69
|
-
::
|
57
|
+
::FileUtils.cp f, "#{basedir}/templates/default/#{::File.basename(f)}"
|
70
58
|
elsif ::File.directory?(f)
|
71
|
-
Dir["#{f}/**"].each {|f| ::
|
59
|
+
Dir["#{f}/**"].each {|f| ::FileUtils.cp f, "#{basedir}/templates/default/#{::File.basename(f)}" }
|
72
60
|
else
|
73
61
|
tfile = Tempfile.new("main-poolparty-recipe")
|
74
62
|
tfile << f # copy the string into the temp file
|
75
|
-
::
|
63
|
+
::FileUtils.cp tfile.path, "#{basedir}/templates/default/#{::File.basename(f)}"
|
76
64
|
end
|
77
65
|
end
|
78
66
|
end
|
@@ -91,11 +79,11 @@ module PoolParty
|
|
91
79
|
end
|
92
80
|
else
|
93
81
|
unless @recipe
|
94
|
-
@recipe =
|
95
|
-
@recipe.instance_eval
|
96
|
-
@recipe.recipes(recipe_files.empty? ? ["poolparty"] : ["poolparty", "main"])
|
97
|
-
|
98
|
-
::Suitcase::Zipper.add_content_as(
|
82
|
+
# @recipe = has_chef_recipe "poolparty", &block
|
83
|
+
# @recipe.instance_eval(&block) if block
|
84
|
+
# @recipe.recipes(recipe_files.empty? ? ["poolparty"] : ["poolparty", "main"])
|
85
|
+
dna_content = recipe_files.empty? ? ["poolparty"] : ["poolparty", "main"]
|
86
|
+
::Suitcase::Zipper.add_content_as({:recipes => dna_content}.to_json, "dna.json", "chef")
|
99
87
|
|
100
88
|
configure_commands ["cp -f /var/poolparty/dr_configure/chef/dna.json /etc/chef/dna.json"]
|
101
89
|
end
|
@@ -107,7 +95,7 @@ module PoolParty
|
|
107
95
|
recps.each do |rcp|
|
108
96
|
Dir[::File.expand_path(rcp)].each do |f|
|
109
97
|
included_recipes << f
|
110
|
-
end
|
98
|
+
end
|
111
99
|
end
|
112
100
|
end
|
113
101
|
end
|
@@ -132,12 +120,7 @@ file_cache_path "/etc/chef"
|
|
132
120
|
else
|
133
121
|
open(file).read
|
134
122
|
end
|
135
|
-
# ::FileUtils.mkdir_p "#{Default.tmp_path}/trash" unless ::File.directory? "#{Default.tmp_path}/trash"
|
136
|
-
# ::File.open("#{Default.tmp_path}/trash/solo.rb", "w+") do |tf|
|
137
|
-
# tf << conf_string
|
138
|
-
# end
|
139
123
|
::Suitcase::Zipper.add_content_as(conf_string, "solo.rb", "chef")
|
140
|
-
# ::Suitcase::Zipper.add("#{Default.tmp_path}/trash/solo.rb", "chef")
|
141
124
|
end
|
142
125
|
end
|
143
126
|
|
@@ -148,7 +131,7 @@ file_cache_path "/etc/chef"
|
|
148
131
|
def before_bootstrap
|
149
132
|
bootstrap_gems "chef", "ohai"
|
150
133
|
bootstrap_commands [
|
151
|
-
"mkdir -p /etc/chef/cookbooks /etc/chef/cache"
|
134
|
+
"mkdir -p /etc/chef/cookbooks /etc/chef/cache"
|
152
135
|
]
|
153
136
|
end
|
154
137
|
def before_configure
|
@@ -170,4 +153,9 @@ file_cache_path "/etc/chef"
|
|
170
153
|
end
|
171
154
|
|
172
155
|
end
|
156
|
+
class RecipeNotFoundError < StandardError
|
157
|
+
def initialize(n)
|
158
|
+
super("The recipe you specified cannot be found: #{n}")
|
159
|
+
end
|
160
|
+
end
|
173
161
|
end
|