tylerrick-chef 0.10.8
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/LICENSE +201 -0
- data/README.rdoc +171 -0
- data/bin/chef-client +26 -0
- data/bin/chef-solo +25 -0
- data/bin/knife +26 -0
- data/bin/shef +34 -0
- data/distro/README +2 -0
- data/distro/arch/etc/conf.d/chef-client.conf +5 -0
- data/distro/arch/etc/conf.d/chef-expander.conf +8 -0
- data/distro/arch/etc/conf.d/chef-server-webui.conf +10 -0
- data/distro/arch/etc/conf.d/chef-server.conf +10 -0
- data/distro/arch/etc/conf.d/chef-solr.conf +8 -0
- data/distro/arch/etc/rc.d/chef-client +76 -0
- data/distro/arch/etc/rc.d/chef-expander +78 -0
- data/distro/arch/etc/rc.d/chef-server +78 -0
- data/distro/arch/etc/rc.d/chef-server-webui +78 -0
- data/distro/arch/etc/rc.d/chef-solr +78 -0
- data/distro/common/html/chef-client.8.html +146 -0
- data/distro/common/html/chef-expander.8.html +164 -0
- data/distro/common/html/chef-expanderctl.8.html +146 -0
- data/distro/common/html/chef-server-webui.8.html +185 -0
- data/distro/common/html/chef-server.8.html +182 -0
- data/distro/common/html/chef-solo.8.html +191 -0
- data/distro/common/html/chef-solr.8.html +165 -0
- data/distro/common/html/knife-bootstrap.1.html +243 -0
- data/distro/common/html/knife-client.1.html +219 -0
- data/distro/common/html/knife-configure.1.html +170 -0
- data/distro/common/html/knife-cookbook-site.1.html +241 -0
- data/distro/common/html/knife-cookbook.1.html +384 -0
- data/distro/common/html/knife-data-bag.1.html +234 -0
- data/distro/common/html/knife-environment.1.html +267 -0
- data/distro/common/html/knife-exec.1.html +134 -0
- data/distro/common/html/knife-index.1.html +125 -0
- data/distro/common/html/knife-node.1.html +250 -0
- data/distro/common/html/knife-recipe.1.html +92 -0
- data/distro/common/html/knife-role.1.html +200 -0
- data/distro/common/html/knife-search.1.html +288 -0
- data/distro/common/html/knife-ssh.1.html +157 -0
- data/distro/common/html/knife-status.1.html +128 -0
- data/distro/common/html/knife-tag.1.html +137 -0
- data/distro/common/html/knife.1.html +321 -0
- data/distro/common/html/shef.1.html +283 -0
- data/distro/common/man/man1/knife-bootstrap.1 +197 -0
- data/distro/common/man/man1/knife-client.1 +99 -0
- data/distro/common/man/man1/knife-configure.1 +88 -0
- data/distro/common/man/man1/knife-cookbook-site.1 +145 -0
- data/distro/common/man/man1/knife-cookbook.1 +345 -0
- data/distro/common/man/man1/knife-data-bag.1 +130 -0
- data/distro/common/man/man1/knife-environment.1 +178 -0
- data/distro/common/man/man1/knife-exec.1 +46 -0
- data/distro/common/man/man1/knife-index.1 +29 -0
- data/distro/common/man/man1/knife-node.1 +134 -0
- data/distro/common/man/man1/knife-role.1 +88 -0
- data/distro/common/man/man1/knife-search.1 +280 -0
- data/distro/common/man/man1/knife-ssh.1 +83 -0
- data/distro/common/man/man1/knife-status.1 +29 -0
- data/distro/common/man/man1/knife-tag.1 +43 -0
- data/distro/common/man/man1/knife.1 +292 -0
- data/distro/common/man/man1/shef.1 +256 -0
- data/distro/common/man/man8/chef-client.8 +104 -0
- data/distro/common/man/man8/chef-expander.8 +97 -0
- data/distro/common/man/man8/chef-expanderctl.8 +62 -0
- data/distro/common/man/man8/chef-server-webui.8 +155 -0
- data/distro/common/man/man8/chef-server.8 +147 -0
- data/distro/common/man/man8/chef-solo.8 +158 -0
- data/distro/common/man/man8/chef-solr.8 +122 -0
- data/distro/common/markdown/README +3 -0
- data/distro/common/markdown/man1/knife-bootstrap.mkd +142 -0
- data/distro/common/markdown/man1/knife-client.mkd +103 -0
- data/distro/common/markdown/man1/knife-configure.mkd +70 -0
- data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -0
- data/distro/common/markdown/man1/knife-cookbook.mkd +263 -0
- data/distro/common/markdown/man1/knife-data-bag.mkd +117 -0
- data/distro/common/markdown/man1/knife-environment.mkd +151 -0
- data/distro/common/markdown/man1/knife-exec.mkd +37 -0
- data/distro/common/markdown/man1/knife-index.mkd +30 -0
- data/distro/common/markdown/man1/knife-node.mkd +130 -0
- data/distro/common/markdown/man1/knife-role.mkd +85 -0
- data/distro/common/markdown/man1/knife-search.mkd +180 -0
- data/distro/common/markdown/man1/knife-ssh.mkd +72 -0
- data/distro/common/markdown/man1/knife-status.mkd +36 -0
- data/distro/common/markdown/man1/knife-tag.mkd +39 -0
- data/distro/common/markdown/man1/knife.mkd +220 -0
- data/distro/common/markdown/man1/shef.mkd +189 -0
- data/distro/common/markdown/man8/chef-client.mkd +75 -0
- data/distro/common/markdown/man8/chef-expander.mkd +82 -0
- data/distro/common/markdown/man8/chef-expanderctl.mkd +58 -0
- data/distro/common/markdown/man8/chef-server-webui.mkd +121 -0
- data/distro/common/markdown/man8/chef-server.mkd +121 -0
- data/distro/common/markdown/man8/chef-solo.mkd +107 -0
- data/distro/common/markdown/man8/chef-solr.mkd +89 -0
- data/distro/debian/etc/default/chef-client +4 -0
- data/distro/debian/etc/default/chef-expander +8 -0
- data/distro/debian/etc/default/chef-server +9 -0
- data/distro/debian/etc/default/chef-server-webui +9 -0
- data/distro/debian/etc/default/chef-solr +8 -0
- data/distro/debian/etc/init.d/chef-client +185 -0
- data/distro/debian/etc/init.d/chef-expander +176 -0
- data/distro/debian/etc/init.d/chef-server +122 -0
- data/distro/debian/etc/init.d/chef-server-webui +123 -0
- data/distro/debian/etc/init.d/chef-solr +176 -0
- data/distro/debian/etc/init/chef-client.conf +17 -0
- data/distro/debian/etc/init/chef-expander.conf +17 -0
- data/distro/debian/etc/init/chef-server-webui.conf +17 -0
- data/distro/debian/etc/init/chef-server.conf +17 -0
- data/distro/debian/etc/init/chef-solr.conf +17 -0
- data/distro/redhat/etc/init.d/chef-client +110 -0
- data/distro/redhat/etc/init.d/chef-expander +104 -0
- data/distro/redhat/etc/init.d/chef-server +112 -0
- data/distro/redhat/etc/init.d/chef-server-webui +112 -0
- data/distro/redhat/etc/init.d/chef-solr +104 -0
- data/distro/redhat/etc/logrotate.d/chef-client +8 -0
- data/distro/redhat/etc/logrotate.d/chef-expander +8 -0
- data/distro/redhat/etc/logrotate.d/chef-server +8 -0
- data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
- data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
- data/distro/redhat/etc/sysconfig/chef-client +15 -0
- data/distro/redhat/etc/sysconfig/chef-expander +7 -0
- data/distro/redhat/etc/sysconfig/chef-server +14 -0
- data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
- data/distro/redhat/etc/sysconfig/chef-solr +8 -0
- data/lib/chef.rb +41 -0
- data/lib/chef/api_client.rb +271 -0
- data/lib/chef/application.rb +152 -0
- data/lib/chef/application/agent.rb +18 -0
- data/lib/chef/application/client.rb +285 -0
- data/lib/chef/application/knife.rb +188 -0
- data/lib/chef/application/solo.rb +218 -0
- data/lib/chef/applications.rb +4 -0
- data/lib/chef/certificate.rb +194 -0
- data/lib/chef/checksum.rb +167 -0
- data/lib/chef/checksum/storage.rb +18 -0
- data/lib/chef/checksum/storage/filesystem.rb +56 -0
- data/lib/chef/checksum_cache.rb +189 -0
- data/lib/chef/client.rb +366 -0
- data/lib/chef/config.rb +248 -0
- data/lib/chef/cookbook/chefignore.rb +66 -0
- data/lib/chef/cookbook/cookbook_collection.rb +45 -0
- data/lib/chef/cookbook/cookbook_version_loader.rb +173 -0
- data/lib/chef/cookbook/file_system_file_vendor.rb +56 -0
- data/lib/chef/cookbook/file_vendor.rb +48 -0
- data/lib/chef/cookbook/metadata.rb +629 -0
- data/lib/chef/cookbook/remote_file_vendor.rb +88 -0
- data/lib/chef/cookbook/syntax_check.rb +136 -0
- data/lib/chef/cookbook_loader.rb +121 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
- data/lib/chef/cookbook_uploader.rb +154 -0
- data/lib/chef/cookbook_version.rb +1096 -0
- data/lib/chef/cookbook_version_selector.rb +168 -0
- data/lib/chef/couchdb.rb +246 -0
- data/lib/chef/daemon.rb +172 -0
- data/lib/chef/data_bag.rb +235 -0
- data/lib/chef/data_bag_item.rb +273 -0
- data/lib/chef/encrypted_data_bag_item.rb +139 -0
- data/lib/chef/environment.rb +455 -0
- data/lib/chef/exceptions.rb +154 -0
- data/lib/chef/file_access_control.rb +144 -0
- data/lib/chef/file_cache.rb +218 -0
- data/lib/chef/handler.rb +227 -0
- data/lib/chef/handler/error_report.rb +33 -0
- data/lib/chef/handler/json_file.rb +58 -0
- data/lib/chef/index_queue.rb +29 -0
- data/lib/chef/index_queue/amqp_client.rb +116 -0
- data/lib/chef/index_queue/consumer.rb +76 -0
- data/lib/chef/index_queue/indexable.rb +109 -0
- data/lib/chef/json_compat.rb +52 -0
- data/lib/chef/knife.rb +520 -0
- data/lib/chef/knife/bootstrap.rb +207 -0
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +60 -0
- data/lib/chef/knife/bootstrap/centos5-gems.erb +56 -0
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +43 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +49 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +50 -0
- data/lib/chef/knife/client_bulk_delete.rb +65 -0
- data/lib/chef/knife/client_create.rb +79 -0
- data/lib/chef/knife/client_delete.rb +46 -0
- data/lib/chef/knife/client_edit.rb +45 -0
- data/lib/chef/knife/client_list.rb +42 -0
- data/lib/chef/knife/client_reregister.rb +58 -0
- data/lib/chef/knife/client_show.rb +52 -0
- data/lib/chef/knife/configure.rb +149 -0
- data/lib/chef/knife/configure_client.rb +50 -0
- data/lib/chef/knife/cookbook_bulk_delete.rb +72 -0
- data/lib/chef/knife/cookbook_create.rb +274 -0
- data/lib/chef/knife/cookbook_delete.rb +151 -0
- data/lib/chef/knife/cookbook_download.rb +137 -0
- data/lib/chef/knife/cookbook_list.rb +47 -0
- data/lib/chef/knife/cookbook_metadata.rb +107 -0
- data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
- data/lib/chef/knife/cookbook_show.rb +102 -0
- data/lib/chef/knife/cookbook_site_download.rb +70 -0
- data/lib/chef/knife/cookbook_site_install.rb +148 -0
- data/lib/chef/knife/cookbook_site_list.rb +62 -0
- data/lib/chef/knife/cookbook_site_search.rb +51 -0
- data/lib/chef/knife/cookbook_site_share.rb +114 -0
- data/lib/chef/knife/cookbook_site_show.rb +57 -0
- data/lib/chef/knife/cookbook_site_unshare.rb +56 -0
- data/lib/chef/knife/cookbook_site_vendor.rb +46 -0
- data/lib/chef/knife/cookbook_test.rb +93 -0
- data/lib/chef/knife/cookbook_upload.rb +240 -0
- data/lib/chef/knife/core/bootstrap_context.rb +100 -0
- data/lib/chef/knife/core/cookbook_scm_repo.rb +148 -0
- data/lib/chef/knife/core/generic_presenter.rb +191 -0
- data/lib/chef/knife/core/node_editor.rb +127 -0
- data/lib/chef/knife/core/node_presenter.rb +136 -0
- data/lib/chef/knife/core/object_loader.rb +75 -0
- data/lib/chef/knife/core/subcommand_loader.rb +112 -0
- data/lib/chef/knife/core/text_formatter.rb +100 -0
- data/lib/chef/knife/core/ui.rb +216 -0
- data/lib/chef/knife/data_bag_create.rb +93 -0
- data/lib/chef/knife/data_bag_delete.rb +51 -0
- data/lib/chef/knife/data_bag_edit.rb +94 -0
- data/lib/chef/knife/data_bag_from_file.rb +87 -0
- data/lib/chef/knife/data_bag_list.rb +46 -0
- data/lib/chef/knife/data_bag_show.rb +81 -0
- data/lib/chef/knife/environment_create.rb +53 -0
- data/lib/chef/knife/environment_delete.rb +45 -0
- data/lib/chef/knife/environment_edit.rb +45 -0
- data/lib/chef/knife/environment_from_file.rb +50 -0
- data/lib/chef/knife/environment_list.rb +42 -0
- data/lib/chef/knife/environment_show.rb +46 -0
- data/lib/chef/knife/exec.rb +51 -0
- data/lib/chef/knife/help.rb +103 -0
- data/lib/chef/knife/help_topics.rb +4 -0
- data/lib/chef/knife/index_rebuild.rb +50 -0
- data/lib/chef/knife/node_bulk_delete.rb +80 -0
- data/lib/chef/knife/node_create.rb +50 -0
- data/lib/chef/knife/node_delete.rb +47 -0
- data/lib/chef/knife/node_edit.rb +72 -0
- data/lib/chef/knife/node_from_file.rb +50 -0
- data/lib/chef/knife/node_list.rb +46 -0
- data/lib/chef/knife/node_run_list_add.rb +67 -0
- data/lib/chef/knife/node_run_list_remove.rb +48 -0
- data/lib/chef/knife/node_show.rb +73 -0
- data/lib/chef/knife/recipe_list.rb +32 -0
- data/lib/chef/knife/role_bulk_delete.rb +70 -0
- data/lib/chef/knife/role_create.rb +55 -0
- data/lib/chef/knife/role_delete.rb +47 -0
- data/lib/chef/knife/role_edit.rb +48 -0
- data/lib/chef/knife/role_from_file.rb +56 -0
- data/lib/chef/knife/role_list.rb +43 -0
- data/lib/chef/knife/role_show.rb +54 -0
- data/lib/chef/knife/search.rb +141 -0
- data/lib/chef/knife/ssh.rb +367 -0
- data/lib/chef/knife/status.rb +104 -0
- data/lib/chef/knife/tag_create.rb +52 -0
- data/lib/chef/knife/tag_delete.rb +60 -0
- data/lib/chef/knife/tag_list.rb +47 -0
- data/lib/chef/log.rb +39 -0
- data/lib/chef/mash.rb +211 -0
- data/lib/chef/mixin/check_helper.rb +31 -0
- data/lib/chef/mixin/checksum.rb +32 -0
- data/lib/chef/mixin/command.rb +163 -0
- data/lib/chef/mixin/command/unix.rb +215 -0
- data/lib/chef/mixin/command/windows.rb +76 -0
- data/lib/chef/mixin/convert_to_class_name.rb +63 -0
- data/lib/chef/mixin/create_path.rb +57 -0
- data/lib/chef/mixin/deep_merge.rb +225 -0
- data/lib/chef/mixin/deprecation.rb +65 -0
- data/lib/chef/mixin/from_file.rb +50 -0
- data/lib/chef/mixin/get_source_from_package.rb +42 -0
- data/lib/chef/mixin/language.rb +163 -0
- data/lib/chef/mixin/language_include_attribute.rb +61 -0
- data/lib/chef/mixin/language_include_recipe.rb +52 -0
- data/lib/chef/mixin/params_validate.rb +225 -0
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +78 -0
- data/lib/chef/mixin/shell_out.rb +41 -0
- data/lib/chef/mixin/template.rb +95 -0
- data/lib/chef/mixin/xml_escape.rb +140 -0
- data/lib/chef/mixins.rb +15 -0
- data/lib/chef/monkey_patches/dir.rb +36 -0
- data/lib/chef/monkey_patches/numeric.rb +15 -0
- data/lib/chef/monkey_patches/object.rb +9 -0
- data/lib/chef/monkey_patches/regexp.rb +34 -0
- data/lib/chef/monkey_patches/string.rb +49 -0
- data/lib/chef/monkey_patches/tempfile.rb +64 -0
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +677 -0
- data/lib/chef/node/attribute.rb +487 -0
- data/lib/chef/openid_registration.rb +187 -0
- data/lib/chef/platform.rb +434 -0
- data/lib/chef/provider.rb +124 -0
- data/lib/chef/provider/breakpoint.rb +36 -0
- data/lib/chef/provider/cookbook_file.rb +100 -0
- data/lib/chef/provider/cron.rb +186 -0
- data/lib/chef/provider/cron/solaris.rb +195 -0
- data/lib/chef/provider/deploy.rb +418 -0
- data/lib/chef/provider/deploy/revision.rb +80 -0
- data/lib/chef/provider/deploy/timestamped.rb +33 -0
- data/lib/chef/provider/directory.rb +72 -0
- data/lib/chef/provider/env.rb +152 -0
- data/lib/chef/provider/env/windows.rb +75 -0
- data/lib/chef/provider/erl_call.rb +101 -0
- data/lib/chef/provider/execute.rb +65 -0
- data/lib/chef/provider/file.rb +226 -0
- data/lib/chef/provider/git.rb +243 -0
- data/lib/chef/provider/group.rb +133 -0
- data/lib/chef/provider/group/aix.rb +70 -0
- data/lib/chef/provider/group/dscl.rb +121 -0
- data/lib/chef/provider/group/gpasswd.rb +53 -0
- data/lib/chef/provider/group/groupadd.rb +91 -0
- data/lib/chef/provider/group/pw.rb +84 -0
- data/lib/chef/provider/group/suse.rb +53 -0
- data/lib/chef/provider/group/usermod.rb +57 -0
- data/lib/chef/provider/group/windows.rb +79 -0
- data/lib/chef/provider/http_request.rb +122 -0
- data/lib/chef/provider/ifconfig.rb +195 -0
- data/lib/chef/provider/link.rb +164 -0
- data/lib/chef/provider/log.rb +54 -0
- data/lib/chef/provider/mdadm.rb +91 -0
- data/lib/chef/provider/mount.rb +114 -0
- data/lib/chef/provider/mount/mount.rb +240 -0
- data/lib/chef/provider/mount/windows.rb +81 -0
- data/lib/chef/provider/ohai.rb +42 -0
- data/lib/chef/provider/package.rb +200 -0
- data/lib/chef/provider/package/apt.rb +145 -0
- data/lib/chef/provider/package/dpkg.rb +115 -0
- data/lib/chef/provider/package/easy_install.rb +136 -0
- data/lib/chef/provider/package/freebsd.rb +125 -0
- data/lib/chef/provider/package/macports.rb +105 -0
- data/lib/chef/provider/package/pacman.rb +101 -0
- data/lib/chef/provider/package/portage.rb +135 -0
- data/lib/chef/provider/package/rpm.rb +104 -0
- data/lib/chef/provider/package/rubygems.rb +465 -0
- data/lib/chef/provider/package/solaris.rb +130 -0
- data/lib/chef/provider/package/yum-dump.py +286 -0
- data/lib/chef/provider/package/yum.rb +1173 -0
- data/lib/chef/provider/package/zypper.rb +144 -0
- data/lib/chef/provider/remote_directory.rb +137 -0
- data/lib/chef/provider/remote_file.rb +118 -0
- data/lib/chef/provider/route.rb +193 -0
- data/lib/chef/provider/ruby_block.rb +34 -0
- data/lib/chef/provider/script.rb +55 -0
- data/lib/chef/provider/service.rb +122 -0
- data/lib/chef/provider/service/arch.rb +116 -0
- data/lib/chef/provider/service/debian.rb +130 -0
- data/lib/chef/provider/service/freebsd.rb +154 -0
- data/lib/chef/provider/service/gentoo.rb +53 -0
- data/lib/chef/provider/service/init.rb +71 -0
- data/lib/chef/provider/service/insserv.rb +52 -0
- data/lib/chef/provider/service/invokercd.rb +35 -0
- data/lib/chef/provider/service/redhat.rb +60 -0
- data/lib/chef/provider/service/simple.rb +120 -0
- data/lib/chef/provider/service/solaris.rb +85 -0
- data/lib/chef/provider/service/systemd.rb +102 -0
- data/lib/chef/provider/service/upstart.rb +198 -0
- data/lib/chef/provider/service/windows.rb +155 -0
- data/lib/chef/provider/subversion.rb +197 -0
- data/lib/chef/provider/template.rb +104 -0
- data/lib/chef/provider/user.rb +186 -0
- data/lib/chef/provider/user/dscl.rb +280 -0
- data/lib/chef/provider/user/pw.rb +113 -0
- data/lib/chef/provider/user/useradd.rb +137 -0
- data/lib/chef/provider/user/windows.rb +124 -0
- data/lib/chef/providers.rb +95 -0
- data/lib/chef/recipe.rb +129 -0
- data/lib/chef/resource.rb +609 -0
- data/lib/chef/resource/apt_package.rb +34 -0
- data/lib/chef/resource/bash.rb +33 -0
- data/lib/chef/resource/breakpoint.rb +35 -0
- data/lib/chef/resource/conditional.rb +90 -0
- data/lib/chef/resource/cookbook_file.rb +45 -0
- data/lib/chef/resource/cron.rb +188 -0
- data/lib/chef/resource/csh.rb +33 -0
- data/lib/chef/resource/deploy.rb +389 -0
- data/lib/chef/resource/deploy_revision.rb +40 -0
- data/lib/chef/resource/directory.rb +76 -0
- data/lib/chef/resource/dpkg_package.rb +34 -0
- data/lib/chef/resource/easy_install_package.rb +57 -0
- data/lib/chef/resource/env.rb +58 -0
- data/lib/chef/resource/erl_call.rb +83 -0
- data/lib/chef/resource/execute.rb +127 -0
- data/lib/chef/resource/file.rb +99 -0
- data/lib/chef/resource/freebsd_package.rb +35 -0
- data/lib/chef/resource/gem_package.rb +53 -0
- data/lib/chef/resource/git.rb +46 -0
- data/lib/chef/resource/group.rb +78 -0
- data/lib/chef/resource/http_request.rb +61 -0
- data/lib/chef/resource/ifconfig.rb +144 -0
- data/lib/chef/resource/link.rb +78 -0
- data/lib/chef/resource/log.rb +62 -0
- data/lib/chef/resource/macports_package.rb +29 -0
- data/lib/chef/resource/mdadm.rb +82 -0
- data/lib/chef/resource/mount.rb +134 -0
- data/lib/chef/resource/ohai.rb +40 -0
- data/lib/chef/resource/package.rb +80 -0
- data/lib/chef/resource/pacman_package.rb +33 -0
- data/lib/chef/resource/perl.rb +33 -0
- data/lib/chef/resource/portage_package.rb +33 -0
- data/lib/chef/resource/python.rb +33 -0
- data/lib/chef/resource/remote_directory.rb +109 -0
- data/lib/chef/resource/remote_file.rb +83 -0
- data/lib/chef/resource/route.rb +135 -0
- data/lib/chef/resource/rpm_package.rb +34 -0
- data/lib/chef/resource/ruby.rb +33 -0
- data/lib/chef/resource/ruby_block.rb +40 -0
- data/lib/chef/resource/scm.rb +147 -0
- data/lib/chef/resource/script.rb +60 -0
- data/lib/chef/resource/service.rb +151 -0
- data/lib/chef/resource/solaris_package.rb +36 -0
- data/lib/chef/resource/subversion.rb +36 -0
- data/lib/chef/resource/template.rb +69 -0
- data/lib/chef/resource/timestamped_deploy.rb +31 -0
- data/lib/chef/resource/user.rb +130 -0
- data/lib/chef/resource/yum_package.rb +63 -0
- data/lib/chef/resource_collection.rb +217 -0
- data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
- data/lib/chef/resource_definition.rb +67 -0
- data/lib/chef/resource_definition_list.rb +38 -0
- data/lib/chef/resources.rb +64 -0
- data/lib/chef/rest.rb +400 -0
- data/lib/chef/rest/auth_credentials.rb +71 -0
- data/lib/chef/rest/cookie_jar.rb +31 -0
- data/lib/chef/rest/rest_request.rb +213 -0
- data/lib/chef/role.rb +343 -0
- data/lib/chef/run_context.rb +126 -0
- data/lib/chef/run_list.rb +165 -0
- data/lib/chef/run_list/run_list_expansion.rb +193 -0
- data/lib/chef/run_list/run_list_item.rb +92 -0
- data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
- data/lib/chef/run_status.rb +121 -0
- data/lib/chef/runner.rb +105 -0
- data/lib/chef/sandbox.rb +153 -0
- data/lib/chef/search/query.rb +65 -0
- data/lib/chef/shef.rb +327 -0
- data/lib/chef/shef/ext.rb +569 -0
- data/lib/chef/shef/model_wrapper.rb +120 -0
- data/lib/chef/shef/shef_rest.rb +28 -0
- data/lib/chef/shef/shef_session.rb +285 -0
- data/lib/chef/shell_out.rb +249 -0
- data/lib/chef/shell_out/unix.rb +223 -0
- data/lib/chef/shell_out/windows.rb +588 -0
- data/lib/chef/solr_query.rb +187 -0
- data/lib/chef/solr_query/lucene.treetop +150 -0
- data/lib/chef/solr_query/lucene_nodes.rb +285 -0
- data/lib/chef/solr_query/query_transform.rb +65 -0
- data/lib/chef/solr_query/solr_http_request.rb +132 -0
- data/lib/chef/streaming_cookbook_uploader.rb +201 -0
- data/lib/chef/tasks/chef_repo.rake +334 -0
- data/lib/chef/util/file_edit.rb +122 -0
- data/lib/chef/util/windows.rb +56 -0
- data/lib/chef/util/windows/net_group.rb +101 -0
- data/lib/chef/util/windows/net_use.rb +121 -0
- data/lib/chef/util/windows/net_user.rb +198 -0
- data/lib/chef/util/windows/volume.rb +59 -0
- data/lib/chef/version.rb +23 -0
- data/lib/chef/version_class.rb +70 -0
- data/lib/chef/version_constraint.rb +116 -0
- data/lib/chef/webui_user.rb +231 -0
- metadata +764 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2011 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'chef/knife'
|
|
20
|
+
require 'chef/knife/cookbook_site_install'
|
|
21
|
+
|
|
22
|
+
class Chef::Knife::CookbookSiteVendor < Chef::Knife::CookbookSiteInstall
|
|
23
|
+
|
|
24
|
+
def self.load_deps
|
|
25
|
+
superclass.load_deps
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.options=(new_opts)
|
|
29
|
+
superclass.options = new_opts
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.options
|
|
33
|
+
superclass.options
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
banner(<<-B)
|
|
37
|
+
*************************************************
|
|
38
|
+
DEPRECATED: please use knife cookbook site install
|
|
39
|
+
*************************************************
|
|
40
|
+
|
|
41
|
+
#{superclass.banner}
|
|
42
|
+
B
|
|
43
|
+
|
|
44
|
+
category 'deprecated'
|
|
45
|
+
|
|
46
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#
|
|
2
|
+
#
|
|
3
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
4
|
+
# Author:: Matthew Kent (<mkent@magoazul.com>)
|
|
5
|
+
# Copyright:: Copyright (c) 2009 Opscode, Inc.
|
|
6
|
+
# Copyright:: Copyright (c) 2010 Matthew Kent
|
|
7
|
+
# License:: Apache License, Version 2.0
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
require 'chef/knife'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Knife
|
|
25
|
+
class CookbookTest < Knife
|
|
26
|
+
|
|
27
|
+
deps do
|
|
28
|
+
require 'chef/checksum_cache'
|
|
29
|
+
require 'chef/cookbook/syntax_check'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
banner "knife cookbook test [COOKBOOKS...] (options)"
|
|
33
|
+
|
|
34
|
+
option :cookbook_path,
|
|
35
|
+
:short => "-o PATH:PATH",
|
|
36
|
+
:long => "--cookbook-path PATH:PATH",
|
|
37
|
+
:description => "A colon-separated path to look for cookbooks in",
|
|
38
|
+
:proc => lambda { |o| o.split(":") }
|
|
39
|
+
|
|
40
|
+
option :all,
|
|
41
|
+
:short => "-a",
|
|
42
|
+
:long => "--all",
|
|
43
|
+
:description => "Test all cookbooks, rather than just a single cookbook"
|
|
44
|
+
|
|
45
|
+
def run
|
|
46
|
+
config[:cookbook_path] ||= Chef::Config[:cookbook_path]
|
|
47
|
+
|
|
48
|
+
checked_a_cookbook = false
|
|
49
|
+
if config[:all]
|
|
50
|
+
cookbook_loader.each do |key, cookbook|
|
|
51
|
+
checked_a_cookbook = true
|
|
52
|
+
test_cookbook(key)
|
|
53
|
+
end
|
|
54
|
+
else
|
|
55
|
+
@name_args.each do |cb|
|
|
56
|
+
ui.info "checking #{cb}"
|
|
57
|
+
next unless cookbook_loader.cookbook_exists?(cb)
|
|
58
|
+
checked_a_cookbook = true
|
|
59
|
+
test_cookbook(cb)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
unless checked_a_cookbook
|
|
63
|
+
ui.warn("No cookbooks to test in #{Array(config[:cookbook_path]).join(',')} - is your cookbook path misconfigured?")
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_cookbook(cookbook)
|
|
68
|
+
ui.info("Running syntax check on #{cookbook}")
|
|
69
|
+
Array(config[:cookbook_path]).reverse.each do |path|
|
|
70
|
+
syntax_checker = Chef::Cookbook::SyntaxCheck.for_cookbook(cookbook, path)
|
|
71
|
+
test_ruby(syntax_checker)
|
|
72
|
+
test_templates(syntax_checker)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_ruby(syntax_checker)
|
|
78
|
+
ui.info("Validating ruby files")
|
|
79
|
+
exit(1) unless syntax_checker.validate_ruby_files
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def test_templates(syntax_checker)
|
|
83
|
+
ui.info("Validating templates")
|
|
84
|
+
exit(1) unless syntax_checker.validate_templates
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def cookbook_loader
|
|
88
|
+
@cookbook_loader ||= Chef::CookbookLoader.new(config[:cookbook_path])
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Christopher Walters (<cw@opscode.com>)
|
|
4
|
+
# Author:: Nuo Yan (<yan.nuo@gmail.com>)
|
|
5
|
+
# Copyright:: Copyright (c) 2009, 2010 Opscode, Inc.
|
|
6
|
+
# License:: Apache License, Version 2.0
|
|
7
|
+
#
|
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
# See the License for the specific language governing permissions and
|
|
18
|
+
# limitations under the License.
|
|
19
|
+
#
|
|
20
|
+
|
|
21
|
+
require 'chef/knife'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Knife
|
|
25
|
+
class CookbookUpload < Knife
|
|
26
|
+
|
|
27
|
+
CHECKSUM = "checksum"
|
|
28
|
+
MATCH_CHECKSUM = /[0-9a-f]{32,}/
|
|
29
|
+
|
|
30
|
+
deps do
|
|
31
|
+
require 'chef/exceptions'
|
|
32
|
+
require 'chef/cookbook_loader'
|
|
33
|
+
require 'chef/cookbook_uploader'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
banner "knife cookbook upload [COOKBOOKS...] (options)"
|
|
37
|
+
|
|
38
|
+
option :cookbook_path,
|
|
39
|
+
:short => "-o PATH:PATH",
|
|
40
|
+
:long => "--cookbook-path PATH:PATH",
|
|
41
|
+
:description => "A colon-separated path to look for cookbooks in",
|
|
42
|
+
:proc => lambda { |o| o.split(":") }
|
|
43
|
+
|
|
44
|
+
option :freeze,
|
|
45
|
+
:long => '--freeze',
|
|
46
|
+
:description => 'Freeze this version of the cookbook so that it cannot be overwritten',
|
|
47
|
+
:boolean => true
|
|
48
|
+
|
|
49
|
+
option :all,
|
|
50
|
+
:short => "-a",
|
|
51
|
+
:long => "--all",
|
|
52
|
+
:description => "Upload all cookbooks, rather than just a single cookbook"
|
|
53
|
+
|
|
54
|
+
option :force,
|
|
55
|
+
:long => '--force',
|
|
56
|
+
:boolean => true,
|
|
57
|
+
:description => "Update cookbook versions even if they have been frozen"
|
|
58
|
+
|
|
59
|
+
option :environment,
|
|
60
|
+
:short => '-E',
|
|
61
|
+
:long => '--environment ENVIRONMENT',
|
|
62
|
+
:description => "Set ENVIRONMENT's version dependency match the version you're uploading.",
|
|
63
|
+
:default => nil
|
|
64
|
+
|
|
65
|
+
option :depends,
|
|
66
|
+
:short => "-d",
|
|
67
|
+
:long => "--include-dependencies",
|
|
68
|
+
:description => "Also upload cookbook dependencies"
|
|
69
|
+
|
|
70
|
+
def run
|
|
71
|
+
config[:cookbook_path] ||= Chef::Config[:cookbook_path]
|
|
72
|
+
|
|
73
|
+
assert_environment_valid!
|
|
74
|
+
warn_about_cookbook_shadowing
|
|
75
|
+
version_constraints_to_update = {}
|
|
76
|
+
# Get a list of cookbooks and their versions from the server
|
|
77
|
+
# for checking existence of dependending cookbooks.
|
|
78
|
+
@server_side_cookbooks = Chef::CookbookVersion.list
|
|
79
|
+
|
|
80
|
+
if config[:all]
|
|
81
|
+
justify_width = cookbook_repo.cookbook_names.map {|name| name.size}.max.to_i + 2
|
|
82
|
+
cookbook_repo.each do |cookbook_name, cookbook|
|
|
83
|
+
cookbook.freeze_version if config[:freeze]
|
|
84
|
+
upload(cookbook, justify_width)
|
|
85
|
+
version_constraints_to_update[cookbook_name] = cookbook.version
|
|
86
|
+
end
|
|
87
|
+
else
|
|
88
|
+
if @name_args.empty?
|
|
89
|
+
show_usage
|
|
90
|
+
ui.error("You must specify the --all flag or at least one cookbook name")
|
|
91
|
+
exit 1
|
|
92
|
+
end
|
|
93
|
+
justify_width = @name_args.map {|name| name.size }.max.to_i + 2
|
|
94
|
+
@name_args.each do |cookbook_name|
|
|
95
|
+
begin
|
|
96
|
+
cookbook = cookbook_repo[cookbook_name]
|
|
97
|
+
if config[:depends]
|
|
98
|
+
cookbook.metadata.dependencies.each do |dep, versions|
|
|
99
|
+
@name_args.push dep
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
cookbook.freeze_version if config[:freeze]
|
|
103
|
+
upload(cookbook, justify_width)
|
|
104
|
+
version_constraints_to_update[cookbook_name] = cookbook.version
|
|
105
|
+
rescue Exceptions::CookbookNotFoundInRepo => e
|
|
106
|
+
ui.error("Could not find cookbook #{cookbook_name} in your cookbook path, skipping it")
|
|
107
|
+
Log.debug(e)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
ui.info "upload complete"
|
|
113
|
+
update_version_constraints(version_constraints_to_update) if config[:environment]
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def cookbook_repo
|
|
117
|
+
@cookbook_loader ||= begin
|
|
118
|
+
Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::FileSystemFileVendor.new(manifest, config[:cookbook_path]) }
|
|
119
|
+
Chef::CookbookLoader.new(config[:cookbook_path])
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def update_version_constraints(new_version_constraints)
|
|
124
|
+
new_version_constraints.each do |cookbook_name, version|
|
|
125
|
+
environment.cookbook_versions[cookbook_name] = "= #{version}"
|
|
126
|
+
end
|
|
127
|
+
environment.save
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def environment
|
|
132
|
+
@environment ||= config[:environment] ? Environment.load(config[:environment]) : nil
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def warn_about_cookbook_shadowing
|
|
136
|
+
unless cookbook_repo.merged_cookbooks.empty?
|
|
137
|
+
ui.warn "* " * 40
|
|
138
|
+
ui.warn(<<-WARNING)
|
|
139
|
+
The cookbooks: #{cookbook_repo.merged_cookbooks.join(', ')} exist in multiple places in your cookbook_path.
|
|
140
|
+
A composite version of these cookbooks has been compiled for uploading.
|
|
141
|
+
|
|
142
|
+
#{ui.color('IMPORTANT:', :red, :bold)} In a future version of Chef, this behavior will be removed and you will no longer
|
|
143
|
+
be able to have the same version of a cookbook in multiple places in your cookbook_path.
|
|
144
|
+
WARNING
|
|
145
|
+
ui.warn "The affected cookbooks are located:"
|
|
146
|
+
ui.output ui.format_for_display(cookbook_repo.merged_cookbook_paths)
|
|
147
|
+
ui.warn "* " * 40
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
private
|
|
152
|
+
|
|
153
|
+
def assert_environment_valid!
|
|
154
|
+
environment
|
|
155
|
+
rescue Net::HTTPServerException => e
|
|
156
|
+
if e.response.code.to_s == "404"
|
|
157
|
+
ui.error "The environment #{config[:environment]} does not exist on the server, aborting."
|
|
158
|
+
Log.debug(e)
|
|
159
|
+
exit 1
|
|
160
|
+
else
|
|
161
|
+
raise
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def upload(cookbook, justify_width)
|
|
166
|
+
ui.info("Uploading #{cookbook.name.to_s.ljust(justify_width + 10)} [#{cookbook.version}]")
|
|
167
|
+
|
|
168
|
+
check_for_broken_links(cookbook)
|
|
169
|
+
check_dependencies(cookbook)
|
|
170
|
+
Chef::CookbookUploader.new(cookbook, config[:cookbook_path], :force => config[:force]).upload_cookbook
|
|
171
|
+
rescue Net::HTTPServerException => e
|
|
172
|
+
case e.response.code
|
|
173
|
+
when "409"
|
|
174
|
+
ui.error "Version #{cookbook.version} of cookbook #{cookbook.name} is frozen. Use --force to override."
|
|
175
|
+
Log.debug(e)
|
|
176
|
+
else
|
|
177
|
+
raise
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# if only you people wouldn't put broken symlinks in your cookbooks in
|
|
182
|
+
# the first place. ;)
|
|
183
|
+
def check_for_broken_links(cookbook)
|
|
184
|
+
# MUST!! dup the cookbook version object--it memoizes its
|
|
185
|
+
# manifest object, but the manifest becomes invalid when you
|
|
186
|
+
# regenerate the metadata
|
|
187
|
+
broken_files = cookbook.dup.manifest_records_by_path.select do |path, info|
|
|
188
|
+
info[CHECKSUM].nil? || info[CHECKSUM] !~ MATCH_CHECKSUM
|
|
189
|
+
end
|
|
190
|
+
unless broken_files.empty?
|
|
191
|
+
broken_filenames = Array(broken_files).map {|path, info| path}
|
|
192
|
+
ui.error "The cookbook #{cookbook.name} has one or more broken files"
|
|
193
|
+
ui.info "This is probably caused by broken symlinks in the cookbook directory"
|
|
194
|
+
ui.info "The broken file(s) are: #{broken_filenames.join(' ')}"
|
|
195
|
+
exit 1
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def check_dependencies(cookbook)
|
|
200
|
+
# for each dependency, check if the version is on the server, or
|
|
201
|
+
# the version is in the cookbooks being uploaded. If not, exit and warn the user.
|
|
202
|
+
cookbook.metadata.dependencies.each do |cookbook_name, version|
|
|
203
|
+
unless check_server_side_cookbooks(cookbook_name, version) || check_uploading_cookbooks(cookbook_name, version)
|
|
204
|
+
# warn the user and exit
|
|
205
|
+
ui.error "Cookbook #{cookbook.name} depends on cookbook #{cookbook_name} version #{version},"
|
|
206
|
+
ui.error "which is not currently being uploaded and cannot be found on the server."
|
|
207
|
+
exit 1
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def check_server_side_cookbooks(cookbook_name, version)
|
|
213
|
+
if @server_side_cookbooks[cookbook_name].nil?
|
|
214
|
+
false
|
|
215
|
+
else
|
|
216
|
+
@server_side_cookbooks[cookbook_name]["versions"].each do |versions_hash|
|
|
217
|
+
return true if Chef::VersionConstraint.new(version).include?(versions_hash["version"])
|
|
218
|
+
end
|
|
219
|
+
false
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def check_uploading_cookbooks(cookbook_name, version)
|
|
224
|
+
if config[:all]
|
|
225
|
+
# check from all local cookbooks in the path
|
|
226
|
+
unless cookbook_repo[cookbook_name].nil?
|
|
227
|
+
return Chef::VersionConstraint.new(version).include?(cookbook_repo[cookbook_name].version)
|
|
228
|
+
end
|
|
229
|
+
else
|
|
230
|
+
# check from only those in the command argument
|
|
231
|
+
if @name_args.include?(cookbook_name)
|
|
232
|
+
return Chef::VersionConstraint.new(version).include?(cookbook_repo[cookbook_name].version)
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
false
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2011 Opscode, Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require 'chef/run_list'
|
|
20
|
+
class Chef
|
|
21
|
+
class Knife
|
|
22
|
+
module Core
|
|
23
|
+
# Instances of BootstrapContext are the context objects (i.e., +self+) for
|
|
24
|
+
# bootstrap templates. For backwards compatability, they +must+ set the
|
|
25
|
+
# following instance variables:
|
|
26
|
+
# * @config - a hash of knife's config values
|
|
27
|
+
# * @run_list - the run list for the node to boostrap
|
|
28
|
+
#
|
|
29
|
+
class BootstrapContext
|
|
30
|
+
|
|
31
|
+
def initialize(config, run_list, chef_config)
|
|
32
|
+
@config = config
|
|
33
|
+
@run_list = run_list
|
|
34
|
+
@chef_config = chef_config
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def bootstrap_version_string
|
|
38
|
+
if @config[:prerelease]
|
|
39
|
+
"--prerelease"
|
|
40
|
+
else
|
|
41
|
+
"--version #{chef_version}"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def bootstrap_environment
|
|
46
|
+
@chef_config[:environment] || '_default'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def validation_key
|
|
50
|
+
IO.read(@chef_config[:validation_key])
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def encrypted_data_bag_secret
|
|
54
|
+
IO.read(@chef_config[:encrypted_data_bag_secret])
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def config_content
|
|
58
|
+
client_rb = <<-CONFIG
|
|
59
|
+
log_level :info
|
|
60
|
+
log_location STDOUT
|
|
61
|
+
chef_server_url "#{@chef_config[:chef_server_url]}"
|
|
62
|
+
validation_client_name "#{@chef_config[:validation_client_name]}"
|
|
63
|
+
CONFIG
|
|
64
|
+
if @config[:chef_node_name]
|
|
65
|
+
client_rb << %Q{node_name "#{@config[:chef_node_name]}"\n}
|
|
66
|
+
else
|
|
67
|
+
client_rb << "# Using default node name (fqdn)\n"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
if knife_config[:bootstrap_proxy]
|
|
71
|
+
client_rb << %Q{http_proxy "#{knife_config[:bootstrap_proxy]}"\n}
|
|
72
|
+
client_rb << %Q{https_proxy "#{knife_config[:bootstrap_proxy]}"\n}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
if @chef_config[:encrypted_data_bag_secret]
|
|
76
|
+
client_rb << %Q{encrypted_data_bag_secret "/etc/chef/encrypted_data_bag_secret"\n}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
client_rb
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def start_chef
|
|
83
|
+
s = "/usr/bin/chef-client -j /etc/chef/first-boot.json"
|
|
84
|
+
s << " -E #{bootstrap_environment}" if chef_version.to_f != 0.9 # only use the -E option on Chef 0.10+
|
|
85
|
+
s
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def knife_config
|
|
89
|
+
@chef_config.key?(:knife) ? @chef_config[:knife] : {}
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def chef_version
|
|
93
|
+
knife_config[:bootstrap_version] || Chef::VERSION
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|