TrueCar-chef 0.10.0.beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-server-webui.conf +10 -0
- data/distro/arch/etc/conf.d/chef-server.conf +10 -0
- data/distro/arch/etc/conf.d/chef-solr-indexer.conf +8 -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-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/arch/etc/rc.d/chef-solr-indexer +78 -0
- data/distro/common/man/man1/chef-indexer.1 +42 -0
- data/distro/common/man/man1/chef-server-webui.1 +106 -0
- data/distro/common/man/man1/chef-server.1 +107 -0
- data/distro/common/man/man1/chef-solr-indexer.1 +55 -0
- data/distro/common/man/man1/chef-solr.1 +55 -0
- data/distro/common/man/man8/chef-client.8 +63 -0
- data/distro/common/man/man8/chef-solo.8 +57 -0
- data/distro/common/man/man8/chef-solr-rebuild.8 +37 -0
- data/distro/common/man/man8/knife.8 +1349 -0
- data/distro/common/man/man8/shef.8 +45 -0
- data/distro/common/markdown/README +3 -0
- data/distro/common/markdown/knife.mkd +865 -0
- data/distro/debian/etc/default/chef-client +4 -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/default/chef-solr-indexer +7 -0
- data/distro/debian/etc/init.d/chef-client +175 -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.d/chef-solr-indexer +176 -0
- data/distro/debian/etc/init/chef-client.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-indexer.conf +17 -0
- data/distro/debian/etc/init/chef-solr.conf +17 -0
- data/distro/redhat/etc/init.d/chef-client +106 -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/init.d/chef-solr-indexer +104 -0
- data/distro/redhat/etc/logrotate.d/chef-client +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/logrotate.d/chef-solr-indexer +8 -0
- data/distro/redhat/etc/sysconfig/chef-client +15 -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/distro/redhat/etc/sysconfig/chef-solr-indexer +7 -0
- data/lib/chef.rb +40 -0
- data/lib/chef/api_client.rb +264 -0
- data/lib/chef/application.rb +137 -0
- data/lib/chef/application/agent.rb +18 -0
- data/lib/chef/application/client.rb +242 -0
- data/lib/chef/application/knife.rb +169 -0
- data/lib/chef/application/solo.rb +217 -0
- data/lib/chef/applications.rb +4 -0
- data/lib/chef/certificate.rb +194 -0
- data/lib/chef/checksum.rb +182 -0
- data/lib/chef/checksum_cache.rb +189 -0
- data/lib/chef/client.rb +362 -0
- data/lib/chef/config.rb +244 -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 +151 -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 +592 -0
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -0
- data/lib/chef/cookbook/syntax_check.rb +136 -0
- data/lib/chef/cookbook_loader.rb +103 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
- data/lib/chef/cookbook_uploader.rb +125 -0
- data/lib/chef/cookbook_version.rb +979 -0
- data/lib/chef/cookbook_version_selector.rb +163 -0
- data/lib/chef/couchdb.rb +247 -0
- data/lib/chef/daemon.rb +172 -0
- data/lib/chef/data_bag.rb +223 -0
- data/lib/chef/data_bag_item.rb +267 -0
- data/lib/chef/encrypted_data_bag_item.rb +126 -0
- data/lib/chef/environment.rb +386 -0
- data/lib/chef/exceptions.rb +153 -0
- data/lib/chef/file_access_control.rb +140 -0
- data/lib/chef/file_cache.rb +218 -0
- data/lib/chef/handler.rb +206 -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 +424 -0
- data/lib/chef/knife/bootstrap.rb +185 -0
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +47 -0
- data/lib/chef/knife/bootstrap/centos5-gems.erb +41 -0
- data/lib/chef/knife/bootstrap/client-install.vbs +80 -0
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +38 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +32 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +46 -0
- data/lib/chef/knife/bootstrap/windows-gems.erb +34 -0
- data/lib/chef/knife/client_bulk_delete.rb +43 -0
- data/lib/chef/knife/client_create.rb +73 -0
- data/lib/chef/knife/client_delete.rb +48 -0
- data/lib/chef/knife/client_edit.rb +48 -0
- data/lib/chef/knife/client_list.rb +43 -0
- data/lib/chef/knife/client_reregister.rb +59 -0
- data/lib/chef/knife/client_show.rb +53 -0
- data/lib/chef/knife/configure.rb +136 -0
- data/lib/chef/knife/configure_client.rb +52 -0
- data/lib/chef/knife/cookbook_bulk_delete.rb +61 -0
- data/lib/chef/knife/cookbook_create.rb +274 -0
- data/lib/chef/knife/cookbook_delete.rb +149 -0
- data/lib/chef/knife/cookbook_download.rb +134 -0
- data/lib/chef/knife/cookbook_list.rb +50 -0
- data/lib/chef/knife/cookbook_metadata.rb +102 -0
- data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
- data/lib/chef/knife/cookbook_show.rb +101 -0
- data/lib/chef/knife/cookbook_site_download.rb +58 -0
- data/lib/chef/knife/cookbook_site_list.rb +56 -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 +145 -0
- data/lib/chef/knife/cookbook_test.rb +82 -0
- data/lib/chef/knife/cookbook_upload.rb +146 -0
- data/lib/chef/knife/data_bag_create.rb +94 -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 +85 -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 +39 -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/index_rebuild.rb +50 -0
- data/lib/chef/knife/node_bulk_delete.rb +46 -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 +163 -0
- data/lib/chef/knife/node_from_file.rb +45 -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 +62 -0
- data/lib/chef/knife/recipe_list.rb +33 -0
- data/lib/chef/knife/role_bulk_delete.rb +47 -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 +49 -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 +123 -0
- data/lib/chef/knife/ssh.rb +318 -0
- data/lib/chef/knife/status.rb +90 -0
- data/lib/chef/knife/subcommand_loader.rb +101 -0
- data/lib/chef/knife/tag_create.rb +31 -0
- data/lib/chef/knife/tag_delete.rb +31 -0
- data/lib/chef/knife/tag_list.rb +29 -0
- data/lib/chef/knife/ui.rb +227 -0
- data/lib/chef/knife/windows_bootstrap.rb +157 -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 +221 -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 +56 -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/language.rb +165 -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 +81 -0
- data/lib/chef/mixin/shell_out.rb +40 -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 +7 -0
- data/lib/chef/monkey_patches/regexp.rb +34 -0
- data/lib/chef/monkey_patches/string.rb +28 -0
- data/lib/chef/monkey_patches/tempfile.rb +64 -0
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +661 -0
- data/lib/chef/node/attribute.rb +487 -0
- data/lib/chef/openid_registration.rb +187 -0
- data/lib/chef/platform.rb +409 -0
- data/lib/chef/provider.rb +124 -0
- data/lib/chef/provider/breakpoint.rb +36 -0
- data/lib/chef/provider/cookbook_file.rb +101 -0
- data/lib/chef/provider/cron.rb +186 -0
- data/lib/chef/provider/cron/solaris.rb +195 -0
- data/lib/chef/provider/deploy.rb +320 -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 +100 -0
- data/lib/chef/provider/execute.rb +60 -0
- data/lib/chef/provider/file.rb +222 -0
- data/lib/chef/provider/git.rb +221 -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 +81 -0
- data/lib/chef/provider/group/pw.rb +84 -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 +132 -0
- data/lib/chef/provider/link.rb +161 -0
- data/lib/chef/provider/log.rb +54 -0
- data/lib/chef/provider/mdadm.rb +91 -0
- data/lib/chef/provider/mount.rb +117 -0
- data/lib/chef/provider/mount/mount.rb +232 -0
- data/lib/chef/provider/mount/windows.rb +80 -0
- data/lib/chef/provider/ohai.rb +41 -0
- data/lib/chef/provider/package.rb +160 -0
- data/lib/chef/provider/package/apt.rb +110 -0
- data/lib/chef/provider/package/dpkg.rb +112 -0
- data/lib/chef/provider/package/easy_install.rb +136 -0
- data/lib/chef/provider/package/freebsd.rb +123 -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 +101 -0
- data/lib/chef/provider/package/rubygems.rb +462 -0
- data/lib/chef/provider/package/solaris.rb +127 -0
- data/lib/chef/provider/package/yum-dump.py +128 -0
- data/lib/chef/provider/package/yum.rb +261 -0
- data/lib/chef/provider/package/zypper.rb +133 -0
- data/lib/chef/provider/remote_directory.rb +138 -0
- data/lib/chef/provider/remote_file.rb +119 -0
- data/lib/chef/provider/route.rb +195 -0
- data/lib/chef/provider/ruby_block.rb +33 -0
- data/lib/chef/provider/script.rb +55 -0
- data/lib/chef/provider/service.rb +128 -0
- data/lib/chef/provider/service/arch.rb +109 -0
- data/lib/chef/provider/service/debian.rb +130 -0
- data/lib/chef/provider/service/freebsd.rb +156 -0
- data/lib/chef/provider/service/gentoo.rb +54 -0
- data/lib/chef/provider/service/init.rb +71 -0
- data/lib/chef/provider/service/insserv.rb +52 -0
- data/lib/chef/provider/service/redhat.rb +60 -0
- data/lib/chef/provider/service/simple.rb +118 -0
- data/lib/chef/provider/service/solaris.rb +85 -0
- data/lib/chef/provider/service/upstart.rb +192 -0
- data/lib/chef/provider/service/windows.rb +146 -0
- data/lib/chef/provider/subversion.rb +194 -0
- data/lib/chef/provider/template.rb +105 -0
- data/lib/chef/provider/user.rb +187 -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 +93 -0
- data/lib/chef/recipe.rb +128 -0
- data/lib/chef/resource.rb +530 -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/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 +371 -0
- data/lib/chef/resource/deploy_revision.rb +35 -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 +37 -0
- data/lib/chef/resource/group.rb +70 -0
- data/lib/chef/resource/http_request.rb +61 -0
- data/lib/chef/resource/ifconfig.rb +134 -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 +135 -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 +160 -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 +43 -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 +386 -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 +188 -0
- data/lib/chef/role.rb +341 -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 +99 -0
- data/lib/chef/sandbox.rb +153 -0
- data/lib/chef/search/query.rb +65 -0
- data/lib/chef/shef.rb +326 -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 +284 -0
- data/lib/chef/shell_out.rb +238 -0
- data/lib/chef/shell_out/unix.rb +223 -0
- data/lib/chef/shell_out/windows.rb +98 -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 +118 -0
- data/lib/chef/streaming_cookbook_uploader.rb +201 -0
- data/lib/chef/tasks/chef_repo.rake +256 -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 +600 -0
data/lib/chef/client.rb
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Christopher Walters (<cw@opscode.com>)
|
|
4
|
+
# Author:: Christopher Brown (<cb@opscode.com>)
|
|
5
|
+
# Author:: Tim Hinderliter (<tim@opscode.com>)
|
|
6
|
+
# Copyright:: Copyright (c) 2008-2011 Opscode, Inc.
|
|
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/config'
|
|
22
|
+
require 'chef/mixin/params_validate'
|
|
23
|
+
require 'chef/log'
|
|
24
|
+
require 'chef/rest'
|
|
25
|
+
require 'chef/platform'
|
|
26
|
+
require 'chef/node'
|
|
27
|
+
require 'chef/role'
|
|
28
|
+
require 'chef/file_cache'
|
|
29
|
+
require 'chef/run_context'
|
|
30
|
+
require 'chef/runner'
|
|
31
|
+
require 'chef/run_status'
|
|
32
|
+
require 'chef/cookbook/cookbook_collection'
|
|
33
|
+
require 'chef/cookbook/file_vendor'
|
|
34
|
+
require 'chef/cookbook/file_system_file_vendor'
|
|
35
|
+
require 'chef/cookbook/remote_file_vendor'
|
|
36
|
+
require 'chef/version'
|
|
37
|
+
require 'ohai'
|
|
38
|
+
|
|
39
|
+
class Chef
|
|
40
|
+
# == Chef::Client
|
|
41
|
+
# The main object in a Chef run. Preps a Chef::Node and Chef::RunContext,
|
|
42
|
+
# syncs cookbooks if necessary, and triggers convergence.
|
|
43
|
+
class Client
|
|
44
|
+
|
|
45
|
+
SANE_PATHS = %w[/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin]
|
|
46
|
+
|
|
47
|
+
# Clears all notifications for client run status events.
|
|
48
|
+
# Primarily for testing purposes.
|
|
49
|
+
def self.clear_notifications
|
|
50
|
+
@run_start_notifications = nil
|
|
51
|
+
@run_completed_successfully_notifications = nil
|
|
52
|
+
@run_failed_notifications = nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# The list of notifications to be run when the client run starts.
|
|
56
|
+
def self.run_start_notifications
|
|
57
|
+
@run_start_notifications ||= []
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# The list of notifications to be run when the client run completes
|
|
61
|
+
# successfully.
|
|
62
|
+
def self.run_completed_successfully_notifications
|
|
63
|
+
@run_completed_successfully_notifications ||= []
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# The list of notifications to be run when the client run fails.
|
|
67
|
+
def self.run_failed_notifications
|
|
68
|
+
@run_failed_notifications ||= []
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Add a notification for the 'client run started' event. The notification
|
|
72
|
+
# is provided as a block. The current Chef::RunStatus object will be passed
|
|
73
|
+
# to the notification_block when the event is triggered.
|
|
74
|
+
def self.when_run_starts(¬ification_block)
|
|
75
|
+
run_start_notifications << notification_block
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Add a notification for the 'client run success' event. The notification
|
|
79
|
+
# is provided as a block. The current Chef::RunStatus object will be passed
|
|
80
|
+
# to the notification_block when the event is triggered.
|
|
81
|
+
def self.when_run_completes_successfully(¬ification_block)
|
|
82
|
+
run_completed_successfully_notifications << notification_block
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Add a notification for the 'client run failed' event. The notification
|
|
86
|
+
# is provided as a block. The current Chef::RunStatus is passed to the
|
|
87
|
+
# notification_block when the event is triggered.
|
|
88
|
+
def self.when_run_fails(¬ification_block)
|
|
89
|
+
run_failed_notifications << notification_block
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Callback to fire notifications that the Chef run is starting
|
|
93
|
+
def run_started
|
|
94
|
+
self.class.run_start_notifications.each do |notification|
|
|
95
|
+
notification.call(run_status)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Callback to fire notifications that the run completed successfully
|
|
100
|
+
def run_completed_successfully
|
|
101
|
+
self.class.run_completed_successfully_notifications.each do |notification|
|
|
102
|
+
notification.call(run_status)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Callback to fire notifications that the Chef run failed
|
|
107
|
+
def run_failed
|
|
108
|
+
self.class.run_failed_notifications.each do |notification|
|
|
109
|
+
notification.call(run_status)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
attr_accessor :node
|
|
114
|
+
attr_accessor :ohai
|
|
115
|
+
attr_accessor :rest
|
|
116
|
+
attr_accessor :runner
|
|
117
|
+
|
|
118
|
+
#--
|
|
119
|
+
# TODO: timh/cw: 5-19-2010: json_attribs should be moved to RunContext?
|
|
120
|
+
attr_reader :json_attribs
|
|
121
|
+
|
|
122
|
+
attr_reader :run_status
|
|
123
|
+
|
|
124
|
+
# Creates a new Chef::Client.
|
|
125
|
+
def initialize(json_attribs=nil)
|
|
126
|
+
@json_attribs = json_attribs
|
|
127
|
+
@node = nil
|
|
128
|
+
@run_status = nil
|
|
129
|
+
@runner = nil
|
|
130
|
+
@ohai = Ohai::System.new
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Do a full run for this Chef::Client. Calls:
|
|
134
|
+
#
|
|
135
|
+
# * run_ohai - Collect information about the system
|
|
136
|
+
# * build_node - Get the last known state, merge with local changes
|
|
137
|
+
# * register - If not in solo mode, make sure the server knows about this client
|
|
138
|
+
# * sync_cookbooks - If not in solo mode, populate the local cache with the node's cookbooks
|
|
139
|
+
# * converge - Bring this system up to date
|
|
140
|
+
#
|
|
141
|
+
# === Returns
|
|
142
|
+
# true:: Always returns true.
|
|
143
|
+
def run
|
|
144
|
+
run_context = nil
|
|
145
|
+
|
|
146
|
+
enforce_path_sanity
|
|
147
|
+
run_ohai
|
|
148
|
+
register unless Chef::Config[:solo]
|
|
149
|
+
build_node
|
|
150
|
+
|
|
151
|
+
begin
|
|
152
|
+
|
|
153
|
+
run_status.start_clock
|
|
154
|
+
Chef::Log.info("Starting Chef Run (Version #{Chef::VERSION})")
|
|
155
|
+
run_started
|
|
156
|
+
|
|
157
|
+
run_context = setup_run_context
|
|
158
|
+
converge(run_context)
|
|
159
|
+
save_updated_node
|
|
160
|
+
|
|
161
|
+
run_status.stop_clock
|
|
162
|
+
Chef::Log.info("Chef Run complete in #{run_status.elapsed_time} seconds")
|
|
163
|
+
run_completed_successfully
|
|
164
|
+
true
|
|
165
|
+
rescue Exception => e
|
|
166
|
+
run_status.stop_clock
|
|
167
|
+
run_status.exception = e
|
|
168
|
+
run_failed
|
|
169
|
+
Chef::Log.debug("Re-raising exception: #{e.class} - #{e.message}\n#{e.backtrace.join("\n ")}")
|
|
170
|
+
raise
|
|
171
|
+
ensure
|
|
172
|
+
run_status = nil
|
|
173
|
+
end
|
|
174
|
+
true
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
# Configures the Chef::Cookbook::FileVendor class to fetch file from the
|
|
179
|
+
# server or disk as appropriate, creates the run context for this run, and
|
|
180
|
+
# sanity checks the cookbook collection.
|
|
181
|
+
#===Returns
|
|
182
|
+
# Chef::RunContext:: the run context for this run.
|
|
183
|
+
def setup_run_context
|
|
184
|
+
if Chef::Config[:solo]
|
|
185
|
+
Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::FileSystemFileVendor.new(manifest, Chef::Config[:cookbook_path]) }
|
|
186
|
+
run_context = Chef::RunContext.new(node, Chef::CookbookCollection.new(Chef::CookbookLoader.new(Chef::Config[:cookbook_path])))
|
|
187
|
+
else
|
|
188
|
+
Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::RemoteFileVendor.new(manifest, rest) }
|
|
189
|
+
cookbook_hash = sync_cookbooks
|
|
190
|
+
run_context = Chef::RunContext.new(node, Chef::CookbookCollection.new(cookbook_hash))
|
|
191
|
+
end
|
|
192
|
+
run_status.run_context = run_context
|
|
193
|
+
run_context.load(@run_list_expansion)
|
|
194
|
+
assert_cookbook_path_not_empty(run_context)
|
|
195
|
+
run_context
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def save_updated_node
|
|
199
|
+
unless Chef::Config[:solo]
|
|
200
|
+
Chef::Log.debug("Saving the current state of node #{node_name}")
|
|
201
|
+
@node.save
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def run_ohai
|
|
206
|
+
ohai.all_plugins
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def node_name
|
|
210
|
+
name = Chef::Config[:node_name] || ohai[:fqdn] || ohai[:hostname]
|
|
211
|
+
Chef::Config[:node_name] = name
|
|
212
|
+
|
|
213
|
+
unless name
|
|
214
|
+
msg = "Unable to determine node name: configure node_name or configure the system's hostname and fqdn"
|
|
215
|
+
raise Chef::Exceptions::CannotDetermineNodeName, msg
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
name
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# Builds a new node object for this client. Starts with querying for the FQDN of the current
|
|
222
|
+
# host (unless it is supplied), then merges in the facts from Ohai.
|
|
223
|
+
#
|
|
224
|
+
# === Returns
|
|
225
|
+
# node<Chef::Node>:: Returns the created node object, also stored in @node
|
|
226
|
+
def build_node
|
|
227
|
+
Chef::Log.debug("Building node object for #{node_name}")
|
|
228
|
+
|
|
229
|
+
if Chef::Config[:solo]
|
|
230
|
+
@node = Chef::Node.build(node_name)
|
|
231
|
+
else
|
|
232
|
+
@node = Chef::Node.find_or_create(node_name)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# Allow user to override the environment of a node by specifying
|
|
236
|
+
# a config parameter.
|
|
237
|
+
if Chef::Config[:environment] && !Chef::Config[:environment].chop.empty?
|
|
238
|
+
@node.chef_environment(Chef::Config[:environment])
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
# consume_external_attrs may add items to the run_list. Save the
|
|
242
|
+
# expanded run_list, which we will pass to the server later to
|
|
243
|
+
# determine which versions of cookbooks to use.
|
|
244
|
+
@node.reset_defaults_and_overrides
|
|
245
|
+
@node.consume_external_attrs(ohai.data, @json_attribs)
|
|
246
|
+
if Chef::Config[:solo]
|
|
247
|
+
@run_list_expansion = @node.expand!('disk')
|
|
248
|
+
else
|
|
249
|
+
@run_list_expansion = @node.expand!('server')
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
# @run_list_expansion is a RunListExpansion.
|
|
253
|
+
#
|
|
254
|
+
# Convert @expanded_run_list, which is an
|
|
255
|
+
# Array of Hashes of the form
|
|
256
|
+
# {:name => NAME, :version_constraint => Chef::VersionConstraint },
|
|
257
|
+
# into @expanded_run_list_with_versions, an
|
|
258
|
+
# Array of Strings of the form
|
|
259
|
+
# "#{NAME}@#{VERSION}"
|
|
260
|
+
@expanded_run_list_with_versions = @run_list_expansion.recipes.with_version_constraints_strings
|
|
261
|
+
|
|
262
|
+
Chef::Log.info("Run List is [#{@node.run_list}]")
|
|
263
|
+
Chef::Log.info("Run List expands (with versions) to [#{@expanded_run_list_with_versions.join(', ')}]")
|
|
264
|
+
|
|
265
|
+
@run_status = Chef::RunStatus.new(@node)
|
|
266
|
+
|
|
267
|
+
@node
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
#
|
|
271
|
+
# === Returns
|
|
272
|
+
# rest<Chef::REST>:: returns Chef::REST connection object
|
|
273
|
+
def register(client_name=node_name, config=Chef::Config)
|
|
274
|
+
if File.exists?(config[:client_key])
|
|
275
|
+
Chef::Log.debug("Client key #{config[:client_key]} is present - skipping registration")
|
|
276
|
+
else
|
|
277
|
+
Chef::Log.info("Client key #{config[:client_key]} is not present - registering")
|
|
278
|
+
Chef::REST.new(config[:client_url], config[:validation_client_name], config[:validation_key]).register(client_name, config[:client_key])
|
|
279
|
+
end
|
|
280
|
+
# We now have the client key, and should use it from now on.
|
|
281
|
+
self.rest = Chef::REST.new(config[:chef_server_url], client_name, config[:client_key])
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
# Sync_cookbooks eagerly loads all files except files and
|
|
285
|
+
# templates. It returns the cookbook_hash -- the return result
|
|
286
|
+
# from /environments/#{node.chef_environment}/cookbook_versions,
|
|
287
|
+
# which we will use for our run_context.
|
|
288
|
+
#
|
|
289
|
+
# === Returns
|
|
290
|
+
# Hash:: The hash of cookbooks with download URLs as given by the server
|
|
291
|
+
def sync_cookbooks
|
|
292
|
+
Chef::Log.debug("Synchronizing cookbooks")
|
|
293
|
+
cookbook_hash = rest.post_rest("environments/#{@node.chef_environment}/cookbook_versions",
|
|
294
|
+
{:run_list => @expanded_run_list_with_versions})
|
|
295
|
+
Chef::CookbookVersion.sync_cookbooks(cookbook_hash)
|
|
296
|
+
|
|
297
|
+
# register the file cache path in the cookbook path so that CookbookLoader actually picks up the synced cookbooks
|
|
298
|
+
Chef::Config[:cookbook_path] = File.join(Chef::Config[:file_cache_path], "cookbooks")
|
|
299
|
+
|
|
300
|
+
cookbook_hash
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
# Converges the node.
|
|
304
|
+
#
|
|
305
|
+
# === Returns
|
|
306
|
+
# true:: Always returns true
|
|
307
|
+
def converge(run_context)
|
|
308
|
+
Chef::Log.debug("Converging node #{node_name}")
|
|
309
|
+
@runner = Chef::Runner.new(run_context)
|
|
310
|
+
runner.converge
|
|
311
|
+
true
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def enforce_path_sanity(env=ENV)
|
|
315
|
+
if Chef::Config[:enforce_path_sanity] && RUBY_PLATFORM !~ /mswin|mingw32|windows/
|
|
316
|
+
existing_paths = env["PATH"].split(':')
|
|
317
|
+
SANE_PATHS.each do |sane_path|
|
|
318
|
+
unless existing_paths.include?(sane_path)
|
|
319
|
+
env["PATH"] << ':' unless env["PATH"].empty?
|
|
320
|
+
env["PATH"] << sane_path
|
|
321
|
+
end
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
private
|
|
327
|
+
|
|
328
|
+
def directory_not_empty?(path)
|
|
329
|
+
File.exists?(path) && (Dir.entries(path).size > 2)
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
def is_last_element?(index, object)
|
|
333
|
+
object.kind_of?(Array) ? index == object.size - 1 : true
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def assert_cookbook_path_not_empty(run_context)
|
|
337
|
+
if Chef::Config[:solo]
|
|
338
|
+
# Check for cookbooks in the path given
|
|
339
|
+
# Chef::Config[:cookbook_path] can be a string or an array
|
|
340
|
+
# if it's an array, go through it and check each one, raise error at the last one if no files are found
|
|
341
|
+
Chef::Log.debug "loading from cookbook_path: #{Array(Chef::Config[:cookbook_path]).map { |path| File.expand_path(path) }.join(', ')}"
|
|
342
|
+
Array(Chef::Config[:cookbook_path]).each_with_index do |cookbook_path, index|
|
|
343
|
+
if directory_not_empty?(cookbook_path)
|
|
344
|
+
break
|
|
345
|
+
else
|
|
346
|
+
msg = "No cookbook found in #{Chef::Config[:cookbook_path].inspect}, make sure cookbook_path is set correctly."
|
|
347
|
+
Chef::Log.fatal(msg)
|
|
348
|
+
raise Chef::Exceptions::CookbookNotFound, msg if is_last_element?(index, Chef::Config[:cookbook_path])
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
else
|
|
352
|
+
Chef::Log.warn("Node #{node_name} has an empty run list.") if run_context.node.run_list.empty?
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
# HACK cannot load this first, but it must be loaded.
|
|
360
|
+
require 'chef/cookbook_loader'
|
|
361
|
+
require 'chef/cookbook_version'
|
|
362
|
+
|
data/lib/chef/config.rb
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Christopher Brown (<cb@opscode.com>)
|
|
4
|
+
# Author:: AJ Christensen (<aj@opscode.com>)
|
|
5
|
+
# Copyright:: Copyright (c) 2008 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
|
+
require 'chef/log'
|
|
21
|
+
require 'mixlib/config'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class Config
|
|
25
|
+
|
|
26
|
+
extend Mixlib::Config
|
|
27
|
+
|
|
28
|
+
# Manages the chef secret session key
|
|
29
|
+
# === Returns
|
|
30
|
+
# <newkey>:: A new or retrieved session key
|
|
31
|
+
#
|
|
32
|
+
def self.manage_secret_key
|
|
33
|
+
newkey = nil
|
|
34
|
+
if Chef::FileCache.has_key?("chef_server_cookie_id")
|
|
35
|
+
newkey = Chef::FileCache.load("chef_server_cookie_id")
|
|
36
|
+
else
|
|
37
|
+
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
|
|
38
|
+
newkey = ""
|
|
39
|
+
40.times { |i| newkey << chars[rand(chars.size-1)] }
|
|
40
|
+
Chef::FileCache.store("chef_server_cookie_id", newkey)
|
|
41
|
+
end
|
|
42
|
+
newkey
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.inspect
|
|
46
|
+
configuration.inspect
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Override the config dispatch to set the value of multiple server options simultaneously
|
|
50
|
+
#
|
|
51
|
+
# === Parameters
|
|
52
|
+
# url<String>:: String to be set for all of the chef-server-api URL's
|
|
53
|
+
#
|
|
54
|
+
config_attr_writer :chef_server_url do |url|
|
|
55
|
+
configure do |c|
|
|
56
|
+
[ :registration_url,
|
|
57
|
+
:template_url,
|
|
58
|
+
:remotefile_url,
|
|
59
|
+
:search_url,
|
|
60
|
+
:chef_server_url,
|
|
61
|
+
:role_url ].each do |u|
|
|
62
|
+
c[u] = url
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
url
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# When you are using ActiveSupport, they monkey-patch 'daemonize' into Kernel.
|
|
69
|
+
# So while this is basically identical to what method_missing would do, we pull
|
|
70
|
+
# it up here and get a real method written so that things get dispatched
|
|
71
|
+
# properly.
|
|
72
|
+
config_attr_writer :daemonize do |v|
|
|
73
|
+
configure do |c|
|
|
74
|
+
c[:daemonize] = v
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Override the config dispatch to set the value of log_location configuration option
|
|
79
|
+
#
|
|
80
|
+
# === Parameters
|
|
81
|
+
# location<IO||String>:: Logging location as either an IO stream or string representing log file path
|
|
82
|
+
#
|
|
83
|
+
config_attr_writer :log_location do |location|
|
|
84
|
+
if location.respond_to? :sync=
|
|
85
|
+
location.sync = true
|
|
86
|
+
location
|
|
87
|
+
elsif location.respond_to? :to_str
|
|
88
|
+
f = File.new(location.to_str, "a")
|
|
89
|
+
f.sync = true
|
|
90
|
+
f
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Override the config dispatch to set the value of authorized_openid_providers when openid_providers (deprecated) is used
|
|
95
|
+
#
|
|
96
|
+
# === Parameters
|
|
97
|
+
# providers<Array>:: An array of openid providers that are authorized to login to the chef server
|
|
98
|
+
#
|
|
99
|
+
config_attr_writer :openid_providers do |providers|
|
|
100
|
+
configure { |c| c[:authorized_openid_providers] = providers }
|
|
101
|
+
providers
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Turn on "path sanity" by default. See also: http://wiki.opscode.com/display/chef/User+Environment+PATH+Sanity
|
|
105
|
+
enforce_path_sanity(true)
|
|
106
|
+
|
|
107
|
+
# Used when OpenID authentication is enabled in the Web UI
|
|
108
|
+
authorized_openid_identifiers nil
|
|
109
|
+
authorized_openid_providers nil
|
|
110
|
+
openid_cstore_couchdb false
|
|
111
|
+
openid_cstore_path "/var/chef/openid/cstore"
|
|
112
|
+
|
|
113
|
+
# The number of times the client should retry when registering with the server
|
|
114
|
+
client_registration_retries 5
|
|
115
|
+
|
|
116
|
+
# Where the cookbooks are located. Meaning is somewhat context dependent between
|
|
117
|
+
# knife, chef-client, and chef-solo.
|
|
118
|
+
cookbook_path [ "/var/chef/cookbooks", "/var/chef/site-cookbooks" ]
|
|
119
|
+
|
|
120
|
+
# Where files are stored temporarily during uploads
|
|
121
|
+
sandbox_path "/var/chef/sandboxes"
|
|
122
|
+
|
|
123
|
+
# Where cookbook files are stored on the server (by content checksum)
|
|
124
|
+
checksum_path "/var/chef/checksums"
|
|
125
|
+
|
|
126
|
+
# CouchDB database name to use
|
|
127
|
+
couchdb_database "chef"
|
|
128
|
+
|
|
129
|
+
couchdb_url "http://localhost:5984"
|
|
130
|
+
|
|
131
|
+
# Where chef's cache files should be stored
|
|
132
|
+
file_cache_path "/var/chef/cache"
|
|
133
|
+
|
|
134
|
+
# Where backups of chef-managed files should go
|
|
135
|
+
file_backup_path "/var/chef/backup"
|
|
136
|
+
|
|
137
|
+
## Daemonization Settings ##
|
|
138
|
+
# What user should Chef run as?
|
|
139
|
+
user nil
|
|
140
|
+
# What group should the chef-server, -solr, -solr-indexer run as
|
|
141
|
+
group nil
|
|
142
|
+
umask 0022
|
|
143
|
+
|
|
144
|
+
http_retry_count 5
|
|
145
|
+
http_retry_delay 5
|
|
146
|
+
interval nil
|
|
147
|
+
json_attribs nil
|
|
148
|
+
log_level :info
|
|
149
|
+
log_location STDOUT
|
|
150
|
+
verbose_logging nil
|
|
151
|
+
node_name nil
|
|
152
|
+
node_path "/var/chef/node"
|
|
153
|
+
|
|
154
|
+
pid_file nil
|
|
155
|
+
|
|
156
|
+
chef_server_url "http://localhost:4000"
|
|
157
|
+
registration_url "http://localhost:4000"
|
|
158
|
+
template_url "http://localhost:4000"
|
|
159
|
+
role_url "http://localhost:4000"
|
|
160
|
+
remotefile_url "http://localhost:4000"
|
|
161
|
+
search_url "http://localhost:4000"
|
|
162
|
+
|
|
163
|
+
client_url "http://localhost:4042"
|
|
164
|
+
|
|
165
|
+
rest_timeout 300
|
|
166
|
+
run_command_stderr_timeout 120
|
|
167
|
+
run_command_stdout_timeout 120
|
|
168
|
+
solo false
|
|
169
|
+
splay nil
|
|
170
|
+
|
|
171
|
+
# Set these to enable SSL authentication / mutual-authentication
|
|
172
|
+
# with the server
|
|
173
|
+
ssl_client_cert nil
|
|
174
|
+
ssl_client_key nil
|
|
175
|
+
ssl_verify_mode :verify_none
|
|
176
|
+
ssl_ca_path nil
|
|
177
|
+
ssl_ca_file nil
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
# Where should chef-solo look for role files?
|
|
181
|
+
role_path "/var/chef/roles"
|
|
182
|
+
|
|
183
|
+
# Where should chef-solo download recipes from?
|
|
184
|
+
recipe_url nil
|
|
185
|
+
|
|
186
|
+
solr_url "http://localhost:8983"
|
|
187
|
+
solr_jetty_path "/var/chef/solr-jetty"
|
|
188
|
+
solr_data_path "/var/chef/solr/data"
|
|
189
|
+
solr_home_path "/var/chef/solr"
|
|
190
|
+
solr_heap_size "256M"
|
|
191
|
+
solr_java_opts nil
|
|
192
|
+
|
|
193
|
+
# Parameters for connecting to RabbitMQ
|
|
194
|
+
amqp_host '0.0.0.0'
|
|
195
|
+
amqp_port '5672'
|
|
196
|
+
amqp_user 'chef'
|
|
197
|
+
amqp_pass 'testing'
|
|
198
|
+
amqp_vhost '/chef'
|
|
199
|
+
# Setting this to a UUID string also makes the queue durable
|
|
200
|
+
# (persist across rabbitmq restarts)
|
|
201
|
+
amqp_consumer_id "default"
|
|
202
|
+
|
|
203
|
+
client_key "/etc/chef/client.pem"
|
|
204
|
+
validation_key "/etc/chef/validation.pem"
|
|
205
|
+
validation_client_name "chef-validator"
|
|
206
|
+
web_ui_client_name "chef-webui"
|
|
207
|
+
web_ui_key "/etc/chef/webui.pem"
|
|
208
|
+
web_ui_admin_user_name "admin"
|
|
209
|
+
web_ui_admin_default_password "p@ssw0rd1"
|
|
210
|
+
|
|
211
|
+
# Server Signing CA
|
|
212
|
+
#
|
|
213
|
+
# In truth, these don't even have to change
|
|
214
|
+
signing_ca_cert "/var/chef/ca/cert.pem"
|
|
215
|
+
signing_ca_key "/var/chef/ca/key.pem"
|
|
216
|
+
signing_ca_user nil
|
|
217
|
+
signing_ca_group nil
|
|
218
|
+
signing_ca_country "US"
|
|
219
|
+
signing_ca_state "Washington"
|
|
220
|
+
signing_ca_location "Seattle"
|
|
221
|
+
signing_ca_org "Chef User"
|
|
222
|
+
signing_ca_domain "opensource.opscode.com"
|
|
223
|
+
signing_ca_email "opensource-cert@opscode.com"
|
|
224
|
+
|
|
225
|
+
# Report Handlers
|
|
226
|
+
report_handlers []
|
|
227
|
+
|
|
228
|
+
# Exception Handlers
|
|
229
|
+
exception_handlers []
|
|
230
|
+
|
|
231
|
+
# Checksum Cache
|
|
232
|
+
# Uses Moneta on the back-end
|
|
233
|
+
cache_type "BasicFile"
|
|
234
|
+
cache_options({ :path => "/var/chef/cache/checksums", :skip_expires => true })
|
|
235
|
+
|
|
236
|
+
# Arbitrary knife configuration data
|
|
237
|
+
knife Hash.new
|
|
238
|
+
|
|
239
|
+
# Those lists of regular expressions define what chef considers a
|
|
240
|
+
# valid user and group name
|
|
241
|
+
user_valid_regex [ /^([-a-zA-Z0-9_.]+)$/, /^\d+$/ ]
|
|
242
|
+
group_valid_regex [ /^([-a-zA-Z0-9_.]+)$/, /^\d+$/ ]
|
|
243
|
+
end
|
|
244
|
+
end
|