chef 11.4.4 → 11.6.0.hotfix.1
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/README.md +1 -1
- data/Rakefile +18 -1
- data/bin/chef-service-manager +37 -0
- data/distro/common/html/chef-client.8.html +4 -4
- data/distro/common/html/chef-expander.8.html +4 -4
- data/distro/common/html/chef-expanderctl.8.html +4 -4
- data/distro/common/html/chef-server-webui.8.html +4 -4
- data/distro/common/html/chef-server.8.html +4 -4
- data/distro/common/html/chef-shell.1.html +4 -4
- data/distro/common/html/chef-solo.8.html +12 -18
- data/distro/common/html/chef-solr.8.html +4 -4
- data/distro/common/html/knife-bootstrap.1.html +4 -4
- data/distro/common/html/knife-client.1.html +4 -4
- data/distro/common/html/knife-configure.1.html +4 -4
- data/distro/common/html/knife-cookbook-site.1.html +4 -4
- data/distro/common/html/knife-cookbook.1.html +7 -10
- data/distro/common/html/knife-data-bag.1.html +7 -10
- data/distro/common/html/knife-environment.1.html +6 -8
- data/distro/common/html/knife-exec.1.html +4 -4
- data/distro/common/html/knife-index.1.html +4 -4
- data/distro/common/html/knife-node.1.html +4 -4
- data/distro/common/html/knife-role.1.html +4 -4
- data/distro/common/html/knife-search.1.html +4 -4
- data/distro/common/html/knife-ssh.1.html +4 -4
- data/distro/common/html/knife-status.1.html +4 -4
- data/distro/common/html/knife-tag.1.html +4 -4
- data/distro/common/html/knife.1.html +4 -4
- data/distro/common/man/man1/chef-shell.1 +1 -1
- data/distro/common/man/man1/knife-bootstrap.1 +1 -1
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
- data/distro/common/man/man1/knife-cookbook.1 +2 -15
- data/distro/common/man/man1/knife-data-bag.1 +2 -15
- data/distro/common/man/man1/knife-environment.1 +2 -12
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +1 -1
- data/distro/common/man/man1/knife-search.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man8/chef-client.8 +1 -1
- data/distro/common/man/man8/chef-expander.8 +1 -1
- data/distro/common/man/man8/chef-expanderctl.8 +1 -1
- data/distro/common/man/man8/chef-server-webui.8 +1 -1
- data/distro/common/man/man8/chef-server.8 +1 -1
- data/distro/common/man/man8/chef-solo.8 +4 -36
- data/distro/common/man/man8/chef-solr.8 +1 -1
- data/distro/debian/etc/init.d/chef-client +4 -2
- data/distro/windows/service_manager.rb +2 -146
- data/lib/chef.rb +1 -1
- data/lib/chef/application.rb +5 -12
- data/lib/chef/application/apply.rb +2 -0
- data/lib/chef/application/client.rb +12 -12
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +4 -5
- data/lib/chef/application/windows_service.rb +113 -56
- data/lib/chef/application/windows_service_manager.rb +179 -0
- data/lib/chef/chef_fs.rb +2 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
- data/lib/chef/chef_fs/command_line.rb +145 -93
- data/lib/chef/chef_fs/config.rb +205 -0
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
- data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
- data/lib/chef/chef_fs/file_system.rb +195 -127
- data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
- data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
- data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
- data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +98 -39
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +14 -63
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +93 -3
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +35 -9
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +67 -32
- data/lib/chef/chef_fs/file_system/cookbook_file.rb +13 -6
- data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +102 -21
- data/lib/chef/chef_fs/file_system/data_bag_dir.rb +12 -21
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +14 -8
- data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
- data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/file_system_error.rb +3 -1
- data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
- data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
- data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
- data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +17 -9
- data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
- data/lib/chef/chef_fs/file_system/not_found_error.rb +2 -2
- data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
- data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +42 -13
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +81 -27
- data/lib/chef/chef_fs/knife.rb +68 -29
- data/lib/chef/chef_fs/parallelizer.rb +129 -0
- data/lib/chef/chef_fs/path_utils.rb +29 -3
- data/lib/chef/chef_fs/raw_request.rb +79 -0
- data/lib/chef/client.rb +46 -20
- data/lib/chef/config.rb +59 -61
- data/lib/chef/cookbook/chefignore.rb +2 -1
- data/lib/chef/cookbook/synchronizer.rb +8 -6
- data/lib/chef/cookbook/syntax_check.rb +17 -2
- data/lib/chef/cookbook_uploader.rb +10 -1
- data/lib/chef/cookbook_version.rb +0 -109
- data/lib/chef/data_bag.rb +15 -6
- data/lib/chef/deprecation/mixin/template.rb +49 -0
- data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
- data/lib/chef/deprecation/provider/file.rb +197 -0
- data/lib/chef/deprecation/provider/remote_file.rb +86 -0
- data/lib/chef/deprecation/provider/template.rb +63 -0
- data/lib/chef/deprecation/warnings.rb +38 -0
- data/lib/chef/encrypted_data_bag_item.rb +153 -61
- data/lib/chef/environment.rb +34 -3
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +27 -2
- data/lib/chef/file_access_control/unix.rb +64 -7
- data/lib/chef/file_access_control/windows.rb +22 -11
- data/lib/chef/file_content_management/content_base.rb +56 -0
- data/lib/chef/file_content_management/deploy.rb +38 -0
- data/lib/chef/file_content_management/deploy/cp.rb +48 -0
- data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
- data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
- data/lib/chef/file_content_management/tempfile.rb +61 -0
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_descriptor.rb +5 -4
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
- data/lib/chef/json_compat.rb +3 -0
- data/lib/chef/knife.rb +12 -3
- data/lib/chef/knife/bootstrap.rb +46 -2
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/centos5-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/chef-full.erb +4 -4
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +3 -3
- data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +3 -3
- data/lib/chef/knife/client_show.rb +2 -5
- data/lib/chef/knife/configure.rb +3 -3
- data/lib/chef/knife/cookbook_create.rb +6 -5
- data/lib/chef/knife/cookbook_download.rb +13 -5
- data/lib/chef/knife/cookbook_site_share.rb +1 -0
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +4 -9
- data/lib/chef/knife/core/bootstrap_context.rb +10 -4
- data/lib/chef/knife/core/generic_presenter.rb +16 -0
- data/lib/chef/knife/core/node_editor.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +43 -12
- data/lib/chef/knife/core/ui.rb +19 -4
- data/lib/chef/knife/delete.rb +76 -9
- data/lib/chef/knife/deps.rb +139 -0
- data/lib/chef/knife/diff.rb +22 -5
- data/lib/chef/knife/download.rb +16 -3
- data/lib/chef/knife/edit.rb +76 -0
- data/lib/chef/knife/environment_show.rb +2 -7
- data/lib/chef/knife/list.rb +91 -47
- data/lib/chef/knife/node_run_list_set.rb +66 -0
- data/lib/chef/knife/node_show.rb +1 -7
- data/lib/chef/knife/raw.rb +20 -64
- data/lib/chef/knife/role_show.rb +2 -4
- data/lib/chef/knife/search.rb +5 -6
- data/lib/chef/knife/show.rb +34 -11
- data/lib/chef/knife/ssh.rb +8 -0
- data/lib/chef/knife/upload.rb +23 -4
- data/lib/chef/knife/user_show.rb +2 -5
- data/lib/chef/knife/xargs.rb +265 -0
- data/lib/chef/log.rb +2 -2
- data/lib/chef/mixin/file_class.rb +0 -9
- data/lib/chef/mixin/language_include_recipe.rb +1 -1
- data/lib/chef/mixin/params_validate.rb +19 -9
- data/lib/chef/mixin/template.rb +126 -36
- data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
- data/lib/chef/monkey_patches/file.rb +26 -0
- data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
- data/lib/chef/monkey_patches/securerandom.rb +44 -0
- data/lib/chef/monologger.rb +93 -0
- data/lib/chef/node.rb +4 -0
- data/lib/chef/platform.rb +4 -490
- data/lib/chef/platform/provider_mapping.rb +529 -0
- data/lib/chef/{monkey_patches/dir.rb → platform/query_helpers.rb} +25 -19
- data/lib/chef/provider.rb +12 -9
- data/lib/chef/provider/batch.rb +35 -0
- data/lib/chef/provider/cookbook_file.rb +9 -78
- data/lib/chef/provider/cookbook_file/content.rb +49 -0
- data/lib/chef/provider/deploy.rb +24 -20
- data/lib/chef/provider/deploy/revision.rb +27 -0
- data/lib/chef/provider/directory.rb +19 -22
- data/lib/chef/provider/execute.rb +22 -5
- data/lib/chef/provider/file.rb +299 -217
- data/lib/chef/provider/file/content.rb +39 -0
- data/lib/chef/provider/git.rb +76 -43
- data/lib/chef/provider/group/usermod.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +25 -35
- data/lib/chef/provider/ifconfig/debian.rb +71 -0
- data/lib/chef/provider/ifconfig/redhat.rb +47 -0
- data/lib/chef/provider/link.rb +10 -3
- data/lib/chef/provider/mount.rb +1 -1
- data/lib/chef/provider/mount/mount.rb +8 -3
- data/lib/chef/provider/mount/windows.rb +4 -1
- data/lib/chef/provider/package/portage.rb +9 -4
- data/lib/chef/provider/package/rubygems.rb +45 -10
- data/lib/chef/provider/package/smartos.rb +47 -36
- data/lib/chef/provider/package/yum.rb +19 -12
- data/lib/chef/provider/package/zypper.rb +45 -55
- data/lib/chef/provider/powershell_script.rb +77 -0
- data/lib/chef/provider/remote_directory.rb +5 -6
- data/lib/chef/provider/remote_file.rb +12 -108
- data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
- data/lib/chef/provider/remote_file/content.rb +75 -0
- data/lib/chef/provider/remote_file/fetcher.rb +43 -0
- data/lib/chef/provider/remote_file/ftp.rb +183 -0
- data/lib/chef/provider/remote_file/http.rb +124 -0
- data/lib/chef/provider/remote_file/local_file.rb +47 -0
- data/lib/chef/provider/route.rb +6 -2
- data/lib/chef/provider/script.rb +14 -2
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/solaris.rb +6 -5
- data/lib/chef/provider/template.rb +16 -78
- data/lib/chef/provider/template/content.rb +61 -0
- data/lib/chef/provider/user/solaris.rb +90 -0
- data/lib/chef/provider/user/useradd.rb +76 -63
- data/lib/chef/provider/windows_script.rb +73 -0
- data/lib/chef/providers.rb +16 -0
- data/lib/chef/resource.rb +23 -2
- data/lib/chef/resource/batch.rb +31 -0
- data/lib/chef/resource/conditional.rb +4 -0
- data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
- data/lib/chef/resource/file.rb +31 -3
- data/lib/chef/resource/link.rb +17 -0
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/mount.rb +29 -2
- data/lib/chef/resource/powershell_script.rb +31 -0
- data/lib/chef/resource/remote_file.rb +47 -1
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/template.rb +145 -0
- data/lib/chef/resource/windows_script.rb +62 -0
- data/lib/chef/resource_collection.rb +45 -11
- data/lib/chef/resource_reporter.rb +81 -52
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/rest.rb +13 -4
- data/lib/chef/rest/rest_request.rb +5 -1
- data/lib/chef/run_context/cookbook_compiler.rb +3 -3
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/run_lock.rb +7 -1
- data/lib/chef/runner.rb +0 -1
- data/lib/chef/scan_access_control.rb +6 -1
- data/lib/chef/search/query.rb +2 -2
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/util/backup.rb +84 -0
- data/lib/chef/util/diff.rb +145 -0
- data/lib/chef/util/file_edit.rb +1 -1
- data/lib/chef/util/selinux.rb +100 -0
- data/lib/chef/util/windows/net_user.rb +14 -1
- data/lib/chef/util/windows/volume.rb +2 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version/platform.rb +42 -0
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/version_constraint.rb +6 -5
- data/lib/chef/version_constraint/platform.rb +26 -0
- data/lib/chef/win32/api/file.rb +8 -2
- data/lib/chef/win32/version.rb +25 -8
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
- data/spec/data/apt/var/www/apt/conf/distributions +7 -0
- data/spec/data/apt/var/www/apt/conf/incoming +4 -0
- data/spec/data/apt/var/www/apt/conf/pulls +3 -0
- data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
- data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
- data/spec/data/apt/var/www/apt/db/packages.db +0 -0
- data/spec/data/apt/var/www/apt/db/references.db +0 -0
- data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
- data/spec/data/apt/var/www/apt/db/version +4 -0
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
- data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
- data/spec/data/bootstrap/secret.erb +9 -0
- data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -0
- data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -0
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -0
- data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
- data/spec/data/git_bundles/example-repo.gitbundle +0 -0
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_yourself.rb +8 -0
- data/spec/data/null_config.rb +1 -0
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/remote_file/nyan_cat.png.gz +0 -0
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
- data/spec/functional/knife/exec_spec.rb +2 -2
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
- data/spec/functional/resource/batch_spec.rb +64 -0
- data/spec/functional/resource/cookbook_file_spec.rb +2 -3
- data/spec/functional/resource/deploy_revision_spec.rb +180 -0
- data/spec/functional/resource/directory_spec.rb +2 -2
- data/spec/functional/resource/file_spec.rb +17 -1
- data/spec/functional/resource/git_spec.rb +259 -0
- data/spec/functional/resource/link_spec.rb +422 -388
- data/spec/functional/resource/package_spec.rb +297 -0
- data/spec/functional/resource/powershell_spec.rb +188 -0
- data/spec/functional/resource/registry_spec.rb +8 -4
- data/spec/functional/resource/remote_directory_spec.rb +2 -2
- data/spec/functional/resource/remote_file_spec.rb +97 -29
- data/spec/functional/resource/template_spec.rb +173 -17
- data/spec/functional/resource/user_spec.rb +547 -0
- data/spec/functional/run_lock_spec.rb +5 -0
- data/spec/functional/shell_spec.rb +2 -1
- data/spec/functional/win32/service_manager_spec.rb +269 -0
- data/spec/functional/win32/versions_spec.rb +78 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
- data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
- data/spec/integration/knife/chefignore_spec.rb +271 -0
- data/spec/integration/knife/delete_spec.rb +944 -0
- data/spec/integration/knife/deps_spec.rb +648 -0
- data/spec/integration/knife/diff_spec.rb +536 -0
- data/spec/integration/knife/download_spec.rb +962 -0
- data/spec/integration/knife/list_spec.rb +633 -0
- data/spec/integration/knife/raw_spec.rb +166 -0
- data/spec/integration/knife/redirection_spec.rb +57 -0
- data/spec/integration/knife/show_spec.rb +158 -0
- data/spec/integration/knife/upload_spec.rb +1060 -0
- data/spec/integration/solo/solo_spec.rb +41 -0
- data/spec/spec_helper.rb +55 -1
- data/spec/support/chef_helpers.rb +32 -0
- data/spec/support/platform_helpers.rb +40 -0
- data/spec/support/platforms/win32/spec_service.rb +59 -0
- data/spec/support/shared/functional/directory_resource.rb +43 -16
- data/spec/support/shared/functional/file_resource.rb +661 -20
- data/spec/support/shared/functional/securable_resource.rb +109 -8
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +39 -31
- data/spec/support/shared/integration/integration_helper.rb +166 -0
- data/spec/support/shared/integration/knife_support.rb +171 -0
- data/spec/support/shared/unit/execute_resource.rb +125 -0
- data/spec/support/shared/unit/file_system_support.rb +8 -48
- data/spec/support/shared/unit/provider/file.rb +609 -0
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
- data/spec/support/shared/unit/script_resource.rb +52 -0
- data/spec/support/shared/unit/windows_script_resource.rb +48 -0
- data/spec/tiny_server.rb +13 -11
- data/spec/unit/application/client_spec.rb +39 -1
- data/spec/unit/application/knife_spec.rb +12 -0
- data/spec/unit/application/solo_spec.rb +1 -1
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/chef_fs/diff_spec.rb +30 -31
- data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
- data/spec/unit/chef_fs/file_system_spec.rb +2 -3
- data/spec/unit/client_spec.rb +20 -1
- data/spec/unit/config_spec.rb +70 -52
- data/spec/unit/cookbook/synchronizer_spec.rb +49 -1
- data/spec/unit/cookbook/syntax_check_spec.rb +28 -3
- data/spec/unit/cookbook_loader_spec.rb +3 -2
- data/spec/unit/daemon_spec.rb +7 -7
- data/spec/unit/data_bag_spec.rb +7 -0
- data/spec/unit/deprecation_spec.rb +86 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +183 -88
- data/spec/unit/environment_spec.rb +98 -0
- data/spec/unit/exceptions_spec.rb +6 -1
- data/spec/unit/file_access_control_spec.rb +21 -1
- data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -2
- data/spec/unit/knife/bootstrap_spec.rb +128 -29
- data/spec/unit/knife/configure_spec.rb +42 -26
- data/spec/unit/knife/cookbook_download_spec.rb +24 -3
- data/spec/unit/knife/cookbook_upload_spec.rb +8 -4
- data/spec/unit/knife/core/bootstrap_context_spec.rb +78 -61
- data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
- data/spec/unit/knife/core/ui_spec.rb +41 -0
- data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
- data/spec/unit/knife_spec.rb +21 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -0
- data/spec/unit/mixin/params_validate_spec.rb +35 -0
- data/spec/unit/mixin/template_spec.rb +69 -57
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
- data/spec/unit/node_spec.rb +7 -0
- data/spec/unit/platform_spec.rb +15 -1
- data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
- data/spec/unit/provider/cookbook_file_spec.rb +26 -183
- data/spec/unit/provider/cron/solaris_spec.rb +1 -1
- data/spec/unit/provider/deploy/revision_spec.rb +19 -11
- data/spec/unit/provider/deploy_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +23 -23
- data/spec/unit/provider/execute_spec.rb +27 -1
- data/spec/unit/provider/file/content_spec.rb +101 -0
- data/spec/unit/provider/file_spec.rb +25 -484
- data/spec/unit/provider/git_spec.rb +224 -28
- data/spec/unit/provider/group/usermod_spec.rb +3 -1
- data/spec/unit/provider/ifconfig/debian_spec.rb +89 -0
- data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
- data/spec/unit/provider/ifconfig_spec.rb +0 -33
- data/spec/unit/provider/mount/mount_spec.rb +33 -2
- data/spec/unit/provider/mount/windows_spec.rb +4 -1
- data/spec/unit/provider/mount_spec.rb +16 -6
- data/spec/unit/provider/package/portage_spec.rb +44 -0
- data/spec/unit/provider/package/rubygems_spec.rb +44 -1
- data/spec/unit/provider/package/smartos_spec.rb +3 -2
- data/spec/unit/provider/package/yum_spec.rb +36 -39
- data/spec/unit/provider/package/zypper_spec.rb +84 -22
- data/spec/unit/provider/package_spec.rb +0 -4
- data/spec/unit/provider/powershell_spec.rb +38 -0
- data/spec/unit/provider/remote_directory_spec.rb +0 -4
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
- data/spec/unit/provider/remote_file/content_spec.rb +230 -0
- data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
- data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
- data/spec/unit/provider/remote_file/http_spec.rb +319 -0
- data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
- data/spec/unit/provider/remote_file_spec.rb +33 -295
- data/spec/unit/provider/route_spec.rb +25 -9
- data/spec/unit/provider/service/macosx_spec.rb +176 -152
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +21 -18
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +2 -2
- data/spec/unit/provider/service_spec.rb +3 -3
- data/spec/unit/provider/template/content_spec.rb +78 -0
- data/spec/unit/provider/template_spec.rb +52 -184
- data/spec/unit/provider/user/solaris_spec.rb +80 -0
- data/spec/unit/provider/user/useradd_spec.rb +12 -358
- data/spec/unit/resource/batch_spec.rb +48 -0
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
- data/spec/unit/resource/execute_spec.rb +3 -101
- data/spec/unit/resource/file_spec.rb +0 -5
- data/spec/unit/resource/group_spec.rb +9 -0
- data/spec/unit/resource/ifconfig_spec.rb +60 -1
- data/spec/unit/resource/link_spec.rb +1 -0
- data/spec/unit/resource/mount_spec.rb +37 -0
- data/spec/unit/resource/powershell_spec.rb +48 -0
- data/spec/unit/resource/remote_file_spec.rb +44 -4
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/script_spec.rb +13 -36
- data/spec/unit/resource/template_spec.rb +111 -8
- data/spec/unit/resource/user_spec.rb +7 -0
- data/spec/unit/resource_collection_spec.rb +61 -32
- data/spec/unit/resource_reporter_spec.rb +115 -102
- data/spec/unit/resource_spec.rb +170 -1
- data/spec/unit/rest/auth_credentials_spec.rb +2 -2
- data/spec/unit/rest_spec.rb +6 -2
- data/spec/unit/run_context/cookbook_compiler_spec.rb +9 -0
- data/spec/unit/runner_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +4 -2
- data/spec/unit/shell/shell_session_spec.rb +15 -2
- data/spec/unit/util/backup_spec.rb +149 -0
- data/spec/unit/util/diff_spec.rb +596 -0
- data/spec/unit/util/selinux_spec.rb +172 -0
- data/spec/unit/version/platform_spec.rb +61 -0
- data/spec/unit/version_constraint/platform_spec.rb +46 -0
- data/spec/unit/version_constraint_spec.rb +5 -0
- metadata +233 -10
- data/lib/chef/chef_fs/file_system/data_bag_item.rb +0 -59
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +0 -237
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +0 -568
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +0 -220
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require 'chef/chef_fs'
|
|
20
|
+
require 'pathname'
|
|
20
21
|
|
|
21
22
|
class Chef
|
|
22
23
|
module ChefFS
|
|
@@ -24,13 +25,13 @@ class Chef
|
|
|
24
25
|
|
|
25
26
|
# If you are in 'source', this is what you would have to type to reach 'dest'
|
|
26
27
|
# relative_to('/a/b/c/d/e', '/a/b/x/y') == '../../c/d/e'
|
|
27
|
-
# relative_to('/a/b', '/a/b') == ''
|
|
28
|
+
# relative_to('/a/b', '/a/b') == '.'
|
|
28
29
|
def self.relative_to(dest, source)
|
|
29
30
|
# Skip past the common parts
|
|
30
31
|
source_parts = Chef::ChefFS::PathUtils.split(source)
|
|
31
32
|
dest_parts = Chef::ChefFS::PathUtils.split(dest)
|
|
32
33
|
i = 0
|
|
33
|
-
until i >= source_parts.length || i >= dest_parts.length || source_parts[i] !=
|
|
34
|
+
until i >= source_parts.length || i >= dest_parts.length || source_parts[i] != dest_parts[i]
|
|
34
35
|
i+=1
|
|
35
36
|
end
|
|
36
37
|
# dot-dot up from 'source' to the common ancestor, then
|
|
@@ -56,9 +57,34 @@ class Chef
|
|
|
56
57
|
end
|
|
57
58
|
|
|
58
59
|
def self.regexp_path_separator
|
|
59
|
-
Chef::ChefFS::windows? ? '[
|
|
60
|
+
Chef::ChefFS::windows? ? '[\/\\\\]' : '/'
|
|
60
61
|
end
|
|
61
62
|
|
|
63
|
+
# Given a path which may only be partly real (i.e. /x/y/z when only /x exists,
|
|
64
|
+
# or /x/y/*/blah when /x/y/z/blah exists), call File.realpath on the biggest
|
|
65
|
+
# part that actually exists.
|
|
66
|
+
#
|
|
67
|
+
# If /x is a symlink to /blarghle, and has no subdirectories, then:
|
|
68
|
+
# PathUtils.realest_path('/x/y/z') == '/blarghle/y/z'
|
|
69
|
+
# PathUtils.realest_path('/x/*/z') == '/blarghle/*/z'
|
|
70
|
+
# PathUtils.realest_path('/*/y/z') == '/*/y/z'
|
|
71
|
+
def self.realest_path(path)
|
|
72
|
+
path = Pathname.new(path)
|
|
73
|
+
begin
|
|
74
|
+
path.realpath.to_s
|
|
75
|
+
rescue Errno::ENOENT
|
|
76
|
+
dirname = path.dirname
|
|
77
|
+
if dirname
|
|
78
|
+
PathUtils.join(realest_path(dirname), path.basename.to_s)
|
|
79
|
+
else
|
|
80
|
+
path.to_s
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def self.is_absolute?(path)
|
|
86
|
+
path =~ /^#{regexp_path_separator}/
|
|
87
|
+
end
|
|
62
88
|
end
|
|
63
89
|
end
|
|
64
90
|
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
class Chef
|
|
2
|
+
module ChefFS
|
|
3
|
+
module RawRequest
|
|
4
|
+
def self.raw_json(chef_rest, api_path)
|
|
5
|
+
JSON.parse(raw_request(chef_rest, api_path), :create_additions => false)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.raw_request(chef_rest, api_path)
|
|
9
|
+
api_request(chef_rest, :GET, chef_rest.create_url(api_path), {}, false)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.api_request(chef_rest, method, url, headers={}, data=false)
|
|
13
|
+
json_body = data
|
|
14
|
+
# json_body = data ? Chef::JSONCompat.to_json(data) : nil
|
|
15
|
+
# Force encoding to binary to fix SSL related EOFErrors
|
|
16
|
+
# cf. http://tickets.opscode.com/browse/CHEF-2363
|
|
17
|
+
# http://redmine.ruby-lang.org/issues/5233
|
|
18
|
+
# json_body.force_encoding(Encoding::BINARY) if json_body.respond_to?(:force_encoding)
|
|
19
|
+
headers = build_headers(chef_rest, method, url, headers, json_body)
|
|
20
|
+
|
|
21
|
+
chef_rest.retriable_rest_request(method, url, json_body, headers) do |rest_request|
|
|
22
|
+
response = rest_request.call {|r| r.read_body}
|
|
23
|
+
|
|
24
|
+
response_body = chef_rest.decompress_body(response)
|
|
25
|
+
|
|
26
|
+
if response.kind_of?(Net::HTTPSuccess)
|
|
27
|
+
response_body
|
|
28
|
+
elsif redirect_location = redirected_to(response)
|
|
29
|
+
if [:GET, :HEAD].include?(method)
|
|
30
|
+
chef_rest.follow_redirect do
|
|
31
|
+
api_request(chef_rest, method, chef_rest.create_url(redirect_location))
|
|
32
|
+
end
|
|
33
|
+
else
|
|
34
|
+
raise Exceptions::InvalidRedirect, "#{method} request was redirected from #{url} to #{redirect_location}. Only GET and HEAD support redirects."
|
|
35
|
+
end
|
|
36
|
+
else
|
|
37
|
+
# have to decompress the body before making an exception for it. But the body could be nil.
|
|
38
|
+
response.body.replace(chef_rest.decompress_body(response)) if response.body.respond_to?(:replace)
|
|
39
|
+
|
|
40
|
+
if response['content-type'] =~ /json/
|
|
41
|
+
exception = response_body
|
|
42
|
+
msg = "HTTP Request Returned #{response.code} #{response.message}: "
|
|
43
|
+
msg << (exception["error"].respond_to?(:join) ? exception["error"].join(", ") : exception["error"].to_s)
|
|
44
|
+
Chef::Log.info(msg)
|
|
45
|
+
end
|
|
46
|
+
response.error!
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
# Copied so that it does not automatically inflate an object
|
|
54
|
+
# This is also used by knife raw_essentials
|
|
55
|
+
|
|
56
|
+
ACCEPT_ENCODING = "Accept-Encoding".freeze
|
|
57
|
+
ENCODING_GZIP_DEFLATE = "gzip;q=1.0,deflate;q=0.6,identity;q=0.3".freeze
|
|
58
|
+
|
|
59
|
+
def self.redirected_to(response)
|
|
60
|
+
return nil unless response.kind_of?(Net::HTTPRedirection)
|
|
61
|
+
# Net::HTTPNotModified is undesired subclass of Net::HTTPRedirection so test for this
|
|
62
|
+
return nil if response.kind_of?(Net::HTTPNotModified)
|
|
63
|
+
response['location']
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def self.build_headers(chef_rest, method, url, headers={}, json_body=false, raw=false)
|
|
67
|
+
# headers = @default_headers.merge(headers)
|
|
68
|
+
#headers['Accept'] = "application/json" unless raw
|
|
69
|
+
headers['Accept'] = "application/json" unless raw
|
|
70
|
+
headers["Content-Type"] = 'application/json' if json_body
|
|
71
|
+
headers['Content-Length'] = json_body.bytesize.to_s if json_body
|
|
72
|
+
headers[Chef::REST::RESTRequest::ACCEPT_ENCODING] = Chef::REST::RESTRequest::ENCODING_GZIP_DEFLATE
|
|
73
|
+
headers.merge!(chef_rest.authentication_headers(method, url, json_body)) if chef_rest.sign_requests?
|
|
74
|
+
headers.merge!(Chef::Config[:custom_http_headers]) if Chef::Config[:custom_http_headers]
|
|
75
|
+
headers
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
data/lib/chef/client.rb
CHANGED
|
@@ -25,7 +25,7 @@ require 'chef/log'
|
|
|
25
25
|
require 'chef/rest'
|
|
26
26
|
require 'chef/api_client'
|
|
27
27
|
require 'chef/api_client/registration'
|
|
28
|
-
require 'chef/platform'
|
|
28
|
+
require 'chef/platform/query_helpers'
|
|
29
29
|
require 'chef/node'
|
|
30
30
|
require 'chef/role'
|
|
31
31
|
require 'chef/file_cache'
|
|
@@ -103,6 +103,7 @@ class Chef
|
|
|
103
103
|
self.class.run_start_notifications.each do |notification|
|
|
104
104
|
notification.call(run_status)
|
|
105
105
|
end
|
|
106
|
+
@events.run_started(run_status)
|
|
106
107
|
end
|
|
107
108
|
|
|
108
109
|
# Callback to fire notifications that the run completed successfully
|
|
@@ -131,7 +132,7 @@ class Chef
|
|
|
131
132
|
attr_reader :json_attribs
|
|
132
133
|
attr_reader :run_status
|
|
133
134
|
attr_reader :events
|
|
134
|
-
|
|
135
|
+
|
|
135
136
|
# Creates a new Chef::Client.
|
|
136
137
|
def initialize(json_attribs=nil, args={})
|
|
137
138
|
@json_attribs = json_attribs
|
|
@@ -179,28 +180,52 @@ class Chef
|
|
|
179
180
|
# Do a full run for this Chef::Client. Calls:
|
|
180
181
|
# * do_run
|
|
181
182
|
#
|
|
182
|
-
# This provides a wrapper around #do_run allowing the
|
|
183
|
+
# This provides a wrapper around #do_run allowing the
|
|
183
184
|
# run to be optionally forked.
|
|
184
185
|
# === Returns
|
|
185
186
|
# boolean:: Return value from #do_run. Should always returns true.
|
|
186
187
|
def run
|
|
187
|
-
|
|
188
|
+
# win32-process gem exposes some form of :fork for Process
|
|
189
|
+
# class. So we are seperately ensuring that the platform we're
|
|
190
|
+
# running on is not windows before forking.
|
|
191
|
+
if(Chef::Config[:client_fork] && Process.respond_to?(:fork) && !Chef::Platform.windows?)
|
|
188
192
|
Chef::Log.info "Forking chef instance to converge..."
|
|
189
193
|
pid = fork do
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
194
|
+
[:INT, :TERM].each {|s| trap(s, "EXIT") }
|
|
195
|
+
client_solo = Chef::Config[:solo] ? "chef-solo" : "chef-client"
|
|
196
|
+
$0 = "#{client_solo} worker: ppid=#{Process.ppid};start=#{Time.new.strftime("%R:%S")};"
|
|
197
|
+
begin
|
|
198
|
+
Chef::Log.debug "Forked instance now converging"
|
|
199
|
+
do_run
|
|
200
|
+
rescue Exception
|
|
201
|
+
exit 1
|
|
202
|
+
else
|
|
203
|
+
exit 0
|
|
204
|
+
end
|
|
193
205
|
end
|
|
194
|
-
Chef::Log.
|
|
206
|
+
Chef::Log.debug "Fork successful. Waiting for new chef pid: #{pid}"
|
|
195
207
|
result = Process.waitpid2(pid)
|
|
196
|
-
|
|
197
|
-
Chef::Log.
|
|
208
|
+
handle_child_exit(result)
|
|
209
|
+
Chef::Log.debug "Forked child successfully reaped (pid: #{pid})"
|
|
198
210
|
true
|
|
199
211
|
else
|
|
200
212
|
do_run
|
|
201
213
|
end
|
|
202
214
|
end
|
|
203
215
|
|
|
216
|
+
def handle_child_exit(pid_and_status)
|
|
217
|
+
status = pid_and_status[1]
|
|
218
|
+
return true if status.success?
|
|
219
|
+
message = if status.signaled?
|
|
220
|
+
"Chef run process terminated by signal #{status.termsig} (#{Signal.list.invert[status.termsig]})"
|
|
221
|
+
else
|
|
222
|
+
"Chef run process exited unsuccessfully (exit code #{status.exitstatus})"
|
|
223
|
+
end
|
|
224
|
+
raise Exceptions::ChildConvergeError, message
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
204
229
|
# Configures the Chef::Cookbook::FileVendor class to fetch file from the
|
|
205
230
|
# server or disk as appropriate, creates the run context for this run, and
|
|
206
231
|
# sanity checks the cookbook collection.
|
|
@@ -444,18 +469,18 @@ class Chef
|
|
|
444
469
|
def do_run
|
|
445
470
|
runlock = RunLock.new(Chef::Config)
|
|
446
471
|
runlock.acquire
|
|
472
|
+
# don't add code that may fail before entering this section to be sure to release lock
|
|
473
|
+
begin
|
|
474
|
+
run_context = nil
|
|
475
|
+
@events.run_start(Chef::VERSION)
|
|
476
|
+
Chef::Log.info("*** Chef #{Chef::VERSION} ***")
|
|
477
|
+
enforce_path_sanity
|
|
478
|
+
run_ohai
|
|
479
|
+
@events.ohai_completed(node)
|
|
480
|
+
register unless Chef::Config[:solo]
|
|
447
481
|
|
|
448
|
-
|
|
449
|
-
@events.run_start(Chef::VERSION)
|
|
450
|
-
Chef::Log.info("*** Chef #{Chef::VERSION} ***")
|
|
451
|
-
enforce_path_sanity
|
|
452
|
-
run_ohai
|
|
453
|
-
@events.ohai_completed(node)
|
|
454
|
-
register unless Chef::Config[:solo]
|
|
455
|
-
|
|
456
|
-
load_node
|
|
482
|
+
load_node
|
|
457
483
|
|
|
458
|
-
begin
|
|
459
484
|
build_node
|
|
460
485
|
|
|
461
486
|
run_status.start_clock
|
|
@@ -484,6 +509,7 @@ class Chef
|
|
|
484
509
|
run_status.exception = e
|
|
485
510
|
run_failed
|
|
486
511
|
end
|
|
512
|
+
Chef::Application.debug_stacktrace(e)
|
|
487
513
|
@events.run_failed(e)
|
|
488
514
|
raise
|
|
489
515
|
ensure
|
data/lib/chef/config.rb
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
3
|
# Author:: Christopher Brown (<cb@opscode.com>)
|
|
4
4
|
# Author:: AJ Christensen (<aj@opscode.com>)
|
|
5
|
-
# Author:: Mark Mzyk (mmzyk@opscode.com)
|
|
5
|
+
# Author:: Mark Mzyk (<mmzyk@opscode.com>)
|
|
6
|
+
# Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
|
|
6
7
|
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
|
7
8
|
# License:: Apache License, Version 2.0
|
|
8
9
|
#
|
|
@@ -19,7 +20,9 @@
|
|
|
19
20
|
# limitations under the License.
|
|
20
21
|
|
|
21
22
|
require 'chef/log'
|
|
23
|
+
require 'chef/exceptions'
|
|
22
24
|
require 'mixlib/config'
|
|
25
|
+
require 'chef/util/selinux'
|
|
23
26
|
|
|
24
27
|
class Chef
|
|
25
28
|
class Config
|
|
@@ -74,14 +77,7 @@ class Chef
|
|
|
74
77
|
config_attr_writer :chef_server_url do |url|
|
|
75
78
|
url = url.strip
|
|
76
79
|
configure do |c|
|
|
77
|
-
[
|
|
78
|
-
:template_url,
|
|
79
|
-
:remotefile_url,
|
|
80
|
-
:search_url,
|
|
81
|
-
:chef_server_url,
|
|
82
|
-
:role_url ].each do |u|
|
|
83
|
-
c[u] = url
|
|
84
|
-
end
|
|
80
|
+
c[:chef_server_url] = url
|
|
85
81
|
end
|
|
86
82
|
url
|
|
87
83
|
end
|
|
@@ -110,32 +106,18 @@ class Chef
|
|
|
110
106
|
f = File.new(location.to_str, "a")
|
|
111
107
|
f.sync = true
|
|
112
108
|
rescue Errno::ENOENT
|
|
113
|
-
raise Chef::Exceptions::ConfigurationError
|
|
109
|
+
raise Chef::Exceptions::ConfigurationError, "Failed to open or create log file at #{location.to_str}"
|
|
114
110
|
end
|
|
115
111
|
f
|
|
116
112
|
end
|
|
117
113
|
end
|
|
118
114
|
|
|
119
|
-
# Override the config dispatch to set the value of authorized_openid_providers when openid_providers (deprecated) is used
|
|
120
|
-
#
|
|
121
|
-
# === Parameters
|
|
122
|
-
# providers<Array>:: An array of openid providers that are authorized to login to the chef server
|
|
123
|
-
#
|
|
124
|
-
config_attr_writer :openid_providers do |providers|
|
|
125
|
-
configure { |c| c[:authorized_openid_providers] = providers }
|
|
126
|
-
providers
|
|
127
|
-
end
|
|
128
|
-
|
|
129
115
|
# Turn on "path sanity" by default. See also: http://wiki.opscode.com/display/chef/User+Environment+PATH+Sanity
|
|
130
116
|
enforce_path_sanity(true)
|
|
131
117
|
|
|
132
118
|
# Formatted Chef Client output is a beta feature, disabled by default:
|
|
133
119
|
formatter "null"
|
|
134
120
|
|
|
135
|
-
# Used when OpenID authentication is enabled in the Web UI
|
|
136
|
-
authorized_openid_identifiers nil
|
|
137
|
-
authorized_openid_providers nil
|
|
138
|
-
|
|
139
121
|
# The number of times the client should retry when registering with the server
|
|
140
122
|
client_registration_retries 5
|
|
141
123
|
|
|
@@ -147,9 +129,6 @@ class Chef
|
|
|
147
129
|
# An array of paths to search for knife exec scripts if they aren't in the current directory
|
|
148
130
|
script_path []
|
|
149
131
|
|
|
150
|
-
# Where files are stored temporarily during uploads
|
|
151
|
-
sandbox_path "/var/chef/sandboxes"
|
|
152
|
-
|
|
153
132
|
# Where cookbook files are stored on the server (by content checksum)
|
|
154
133
|
checksum_path "/var/chef/checksums"
|
|
155
134
|
|
|
@@ -174,7 +153,6 @@ class Chef
|
|
|
174
153
|
group nil
|
|
175
154
|
umask 0022
|
|
176
155
|
|
|
177
|
-
|
|
178
156
|
# Valid log_levels are:
|
|
179
157
|
# * :debug
|
|
180
158
|
# * :info
|
|
@@ -202,30 +180,21 @@ class Chef
|
|
|
202
180
|
# toggle info level log items that can create a lot of output
|
|
203
181
|
verbose_logging true
|
|
204
182
|
node_name nil
|
|
205
|
-
|
|
206
|
-
diff_disable false
|
|
183
|
+
diff_disabled false
|
|
207
184
|
diff_filesize_threshold 10000000
|
|
208
185
|
diff_output_threshold 1000000
|
|
209
186
|
|
|
210
187
|
pid_file nil
|
|
211
188
|
|
|
212
|
-
chef_server_url "
|
|
213
|
-
registration_url "http://localhost:4000"
|
|
214
|
-
template_url "http://localhost:4000"
|
|
215
|
-
role_url "http://localhost:4000"
|
|
216
|
-
remotefile_url "http://localhost:4000"
|
|
217
|
-
search_url "http://localhost:4000"
|
|
218
|
-
|
|
219
|
-
client_url "http://localhost:4042"
|
|
189
|
+
chef_server_url "https://localhost:443"
|
|
220
190
|
|
|
221
191
|
rest_timeout 300
|
|
222
|
-
|
|
223
|
-
run_command_stdout_timeout 120
|
|
192
|
+
yum_timeout 900
|
|
224
193
|
solo false
|
|
225
194
|
splay nil
|
|
226
195
|
why_run false
|
|
227
196
|
color false
|
|
228
|
-
client_fork
|
|
197
|
+
client_fork true
|
|
229
198
|
enable_reporting true
|
|
230
199
|
enable_reporting_url_fatals false
|
|
231
200
|
|
|
@@ -237,12 +206,13 @@ class Chef
|
|
|
237
206
|
ssl_ca_path nil
|
|
238
207
|
ssl_ca_file nil
|
|
239
208
|
|
|
240
|
-
|
|
241
209
|
# Where should chef-solo look for role files?
|
|
242
210
|
role_path platform_specific_path("/var/chef/roles")
|
|
243
211
|
|
|
244
212
|
data_bag_path platform_specific_path("/var/chef/data_bags")
|
|
245
213
|
|
|
214
|
+
environment_path platform_specific_path("/var/chef/environments")
|
|
215
|
+
|
|
246
216
|
# Where should chef-solo download recipes from?
|
|
247
217
|
recipe_url nil
|
|
248
218
|
|
|
@@ -270,6 +240,32 @@ class Chef
|
|
|
270
240
|
# `node_name` of the client.
|
|
271
241
|
client_key platform_specific_path("/etc/chef/client.pem")
|
|
272
242
|
|
|
243
|
+
# This secret is used to decrypt encrypted data bag items.
|
|
244
|
+
encrypted_data_bag_secret platform_specific_path("/etc/chef/encrypted_data_bag_secret")
|
|
245
|
+
|
|
246
|
+
# We have to check for the existence of the default file before setting it
|
|
247
|
+
# since +Chef::Config[:encrypted_data_bag_secret]+ is read by older
|
|
248
|
+
# bootstrap templates to determine if the local secret should be uploaded to
|
|
249
|
+
# node being bootstrapped. This should be removed in Chef 12.
|
|
250
|
+
unless File.exist?(platform_specific_path("/etc/chef/encrypted_data_bag_secret"))
|
|
251
|
+
encrypted_data_bag_secret(nil)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# As of Chef 11.0, version "1" is the default encrypted data bag item
|
|
255
|
+
# format. Version "2" is available which adds encrypt-then-mac protection.
|
|
256
|
+
# To maintain compatibility, versions other than 1 must be opt-in.
|
|
257
|
+
#
|
|
258
|
+
# Set this to `2` if you have chef-client 11.6.0+ in your infrastructure:
|
|
259
|
+
data_bag_encrypt_version 1
|
|
260
|
+
|
|
261
|
+
# When reading data bag items, any supported version is accepted. However,
|
|
262
|
+
# if all encrypted data bags have been generated with the version 2 format,
|
|
263
|
+
# it is recommended to disable support for earlier formats to improve
|
|
264
|
+
# security. For example, the version 2 format is identical to version 1
|
|
265
|
+
# except for the addition of an HMAC, so an attacker with MITM capability
|
|
266
|
+
# could downgrade an encrypted data bag to version 1 as part of an attack.
|
|
267
|
+
data_bag_decrypt_minimum_version 0
|
|
268
|
+
|
|
273
269
|
# If there is no file in the location given by `client_key`, chef-client
|
|
274
270
|
# will temporarily use the "validator" identity to generate one. If the
|
|
275
271
|
# `client_key` is not present and the `validation_key` is also not present,
|
|
@@ -278,24 +274,12 @@ class Chef
|
|
|
278
274
|
# The `validation_key` is never used if the `client_key` exists.
|
|
279
275
|
validation_key platform_specific_path("/etc/chef/validation.pem")
|
|
280
276
|
validation_client_name "chef-validator"
|
|
281
|
-
web_ui_client_name "chef-webui"
|
|
282
|
-
web_ui_key "/etc/chef/webui.pem"
|
|
283
|
-
web_ui_admin_user_name "admin"
|
|
284
|
-
web_ui_admin_default_password "p@ssw0rd1"
|
|
285
277
|
|
|
286
|
-
#
|
|
287
|
-
#
|
|
288
|
-
#
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
signing_ca_user nil
|
|
292
|
-
signing_ca_group nil
|
|
293
|
-
signing_ca_country "US"
|
|
294
|
-
signing_ca_state "Washington"
|
|
295
|
-
signing_ca_location "Seattle"
|
|
296
|
-
signing_ca_org "Chef User"
|
|
297
|
-
signing_ca_domain "opensource.opscode.com"
|
|
298
|
-
signing_ca_email "opensource-cert@opscode.com"
|
|
278
|
+
# Zypper package provider gpg checks. Set to true to enable package
|
|
279
|
+
# gpg signature checking. This will be default in the
|
|
280
|
+
# future. Setting to false disables the warnings.
|
|
281
|
+
# Leaving this set to nil or false is a security hazard!
|
|
282
|
+
zypper_check_gpg nil
|
|
299
283
|
|
|
300
284
|
# Report Handlers
|
|
301
285
|
report_handlers []
|
|
@@ -337,12 +321,26 @@ class Chef
|
|
|
337
321
|
|
|
338
322
|
fatal_windows_admin_check false
|
|
339
323
|
else
|
|
340
|
-
user_valid_regex [ /^([-a-zA-Z0-9_.]+)$/, /^\d+$/ ]
|
|
341
|
-
group_valid_regex [ /^([-a-zA-Z0-9_
|
|
324
|
+
user_valid_regex [ /^([-a-zA-Z0-9_.]+[\\@]?[-a-zA-Z0-9_.]+)$/, /^\d+$/ ]
|
|
325
|
+
group_valid_regex [ /^([-a-zA-Z0-9_.\\@^ ]+)$/, /^\d+$/ ]
|
|
342
326
|
end
|
|
343
327
|
|
|
344
328
|
# returns a platform specific path to the user home dir
|
|
345
329
|
windows_home_path = ENV['SYSTEMDRIVE'] + ENV['HOMEPATH'] if ENV['SYSTEMDRIVE'] && ENV['HOMEPATH']
|
|
346
330
|
user_home(ENV['HOME'] || windows_home_path || ENV['USERPROFILE'])
|
|
331
|
+
|
|
332
|
+
# Enable file permission fixup for selinux. Fixup will be done
|
|
333
|
+
# only if selinux is enabled in the system.
|
|
334
|
+
enable_selinux_file_permission_fixup true
|
|
335
|
+
|
|
336
|
+
# Use atomic updates (i.e. move operation) while updating contents
|
|
337
|
+
# of the files resources. When set to false copy operation is
|
|
338
|
+
# used to update files.
|
|
339
|
+
file_atomic_update true
|
|
340
|
+
|
|
341
|
+
# If false file staging is will be done via tempfiles that are
|
|
342
|
+
# created under ENV['TMP'] otherwise tempfiles will be created in
|
|
343
|
+
# the directory that files are going to reside.
|
|
344
|
+
file_staging_uses_destdir false
|
|
347
345
|
end
|
|
348
346
|
end
|