chef 16.4.41 → 16.8.9
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.
- checksums.yaml +4 -4
- data/Gemfile +6 -14
- data/README.md +1 -1
- data/Rakefile +22 -15
- data/bin/knife +1 -1
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +4 -2
- data/lib/chef/application.rb +19 -17
- data/lib/chef/application/apply.rb +12 -7
- data/lib/chef/application/base.rb +27 -24
- data/lib/chef/application/client.rb +16 -5
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +14 -14
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +16 -43
- data/lib/chef/compliance/default_attributes.rb +89 -0
- data/lib/chef/compliance/fetcher/automate.rb +69 -0
- data/lib/chef/compliance/fetcher/chef_server.rb +134 -0
- data/lib/chef/compliance/reporter/automate.rb +202 -0
- data/lib/chef/compliance/reporter/chef_server_automate.rb +92 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +20 -0
- data/lib/chef/compliance/reporter/json_file.rb +19 -0
- data/lib/chef/compliance/runner.rb +250 -0
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_manifest.rb +2 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +2 -5
- data/lib/chef/data_collector.rb +7 -6
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +2 -2
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +3 -3
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +9 -5
- data/lib/chef/file_access_control/windows.rb +6 -5
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +6 -6
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +28 -39
- data/lib/chef/http.rb +6 -14
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +1 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +7 -1
- data/lib/chef/json_compat.rb +3 -8
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -15
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +9 -9
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -1
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +5 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/node_policy_set.rb +2 -2
- data/lib/chef/knife/node_run_list_add.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/role_env_run_list_add.rb +1 -1
- data/lib/chef/knife/role_env_run_list_set.rb +1 -1
- data/lib/chef/knife/role_run_list_add.rb +1 -1
- data/lib/chef/knife/role_run_list_set.rb +1 -1
- data/lib/chef/knife/search.rb +0 -1
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +19 -4
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/tag_create.rb +1 -1
- data/lib/chef/knife/tag_delete.rb +1 -1
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/convert_to_class_name.rb +0 -56
- data/lib/chef/mixin/deep_merge.rb +0 -12
- data/lib/chef/mixin/openssl_helper.rb +2 -5
- data/lib/chef/mixin/powershell_exec.rb +24 -10
- data/lib/chef/mixin/powershell_out.rb +12 -5
- data/lib/chef/mixin/properties.rb +2 -0
- data/lib/chef/mixin/template.rb +3 -3
- data/lib/chef/mixin/unformatter.rb +1 -1
- data/lib/chef/mixin/uris.rb +4 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/node/attribute_collections.rb +2 -6
- data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
- data/lib/chef/node_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +4 -4
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/powershell.rb +10 -4
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider.rb +1 -5
- data/lib/chef/provider/cron.rb +2 -13
- data/lib/chef/provider/dsc_resource.rb +12 -24
- data/lib/chef/provider/dsc_script.rb +16 -20
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/git.rb +5 -5
- data/lib/chef/provider/group.rb +14 -6
- data/lib/chef/provider/group/windows.rb +12 -1
- data/lib/chef/provider/ifconfig.rb +9 -9
- data/lib/chef/provider/ifconfig/debian.rb +38 -22
- data/lib/chef/provider/ifconfig/redhat.rb +54 -18
- data/lib/chef/provider/launchd.rb +3 -13
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount.rb +18 -1
- data/lib/chef/provider/mount/linux.rb +67 -0
- data/lib/chef/provider/mount/mount.rb +41 -43
- data/lib/chef/provider/package.rb +3 -0
- data/lib/chef/provider/package/apt.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +6 -6
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/freebsd/base.rb +3 -2
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/ips.rb +1 -1
- data/lib/chef/provider/package/powershell.rb +2 -3
- data/lib/chef/provider/package/rubygems.rb +22 -19
- data/lib/chef/provider/package/snap.rb +1 -4
- data/lib/chef/provider/package/solaris.rb +0 -2
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
- data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +99 -72
- data/lib/chef/provider/powershell_script.rb +12 -1
- data/lib/chef/provider/registry_key.rb +4 -3
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +4 -8
- data/lib/chef/provider/service/debian.rb +2 -1
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user.rb +17 -9
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +5 -5
- data/lib/chef/provider/user/mac.rb +15 -7
- data/lib/chef/provider/user/solaris.rb +1 -1
- data/lib/chef/provider/user/windows.rb +10 -3
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -3
- data/lib/chef/pwsh.rb +71 -0
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -5
- data/lib/chef/resource/bash.rb +119 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +59 -2
- data/lib/chef/resource/build_essential.rb +5 -8
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_config.rb +313 -0
- data/lib/chef/resource/chef_client_cron.rb +35 -28
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
- data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +149 -4
- data/lib/chef/resource/chef_sleep.rb +3 -3
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/_cron_shared.rb +1 -0
- data/lib/chef/resource/cron/cron_d.rb +2 -3
- data/lib/chef/resource/csh.rb +2 -2
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +9 -2
- data/lib/chef/resource/execute.rb +10 -8
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +9 -6
- data/lib/chef/resource/hostname.rb +7 -7
- data/lib/chef/resource/ifconfig.rb +52 -5
- data/lib/chef/resource/kernel_module.rb +1 -1
- data/lib/chef/resource/ksh.rb +3 -3
- data/lib/chef/resource/launchd.rb +17 -16
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/lwrp_base.rb +3 -5
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/mount.rb +8 -2
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +27 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
- data/lib/chef/resource/openssl_x509_crl.rb +19 -10
- data/lib/chef/resource/openssl_x509_request.rb +14 -16
- data/lib/chef/resource/osx_profile.rb +77 -13
- data/lib/chef/resource/perl.rb +2 -2
- data/lib/chef/resource/plist.rb +3 -7
- data/lib/chef/resource/powershell_package_source.rb +24 -23
- data/lib/chef/resource/powershell_script.rb +14 -11
- data/lib/chef/resource/python.rb +2 -2
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/registry_key.rb +93 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/ruby.rb +2 -2
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/_scm.rb +2 -1
- data/lib/chef/resource/scm/git.rb +82 -1
- data/lib/chef/resource/scm/subversion.rb +14 -2
- data/lib/chef/resource/script.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/solaris_package.rb +0 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/sudo.rb +1 -1
- data/lib/chef/resource/support/client.erb +64 -0
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +1 -5
- data/lib/chef/resource/systemd_unit.rb +44 -3
- data/lib/chef/resource/template.rb +4 -4
- data/lib/chef/resource/windows_ad_join.rb +19 -12
- data/lib/chef/resource/windows_audit_policy.rb +26 -24
- data/lib/chef/resource/windows_certificate.rb +19 -11
- data/lib/chef/resource/windows_dfs_server.rb +7 -4
- data/lib/chef/resource/windows_env.rb +173 -0
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_firewall_profile.rb +28 -31
- data/lib/chef/resource/windows_firewall_rule.rb +9 -11
- data/lib/chef/resource/windows_font.rb +1 -1
- data/lib/chef/resource/windows_package.rb +29 -5
- data/lib/chef/resource/windows_path.rb +38 -0
- data/lib/chef/resource/windows_printer.rb +5 -3
- data/lib/chef/resource/windows_printer_port.rb +6 -4
- data/lib/chef/resource/windows_security_policy.rb +5 -5
- data/lib/chef/resource/windows_service.rb +108 -0
- data/lib/chef/resource/windows_share.rb +18 -18
- data/lib/chef/resource/windows_task.rb +629 -28
- data/lib/chef/resource/windows_user_privilege.rb +53 -54
- data/lib/chef/resource/windows_workgroup.rb +9 -7
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource/yum_repository.rb +1 -1
- data/lib/chef/resource_collection/resource_set.rb +2 -6
- data/lib/chef/resource_inspector.rb +77 -75
- data/lib/chef/resource_reporter.rb +0 -2
- data/lib/chef/resources.rb +4 -1
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/run_lock.rb +3 -3
- data/lib/chef/search/query.rb +6 -5
- data/lib/chef/server_api.rb +0 -4
- data/lib/chef/shell.rb +31 -26
- data/lib/chef/shell/ext.rb +12 -12
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +3 -3
- data/lib/chef/util/dsc/configuration_generator.rb +52 -11
- data/lib/chef/util/dsc/lcm_output_parser.rb +4 -7
- data/lib/chef/util/dsc/local_configuration_manager.rb +18 -15
- data/lib/chef/util/dsc/resource_store.rb +5 -11
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/file.rb +4 -0
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/registry.rb +1 -2
- data/lib/chef/win32/security/sid.rb +1 -1
- data/lib/chef/win32/unicode.rb +1 -1
- data/spec/data/shef-config.rb +1 -1
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/mixin/powershell_out_spec.rb +11 -3
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/apt_package_spec.rb +4 -6
- data/spec/functional/resource/chocolatey_package_spec.rb +3 -3
- data/spec/functional/resource/cron_spec.rb +3 -3
- data/spec/functional/resource/dsc_script_spec.rb +6 -9
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/mount_spec.rb +10 -2
- data/spec/functional/resource/powershell_package_source_spec.rb +107 -0
- data/spec/functional/resource/powershell_script_spec.rb +57 -14
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_certificate_spec.rb +10 -6
- data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
- data/spec/functional/resource/windows_package_spec.rb +36 -10
- data/spec/functional/resource/windows_share_spec.rb +103 -0
- data/spec/functional/resource/windows_task_spec.rb +15 -16
- data/spec/functional/resource/zypper_package_spec.rb +11 -0
- data/spec/functional/version_spec.rb +3 -3
- data/spec/integration/client/client_spec.rb +6 -5
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/compliance/compliance_spec.rb +81 -0
- data/spec/integration/knife/client_key_create_spec.rb +1 -1
- data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
- data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
- data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/knife/node_create_spec.rb +1 -1
- data/spec/integration/knife/node_environment_set_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_add_spec.rb +4 -4
- data/spec/integration/knife/node_run_list_remove_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_set_spec.rb +1 -1
- data/spec/integration/knife/node_show_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/provider_choice.rb +2 -2
- data/spec/integration/recipes/recipe_dsl_spec.rb +1 -0
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +9 -7
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/cat.rb +1 -1
- data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/mock/platform.rb +24 -16
- data/spec/support/platform_helpers.rb +27 -38
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/support/shared/unit/knife_shared.rb +1 -1
- data/spec/support/shared/unit/script_resource.rb +4 -4
- data/spec/support/shared/unit/windows_script_resource.rb +1 -1
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/config_spec.rb +1 -1
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/client_spec.rb +17 -0
- data/spec/unit/compliance/fetcher/automate_spec.rb +134 -0
- data/spec/unit/compliance/fetcher/chef_server_spec.rb +93 -0
- data/spec/unit/compliance/reporter/automate_spec.rb +427 -0
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +177 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +48 -0
- data/spec/unit/compliance/runner_spec.rb +113 -0
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +0 -117
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +11 -11
- data/spec/unit/http/ssl_policies_spec.rb +11 -0
- data/spec/unit/knife/bootstrap_spec.rb +6 -6
- data/spec/unit/knife/client_create_spec.rb +2 -2
- data/spec/unit/knife/configure_client_spec.rb +5 -5
- data/spec/unit/knife/configure_spec.rb +3 -3
- data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
- data/spec/unit/knife/cookbook_download_spec.rb +2 -2
- data/spec/unit/knife/cookbook_list_spec.rb +2 -2
- data/spec/unit/knife/cookbook_metadata_spec.rb +3 -3
- data/spec/unit/knife/core/node_editor_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/environment_compare_spec.rb +3 -3
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/knife/supermarket_download_spec.rb +8 -8
- data/spec/unit/knife/supermarket_list_spec.rb +3 -3
- data/spec/unit/knife/supermarket_search_spec.rb +1 -1
- data/spec/unit/knife/tag_create_spec.rb +1 -1
- data/spec/unit/knife/tag_delete_spec.rb +1 -1
- data/spec/unit/knife/user_create_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +40 -3
- data/spec/unit/mixin/powershell_out_spec.rb +14 -0
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/mixin/which.rb +1 -1
- data/spec/unit/node/immutable_collections_spec.rb +2 -2
- data/spec/unit/platform/query_helpers_spec.rb +11 -12
- data/spec/unit/provider/dsc_resource_spec.rb +10 -27
- data/spec/unit/provider/dsc_script_spec.rb +1 -1
- data/spec/unit/provider/group/windows_spec.rb +6 -0
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/mount/linux_spec.rb +107 -0
- data/spec/unit/provider/mount/mount_spec.rb +21 -10
- data/spec/unit/provider/mount/solaris_spec.rb +1 -1
- data/spec/unit/provider/mount/windows_spec.rb +1 -0
- data/spec/unit/provider/mount_spec.rb +31 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +2 -3
- data/spec/unit/provider/package/powershell_spec.rb +88 -96
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/package/zypper_spec.rb +0 -25
- data/spec/unit/provider/package_spec.rb +2 -2
- data/spec/unit/provider/powershell_script_spec.rb +11 -0
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/provider/subversion_spec.rb +0 -3
- data/spec/unit/provider/systemd_unit_spec.rb +1 -1
- data/spec/unit/provider/user_spec.rb +7 -1
- data/spec/unit/provider/windows_env_spec.rb +18 -34
- data/spec/unit/provider/windows_path_spec.rb +6 -11
- data/spec/unit/provider/windows_task_spec.rb +7 -6
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/breakpoint_spec.rb +1 -1
- data/spec/unit/resource/build_essential_spec.rb +0 -12
- data/spec/unit/resource/chef_client_config_spec.rb +137 -0
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/ifconfig_spec.rb +2 -10
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/mount_spec.rb +18 -5
- data/spec/unit/resource/osx_profile_spec.rb +67 -1
- data/spec/unit/resource/powershell_package_source_spec.rb +20 -20
- data/spec/unit/resource/powershell_script_spec.rb +4 -74
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/service_spec.rb +2 -2
- data/spec/unit/resource/solaris_package_spec.rb +8 -10
- data/spec/unit/resource/windows_certificate_spec.rb +12 -0
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/resource_inspector_spec.rb +3 -3
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +18 -21
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/dsc/configuration_generator_spec.rb +79 -0
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +27 -35
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +1 -3
- metadata +80 -33
- data/lib/chef/dist.rb +0 -68
- data/lib/chef/monkey_patches/net_http.rb +0 -22
- data/lib/chef/provider/windows_env.rb +0 -210
- data/lib/chef/provider/windows_path.rb +0 -61
- data/lib/chef/provider/windows_task.rb +0 -632
- data/lib/chef/util/powershell/cmdlet.rb +0 -173
- data/lib/chef/util/powershell/cmdlet_result.rb +0 -61
- data/spec/functional/util/powershell/cmdlet_spec.rb +0 -111
- data/spec/integration/knife/config_get_profile_spec.rb +0 -114
- data/spec/support/mock/constant.rb +0 -52
- data/spec/unit/monkey_patches/uri_spec.rb +0 -34
- data/spec/unit/provider_resolver_spec.rb +0 -885
- data/spec/unit/resource/data/InstallHistory_with_CLT.plist +0 -92
- data/spec/unit/resource/data/InstallHistory_without_CLT.plist +0 -38
- data/spec/unit/util/powershell/cmdlet_spec.rb +0 -106
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c13a95870faf2ddc93377295ea1821d3ee962c422af54147a9a5852266ef9abc
|
|
4
|
+
data.tar.gz: 06d9ed38997dd63cef3a9d54cf7ffb064c5ca13b668cbea8ee42173ba757d880
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ed8ed48612596fdd94dfab56edda9b66ba3adff6bcca4475bf4d4a9b5ab9dc51f59b3db9d54aa6f468ab33aa4a8f2821a5ab9942379c0d70f641a04f8bfb48d0
|
|
7
|
+
data.tar.gz: 8f1ebbbdbfe60ed00c66edab06a41821f5d8e9f62ab74d4c322b187b75e4f894e0f59cdf90c61b034a8496ece30e0a6eb71c3c91336a40e966fb6f9001e26d9a
|
data/Gemfile
CHANGED
|
@@ -27,24 +27,16 @@ gem "chef-telemetry", ">=1.0.8" # 1.0.8 removes the http dep
|
|
|
27
27
|
group(:omnibus_package) do
|
|
28
28
|
gem "appbundler"
|
|
29
29
|
gem "rb-readline"
|
|
30
|
-
gem "inspec-core", "~> 4.
|
|
31
|
-
gem "inspec-core-bin", "~> 4.18" # need to provide the binaries for inspec
|
|
30
|
+
gem "inspec-core-bin", "~> 4.24" # need to provide the binaries for inspec
|
|
32
31
|
gem "chef-vault"
|
|
33
|
-
gem "ed25519" # ed25519 ssh key support done here as it's a native gem we can't put in train
|
|
34
|
-
gem "bcrypt_pbkdf", ">= 1.1.0.rc1" # ed25519 ssh key support done here as it's a native gem we can't put in train
|
|
35
32
|
end
|
|
36
33
|
|
|
37
34
|
group(:omnibus_package, :pry) do
|
|
38
35
|
gem "pry"
|
|
39
36
|
gem "pry-byebug"
|
|
40
|
-
gem "pry-remote"
|
|
41
37
|
gem "pry-stack_explorer"
|
|
42
38
|
end
|
|
43
39
|
|
|
44
|
-
group(:docgen) do
|
|
45
|
-
gem "yard"
|
|
46
|
-
end
|
|
47
|
-
|
|
48
40
|
# Everything except AIX
|
|
49
41
|
group(:ruby_prof) do
|
|
50
42
|
# ruby-prof 1.3.0 does not compile on our centos6 builders/kitchen testers
|
|
@@ -58,10 +50,7 @@ end
|
|
|
58
50
|
|
|
59
51
|
group(:development, :test) do
|
|
60
52
|
gem "rake"
|
|
61
|
-
gem "rspec
|
|
62
|
-
gem "rspec-mocks", "~> 3.5"
|
|
63
|
-
gem "rspec-expectations", "~> 3.5"
|
|
64
|
-
gem "rspec_junit_formatter", "~> 0.2.0"
|
|
53
|
+
gem "rspec"
|
|
65
54
|
gem "webmock"
|
|
66
55
|
gem "fauxhai-ng" # for chef-utils gem
|
|
67
56
|
end
|
|
@@ -81,13 +70,16 @@ eval_gemfile("./Gemfile.local") if File.exist?("./Gemfile.local")
|
|
|
81
70
|
# For FFI to call into PowerShell we need the binaries and assemblies located
|
|
82
71
|
# in the Ruby bindir.
|
|
83
72
|
# The Powershell DLL source lives here: https://github.com/chef/chef-powershell-shim
|
|
73
|
+
# Every merge into that repo triggers a Habitat build and promotion. Running
|
|
74
|
+
# the rake :update_chef_exec_dll task in this (chef/chef) repo will pull down
|
|
75
|
+
# the built packages and copy the binaries to distro/ruby_bin_folder.
|
|
84
76
|
#
|
|
85
77
|
# We copy (and overwrite) these files every time "bundle <exec|install>" is
|
|
86
78
|
# executed, just in case they have changed.
|
|
87
79
|
if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
|
88
80
|
instance_eval do
|
|
89
81
|
ruby_exe_dir = RbConfig::CONFIG["bindir"]
|
|
90
|
-
assemblies = Dir.glob(File.expand_path("distro/ruby_bin_folder",
|
|
82
|
+
assemblies = Dir.glob(File.expand_path("distro/ruby_bin_folder/#{ENV["PROCESSOR_ARCHITECTURE"]}", __dir__) + "**/*")
|
|
91
83
|
FileUtils.cp_r assemblies, ruby_exe_dir, verbose: false unless ENV["_BUNDLER_WINDOWS_DLLS_COPIED"]
|
|
92
84
|
ENV["_BUNDLER_WINDOWS_DLLS_COPIED"] = "1"
|
|
93
85
|
end
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
[](https://codeclimate.com/github/chef/chef)
|
|
3
3
|
[](https://buildkite.com/chef-oss/chef-chef-master-verify)
|
|
4
4
|
[](https://badge.fury.io/rb/chef)
|
|
5
|
-
[](https://github.com/chef/chef/blob/
|
|
5
|
+
[](https://github.com/chef/chef/blob/master/docs/dev/design_documents/client_release_cadence.md)
|
|
6
6
|
|
|
7
7
|
**Umbrella Project**: [Chef Infra](https://github.com/chef/chef-oss-practices/blob/master/projects/chef-infra.md)
|
|
8
8
|
|
data/Rakefile
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
4
|
-
# Copyright:: Copyright
|
|
4
|
+
# Copyright:: Copyright, Chef Software Inc.
|
|
5
5
|
# License:: Apache License, Version 2.0
|
|
6
6
|
#
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -23,10 +23,9 @@ $LOAD_PATH.unshift(File.expand_path("chef-config/lib", __dir__))
|
|
|
23
23
|
begin
|
|
24
24
|
require_relative "tasks/rspec"
|
|
25
25
|
require_relative "tasks/dependencies"
|
|
26
|
-
require_relative "tasks/announce"
|
|
27
26
|
require_relative "tasks/docs"
|
|
28
27
|
require_relative "tasks/spellcheck"
|
|
29
|
-
require_relative "lib/chef/dist"
|
|
28
|
+
require_relative "chef-utils/lib/chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
30
29
|
rescue LoadError => e
|
|
31
30
|
puts "Skipping missing rake dep: #{e}"
|
|
32
31
|
end
|
|
@@ -48,6 +47,7 @@ namespace :pre_install do
|
|
|
48
47
|
|
|
49
48
|
desc "Renders the powershell extensions with distro flavoring"
|
|
50
49
|
task :render_powershell_extension do
|
|
50
|
+
require "erb"
|
|
51
51
|
template_file = ::File.join(::File.dirname(__FILE__), "distro", "templates", "powershell", "chef", "chef.psm1.erb")
|
|
52
52
|
psm1_path = ::File.join(::File.dirname(__FILE__), "distro", "powershell", "chef")
|
|
53
53
|
FileUtils.mkdir_p psm1_path
|
|
@@ -88,6 +88,25 @@ task :register_eventlog do
|
|
|
88
88
|
end
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
+
desc "Copies powershell_exec related binaries from the latest built Habitat Packages"
|
|
92
|
+
task :update_chef_exec_dll do
|
|
93
|
+
raise "This task must be run on Windows since we are installing a Windows targeted package!" unless Gem.win_platform?
|
|
94
|
+
|
|
95
|
+
require "mkmf"
|
|
96
|
+
raise "Unable to locate Habitat cli. Please install Habitat cli before invoking this task!" unless find_executable "hab"
|
|
97
|
+
|
|
98
|
+
sh("hab pkg install chef/chef-powershell-shim")
|
|
99
|
+
sh("hab pkg install chef/chef-powershell-shim-x86")
|
|
100
|
+
x64 = `hab pkg path chef/chef-powershell-shim`.chomp.gsub(/\\/, "/")
|
|
101
|
+
x86 = `hab pkg path chef/chef-powershell-shim-x86`.chomp.gsub(/\\/, "/")
|
|
102
|
+
FileUtils.rm_rf(Dir["distro/ruby_bin_folder/AMD64/*"])
|
|
103
|
+
FileUtils.rm_rf(Dir["distro/ruby_bin_folder/x86/*"])
|
|
104
|
+
puts "Copying #{x64}/bin/* to distro/ruby_bin_folder/AMD64"
|
|
105
|
+
FileUtils.cp_r(Dir["#{x64}/bin/*"], "distro/ruby_bin_folder/AMD64")
|
|
106
|
+
puts "Copying #{x86}/bin/* to distro/ruby_bin_folder/x86"
|
|
107
|
+
FileUtils.cp_r(Dir["#{x86}/bin/*"], "distro/ruby_bin_folder/x86")
|
|
108
|
+
end
|
|
109
|
+
|
|
91
110
|
begin
|
|
92
111
|
require "chefstyle"
|
|
93
112
|
require "rubocop/rake_task"
|
|
@@ -97,15 +116,3 @@ begin
|
|
|
97
116
|
rescue LoadError
|
|
98
117
|
puts "chefstyle/rubocop is not available. bundle install first to make sure all dependencies are installed."
|
|
99
118
|
end
|
|
100
|
-
|
|
101
|
-
begin
|
|
102
|
-
require "yard"
|
|
103
|
-
DOC_FILES = [ "spec/tiny_server.rb", "lib/**/*.rb" ].freeze
|
|
104
|
-
|
|
105
|
-
YARD::Rake::YardocTask.new(:docs) do |t|
|
|
106
|
-
t.files = DOC_FILES
|
|
107
|
-
t.options = ["--format", "html"]
|
|
108
|
-
end
|
|
109
|
-
rescue LoadError
|
|
110
|
-
puts "yard is not available. bundle install first to make sure all dependencies are installed."
|
|
111
|
-
end
|
data/bin/knife
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# See the License for the specific language governing permissions and
|
|
19
19
|
# limitations under the License.
|
|
20
20
|
|
|
21
|
-
$:.unshift(File.expand_path(File.join(
|
|
21
|
+
$:.unshift(File.expand_path(File.join(__dir__, "..", "lib")))
|
|
22
22
|
require "chef/application/knife"
|
|
23
23
|
|
|
24
24
|
Chef::Application::Knife.new.run
|
|
@@ -9,7 +9,7 @@ gemspec.add_dependency "win32-event", "~> 0.6.1"
|
|
|
9
9
|
gemspec.add_dependency "win32-eventlog", "0.6.3"
|
|
10
10
|
gemspec.add_dependency "win32-mmap", "~> 0.4.1"
|
|
11
11
|
gemspec.add_dependency "win32-mutex", "~> 0.4.2"
|
|
12
|
-
gemspec.add_dependency "win32-process", "~> 0.
|
|
12
|
+
gemspec.add_dependency "win32-process", "~> 0.9"
|
|
13
13
|
gemspec.add_dependency "win32-service", ">= 2.1.5", "< 3.0"
|
|
14
14
|
gemspec.add_dependency "wmi-lite", "~> 1.0"
|
|
15
15
|
gemspec.add_dependency "win32-taskscheduler", "~> 2.0"
|
data/chef.gemspec
CHANGED
|
@@ -20,17 +20,18 @@ Gem::Specification.new do |s|
|
|
|
20
20
|
s.add_dependency "train-core", "~> 3.2", ">= 3.2.28" # 3.2.28 fixes sudo prompts. See https://github.com/chef/chef/pull/9635
|
|
21
21
|
s.add_dependency "train-winrm", ">= 0.2.5"
|
|
22
22
|
|
|
23
|
-
s.add_dependency "license-acceptance", "
|
|
23
|
+
s.add_dependency "license-acceptance", ">= 1.0.5", "< 3"
|
|
24
24
|
s.add_dependency "mixlib-cli", ">= 2.1.1", "< 3.0"
|
|
25
25
|
s.add_dependency "mixlib-log", ">= 2.0.3", "< 4.0"
|
|
26
26
|
s.add_dependency "mixlib-authentication", ">= 2.1", "< 4"
|
|
27
27
|
s.add_dependency "mixlib-shellout", ">= 3.1.1", "< 4.0"
|
|
28
28
|
s.add_dependency "mixlib-archive", ">= 0.4", "< 2.0"
|
|
29
29
|
s.add_dependency "ohai", "~> 16.0"
|
|
30
|
+
s.add_dependency "inspec-core", "~> 4.23"
|
|
30
31
|
|
|
31
32
|
s.add_dependency "ffi", ">= 1.9.25"
|
|
32
33
|
s.add_dependency "ffi-yajl", "~> 2.2"
|
|
33
|
-
s.add_dependency "net-ssh", ">=
|
|
34
|
+
s.add_dependency "net-ssh", ">= 5.1", "< 7"
|
|
34
35
|
s.add_dependency "net-ssh-multi", "~> 1.2", ">= 1.2.1"
|
|
35
36
|
s.add_dependency "net-sftp", ">= 2.1.2", "< 4.0"
|
|
36
37
|
s.add_dependency "ed25519", "~> 1.2" # ed25519 ssh key support
|
|
@@ -38,6 +39,7 @@ Gem::Specification.new do |s|
|
|
|
38
39
|
s.add_dependency "highline", ">= 1.6.9", "< 3"
|
|
39
40
|
s.add_dependency "tty-prompt", "~> 0.21" # knife ui.ask prompt
|
|
40
41
|
s.add_dependency "tty-screen", "~> 0.6" # knife list
|
|
42
|
+
s.add_dependency "tty-table", "~> 0.11" # knife render table output.
|
|
41
43
|
s.add_dependency "pastel" # knife ui.color
|
|
42
44
|
s.add_dependency "erubis", "~> 2.7"
|
|
43
45
|
s.add_dependency "diff-lcs", ">= 1.2.4", "< 1.4.0" # 1.4 breaks output
|
data/lib/chef/application.rb
CHANGED
|
@@ -27,8 +27,10 @@ require "mixlib/cli" unless defined?(Mixlib::CLI)
|
|
|
27
27
|
require "tmpdir" unless defined?(Dir.mktmpdir)
|
|
28
28
|
require "rbconfig" unless defined?(RbConfig)
|
|
29
29
|
require_relative "application/exit_code"
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
require "chef-utils" unless defined?(ChefUtils::CANARY)
|
|
31
|
+
module LicenseAcceptance
|
|
32
|
+
autoload :Acceptor, "license_acceptance/acceptor"
|
|
33
|
+
end
|
|
32
34
|
|
|
33
35
|
class Chef
|
|
34
36
|
class Application
|
|
@@ -39,9 +41,6 @@ class Chef
|
|
|
39
41
|
|
|
40
42
|
@chef_client = nil
|
|
41
43
|
@chef_client_json = nil
|
|
42
|
-
|
|
43
|
-
# Always switch to a readable directory. Keeps subsequent Dir.chdir() {}
|
|
44
|
-
# from failing due to permissions when launched as a less privileged user.
|
|
45
44
|
end
|
|
46
45
|
|
|
47
46
|
# Configure mixlib-cli to always separate defaults from user-supplied CLI options
|
|
@@ -96,7 +95,11 @@ class Chef
|
|
|
96
95
|
# Parse configuration (options and config file)
|
|
97
96
|
def configure_chef
|
|
98
97
|
parse_options
|
|
99
|
-
|
|
98
|
+
begin
|
|
99
|
+
load_config_file
|
|
100
|
+
rescue Exception => e
|
|
101
|
+
Chef::Application.fatal!(e.message, Chef::Exceptions::ConfigurationError.new)
|
|
102
|
+
end
|
|
100
103
|
chef_config.export_proxies
|
|
101
104
|
chef_config.init_openssl
|
|
102
105
|
File.umask chef_config[:umask]
|
|
@@ -151,8 +154,6 @@ class Chef
|
|
|
151
154
|
|
|
152
155
|
def apply_extra_config_options(extra_config_options)
|
|
153
156
|
chef_config.apply_extra_config_options(extra_config_options)
|
|
154
|
-
rescue ChefConfig::UnparsableConfigOption => e
|
|
155
|
-
Chef::Application.fatal!(e.message)
|
|
156
157
|
end
|
|
157
158
|
|
|
158
159
|
# Set the specific recipes to Chef::Config if the recipes are valid
|
|
@@ -171,7 +172,7 @@ class Chef
|
|
|
171
172
|
def configure_logging
|
|
172
173
|
configure_log_location
|
|
173
174
|
logger.init(MonoLogger.new(chef_config[:log_location][0]))
|
|
174
|
-
chef_config[:log_location][1
|
|
175
|
+
chef_config[:log_location][1..].each do |log_location|
|
|
175
176
|
logger.loggers << MonoLogger.new(log_location)
|
|
176
177
|
end
|
|
177
178
|
logger.level = resolve_log_level
|
|
@@ -306,7 +307,7 @@ class Chef
|
|
|
306
307
|
end
|
|
307
308
|
|
|
308
309
|
def fork_chef_client
|
|
309
|
-
logger.info "Forking #{
|
|
310
|
+
logger.info "Forking #{ChefUtils::Dist::Infra::PRODUCT} instance to converge..."
|
|
310
311
|
pid = fork do
|
|
311
312
|
# Want to allow forked processes to finish converging when
|
|
312
313
|
# TERM singal is received (exit gracefully)
|
|
@@ -315,7 +316,7 @@ class Chef
|
|
|
315
316
|
" finishing converge to exit normally (send SIGINT to terminate immediately)")
|
|
316
317
|
end
|
|
317
318
|
|
|
318
|
-
client_solo = chef_config[:solo] ?
|
|
319
|
+
client_solo = chef_config[:solo] ? ChefUtils::Dist::Solo::EXEC : ChefUtils::Dist::Infra::CLIENT
|
|
319
320
|
$0 = "#{client_solo} worker: ppid=#{Process.ppid};start=#{Time.new.strftime("%R:%S")};"
|
|
320
321
|
begin
|
|
321
322
|
logger.trace "Forked instance now converging"
|
|
@@ -327,7 +328,7 @@ class Chef
|
|
|
327
328
|
exit 0
|
|
328
329
|
end
|
|
329
330
|
end
|
|
330
|
-
logger.trace "Fork successful. Waiting for new #{
|
|
331
|
+
logger.trace "Fork successful. Waiting for new #{ChefUtils::Dist::Infra::CLIENT} pid: #{pid}"
|
|
331
332
|
result = Process.waitpid2(pid)
|
|
332
333
|
handle_child_exit(result)
|
|
333
334
|
logger.trace "Forked instance successfully reaped (pid: #{pid})"
|
|
@@ -339,9 +340,9 @@ class Chef
|
|
|
339
340
|
return true if status.success?
|
|
340
341
|
|
|
341
342
|
message = if status.signaled?
|
|
342
|
-
"#{
|
|
343
|
+
"#{ChefUtils::Dist::Infra::PRODUCT} run process terminated by signal #{status.termsig} (#{Signal.list.invert[status.termsig]})"
|
|
343
344
|
else
|
|
344
|
-
"#{
|
|
345
|
+
"#{ChefUtils::Dist::Infra::PRODUCT} run process exited unsuccessfully (exit code #{status.exitstatus})"
|
|
345
346
|
end
|
|
346
347
|
raise Exceptions::ChildConvergeError, message
|
|
347
348
|
end
|
|
@@ -352,7 +353,8 @@ class Chef
|
|
|
352
353
|
logger.fatal("Configuration error #{error.class}: #{error.message}")
|
|
353
354
|
filtered_trace = error.backtrace.grep(/#{Regexp.escape(config_file_path)}/)
|
|
354
355
|
filtered_trace.each { |line| logger.fatal(" " + line ) }
|
|
355
|
-
Chef::
|
|
356
|
+
raise Chef::Exceptions::ConfigurationError.new("Aborting due to error in '#{config_file_path}': #{error}")
|
|
357
|
+
# Chef::Application.fatal!("Aborting due to error in '#{config_file_path}'", Chef::Exceptions::ConfigurationError.new(error))
|
|
356
358
|
end
|
|
357
359
|
|
|
358
360
|
# This is a hook for testing
|
|
@@ -373,8 +375,8 @@ class Chef
|
|
|
373
375
|
chef_stacktrace_out = "Generated at #{Time.now}\n"
|
|
374
376
|
chef_stacktrace_out += message
|
|
375
377
|
|
|
376
|
-
Chef::FileCache.store("#{
|
|
377
|
-
logger.fatal("Stacktrace dumped to #{Chef::FileCache.load("#{
|
|
378
|
+
Chef::FileCache.store("#{ChefUtils::Dist::Infra::SHORT}-stacktrace.out", chef_stacktrace_out)
|
|
379
|
+
logger.fatal("Stacktrace dumped to #{Chef::FileCache.load("#{ChefUtils::Dist::Infra::SHORT}-stacktrace.out", false)}")
|
|
378
380
|
logger.fatal("Please provide the contents of the stacktrace.out file if you file a bug report")
|
|
379
381
|
if Chef::Config[:always_dump_stacktrace]
|
|
380
382
|
logger.fatal(message)
|
|
@@ -27,13 +27,13 @@ require "fileutils" unless defined?(FileUtils)
|
|
|
27
27
|
require "tempfile" unless defined?(Tempfile)
|
|
28
28
|
require_relative "../providers"
|
|
29
29
|
require_relative "../resources"
|
|
30
|
-
|
|
30
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
31
31
|
require "license_acceptance/cli_flags/mixlib_cli"
|
|
32
32
|
|
|
33
33
|
class Chef::Application::Apply < Chef::Application
|
|
34
34
|
include LicenseAcceptance::CLIFlags::MixlibCLI
|
|
35
35
|
|
|
36
|
-
banner "Usage: #{
|
|
36
|
+
banner "Usage: #{ChefUtils::Dist::Apply::EXEC} [RECIPE_FILE | -e RECIPE_TEXT | -s] [OPTIONS]"
|
|
37
37
|
|
|
38
38
|
option :execute,
|
|
39
39
|
short: "-e RECIPE_TEXT",
|
|
@@ -77,6 +77,11 @@ class Chef::Application::Apply < Chef::Application
|
|
|
77
77
|
description: "Set the log level (trace, debug, info, warn, error, fatal).",
|
|
78
78
|
proc: lambda { |l| l.to_sym }
|
|
79
79
|
|
|
80
|
+
option :log_location_cli,
|
|
81
|
+
short: "-L LOGLOCATION",
|
|
82
|
+
long: "--logfile LOGLOCATION",
|
|
83
|
+
description: "Set the log file location, defaults to STDOUT - recommended for daemonizing."
|
|
84
|
+
|
|
80
85
|
option :always_dump_stacktrace,
|
|
81
86
|
long: "--[no-]always-dump-stacktrace",
|
|
82
87
|
boolean: true,
|
|
@@ -95,9 +100,9 @@ class Chef::Application::Apply < Chef::Application
|
|
|
95
100
|
option :version,
|
|
96
101
|
short: "-v",
|
|
97
102
|
long: "--version",
|
|
98
|
-
description: "Show #{
|
|
103
|
+
description: "Show #{ChefUtils::Dist::Infra::PRODUCT} version.",
|
|
99
104
|
boolean: true,
|
|
100
|
-
proc: lambda { |v| puts "#{
|
|
105
|
+
proc: lambda { |v| puts "#{ChefUtils::Dist::Infra::PRODUCT}: #{::Chef::VERSION}" },
|
|
101
106
|
exit: 0
|
|
102
107
|
|
|
103
108
|
option :why_run,
|
|
@@ -114,7 +119,7 @@ class Chef::Application::Apply < Chef::Application
|
|
|
114
119
|
|
|
115
120
|
option :profile_ruby,
|
|
116
121
|
long: "--[no-]profile-ruby",
|
|
117
|
-
description: "Dump complete Ruby call graph stack of entire #{
|
|
122
|
+
description: "Dump complete Ruby call graph stack of entire #{ChefUtils::Dist::Infra::PRODUCT} run (expert only).",
|
|
118
123
|
boolean: true,
|
|
119
124
|
default: false
|
|
120
125
|
|
|
@@ -126,7 +131,7 @@ class Chef::Application::Apply < Chef::Application
|
|
|
126
131
|
|
|
127
132
|
option :minimal_ohai,
|
|
128
133
|
long: "--minimal-ohai",
|
|
129
|
-
description: "Only run the bare minimum Ohai plugins #{
|
|
134
|
+
description: "Only run the bare minimum Ohai plugins #{ChefUtils::Dist::Infra::PRODUCT} needs to function.",
|
|
130
135
|
boolean: true
|
|
131
136
|
|
|
132
137
|
attr_reader :json_attribs
|
|
@@ -176,7 +181,7 @@ class Chef::Application::Apply < Chef::Application
|
|
|
176
181
|
else
|
|
177
182
|
Chef::RunContext.new(@chef_client.node, {}, @chef_client.events)
|
|
178
183
|
end
|
|
179
|
-
recipe = Chef::Recipe.new("(#{
|
|
184
|
+
recipe = Chef::Recipe.new("(#{ChefUtils::Dist::Apply::EXEC} cookbook)", "(#{ChefUtils::Dist::Apply::EXEC} recipe)", run_context)
|
|
180
185
|
[recipe, run_context]
|
|
181
186
|
end
|
|
182
187
|
|
|
@@ -20,11 +20,13 @@ require_relative "../log"
|
|
|
20
20
|
require_relative "../config"
|
|
21
21
|
require_relative "../mixin/shell_out"
|
|
22
22
|
require_relative "../config_fetcher"
|
|
23
|
-
|
|
23
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
24
24
|
require_relative "../daemon"
|
|
25
25
|
require "chef-config/mixin/dot_d"
|
|
26
26
|
require "license_acceptance/cli_flags/mixlib_cli"
|
|
27
|
-
|
|
27
|
+
module Mixlib
|
|
28
|
+
autoload :Archive, "mixlib/archive"
|
|
29
|
+
end
|
|
28
30
|
|
|
29
31
|
# This is a temporary class being used as a part of an effort to reduce duplication
|
|
30
32
|
# between Chef::Application::Client and Chef::Application::Solo.
|
|
@@ -55,7 +57,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
55
57
|
|
|
56
58
|
option :once,
|
|
57
59
|
long: "--once",
|
|
58
|
-
description: "Cancel any interval or splay options, run #{
|
|
60
|
+
description: "Cancel any interval or splay options, run #{ChefUtils::Dist::Infra::PRODUCT} once and exit.",
|
|
59
61
|
boolean: true
|
|
60
62
|
|
|
61
63
|
option :formatter,
|
|
@@ -78,7 +80,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
78
80
|
|
|
79
81
|
option :profile_ruby,
|
|
80
82
|
long: "--[no-]profile-ruby",
|
|
81
|
-
description: "Dump complete Ruby call graph stack of entire #{
|
|
83
|
+
description: "Dump complete Ruby call graph stack of entire #{ChefUtils::Dist::Infra::PRODUCT} run (expert only).",
|
|
82
84
|
boolean: true,
|
|
83
85
|
default: false
|
|
84
86
|
|
|
@@ -134,7 +136,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
134
136
|
option :interval,
|
|
135
137
|
short: "-i SECONDS",
|
|
136
138
|
long: "--interval SECONDS",
|
|
137
|
-
description: "Run #{
|
|
139
|
+
description: "Run #{ChefUtils::Dist::Infra::PRODUCT} periodically, in seconds.",
|
|
138
140
|
proc: lambda { |s| s.to_i }
|
|
139
141
|
|
|
140
142
|
option :json_attribs,
|
|
@@ -158,12 +160,12 @@ class Chef::Application::Base < Chef::Application
|
|
|
158
160
|
option :environment,
|
|
159
161
|
short: "-E ENVIRONMENT",
|
|
160
162
|
long: "--environment ENVIRONMENT",
|
|
161
|
-
description: "Set the #{
|
|
163
|
+
description: "Set the #{ChefUtils::Dist::Infra::PRODUCT} environment on the node."
|
|
162
164
|
|
|
163
165
|
option :client_fork,
|
|
164
166
|
short: "-f",
|
|
165
167
|
long: "--[no-]fork",
|
|
166
|
-
description: "Fork #{
|
|
168
|
+
description: "Fork #{ChefUtils::Dist::Infra::PRODUCT} process."
|
|
167
169
|
|
|
168
170
|
option :why_run,
|
|
169
171
|
short: "-W",
|
|
@@ -190,14 +192,14 @@ class Chef::Application::Base < Chef::Application
|
|
|
190
192
|
option :version,
|
|
191
193
|
short: "-v",
|
|
192
194
|
long: "--version",
|
|
193
|
-
description: "Show #{
|
|
195
|
+
description: "Show #{ChefUtils::Dist::Infra::PRODUCT} version.",
|
|
194
196
|
boolean: true,
|
|
195
|
-
proc: lambda { |v| puts "#{
|
|
197
|
+
proc: lambda { |v| puts "#{ChefUtils::Dist::Infra::PRODUCT}: #{::Chef::VERSION}" },
|
|
196
198
|
exit: 0
|
|
197
199
|
|
|
198
200
|
option :minimal_ohai,
|
|
199
201
|
long: "--minimal-ohai",
|
|
200
|
-
description: "Only run the bare minimum Ohai plugins #{
|
|
202
|
+
description: "Only run the bare minimum Ohai plugins #{ChefUtils::Dist::Infra::PRODUCT} needs to function.",
|
|
201
203
|
boolean: true
|
|
202
204
|
|
|
203
205
|
option :delete_entire_chef_repo,
|
|
@@ -213,7 +215,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
213
215
|
option :target,
|
|
214
216
|
short: "-t TARGET",
|
|
215
217
|
long: "--target TARGET",
|
|
216
|
-
description: "Target #{
|
|
218
|
+
description: "Target #{ChefUtils::Dist::Infra::PRODUCT} against a remote system or device",
|
|
217
219
|
proc: lambda { |target|
|
|
218
220
|
Chef::Log.warn "-- EXPERIMENTAL -- Target mode activated, resources and dsl may change without warning -- EXPERIMENTAL --"
|
|
219
221
|
target
|
|
@@ -228,7 +230,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
228
230
|
option :fatal_windows_admin_check,
|
|
229
231
|
short: "-A",
|
|
230
232
|
long: "--fatal-windows-admin-check",
|
|
231
|
-
description: "Fail the run when #{
|
|
233
|
+
description: "Fail the run when #{ChefUtils::Dist::Infra::CLIENT} doesn't have administrator privileges on Windows.",
|
|
232
234
|
boolean: true
|
|
233
235
|
end
|
|
234
236
|
|
|
@@ -245,7 +247,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
245
247
|
option :chef_server_url,
|
|
246
248
|
short: "-S CHEFSERVERURL",
|
|
247
249
|
long: "--server CHEFSERVERURL",
|
|
248
|
-
description: "The #{
|
|
250
|
+
description: "The #{ChefUtils::Dist::Server::PRODUCT} URL.",
|
|
249
251
|
proc: nil
|
|
250
252
|
|
|
251
253
|
option :validation_key,
|
|
@@ -263,7 +265,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
263
265
|
option :enable_reporting,
|
|
264
266
|
short: "-R",
|
|
265
267
|
long: "--enable-reporting",
|
|
266
|
-
description: "(#{
|
|
268
|
+
description: "(#{ChefUtils::Dist::Infra::CLIENT} only) reporting data collection for runs.",
|
|
267
269
|
boolean: true
|
|
268
270
|
|
|
269
271
|
option :local_mode,
|
|
@@ -274,11 +276,11 @@ class Chef::Application::Base < Chef::Application
|
|
|
274
276
|
|
|
275
277
|
option :chef_zero_host,
|
|
276
278
|
long: "--chef-zero-host HOST",
|
|
277
|
-
description: "Host to start #{
|
|
279
|
+
description: "Host to start #{ChefUtils::Dist::Zero::PRODUCT} on."
|
|
278
280
|
|
|
279
281
|
option :chef_zero_port,
|
|
280
282
|
long: "--chef-zero-port PORT",
|
|
281
|
-
description: "Port (or port range) to start #{
|
|
283
|
+
description: "Port (or port range) to start #{ChefUtils::Dist::Zero::PRODUCT} on. Port ranges like 1000,1010 or 8889-9999 will try all given ports until one works."
|
|
282
284
|
|
|
283
285
|
option :listen,
|
|
284
286
|
long: "--[no-]listen",
|
|
@@ -287,7 +289,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
287
289
|
|
|
288
290
|
option :skip_cookbook_sync,
|
|
289
291
|
long: "--[no-]skip-cookbook-sync",
|
|
290
|
-
description: "(#{
|
|
292
|
+
description: "(#{ChefUtils::Dist::Infra::CLIENT} only) Use cached cookbooks without overwriting local differences from the #{ChefUtils::Dist::Server::PRODUCT}.",
|
|
291
293
|
boolean: false
|
|
292
294
|
|
|
293
295
|
option :named_run_list,
|
|
@@ -326,7 +328,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
326
328
|
# Run the chef client, optionally daemonizing or looping at intervals.
|
|
327
329
|
def run_application
|
|
328
330
|
if Chef::Config[:version]
|
|
329
|
-
puts "#{
|
|
331
|
+
puts "#{ChefUtils::Dist::Infra::PRODUCT} version: #{::Chef::VERSION}"
|
|
330
332
|
end
|
|
331
333
|
|
|
332
334
|
if !Chef::Config[:client_fork] || Chef::Config[:once]
|
|
@@ -346,24 +348,25 @@ class Chef::Application::Base < Chef::Application
|
|
|
346
348
|
private
|
|
347
349
|
|
|
348
350
|
def windows_interval_error_message
|
|
349
|
-
"Windows #{
|
|
351
|
+
"Windows #{ChefUtils::Dist::Infra::PRODUCT} interval runs are not supported in #{ChefUtils::Dist::Infra::PRODUCT} 15 and later." +
|
|
350
352
|
"\nConfiguration settings:" +
|
|
351
353
|
("\n interval = #{Chef::Config[:interval]} seconds" if Chef::Config[:interval]).to_s +
|
|
352
|
-
"\nPlease manage #{
|
|
354
|
+
"\nPlease manage #{ChefUtils::Dist::Infra::PRODUCT} as a scheduled task instead."
|
|
353
355
|
end
|
|
354
356
|
|
|
355
357
|
def unforked_interval_error_message
|
|
356
|
-
"Unforked #{
|
|
358
|
+
"Unforked #{ChefUtils::Dist::Infra::PRODUCT} interval runs are disabled by default." +
|
|
357
359
|
"\nConfiguration settings:" +
|
|
358
360
|
("\n interval = #{Chef::Config[:interval]} seconds" if Chef::Config[:interval]).to_s +
|
|
359
|
-
"\nEnable #{
|
|
361
|
+
"\nEnable #{ChefUtils::Dist::Infra::PRODUCT} interval runs by setting `:client_fork = true` in your config file or adding `--fork` to your command line options."
|
|
360
362
|
end
|
|
361
363
|
|
|
362
364
|
def fetch_recipe_tarball(url, path)
|
|
365
|
+
require "open-uri" unless defined?(OpenURI)
|
|
363
366
|
Chef::Log.trace("Download recipes tarball from #{url} to #{path}")
|
|
364
367
|
if File.exist?(url)
|
|
365
368
|
FileUtils.cp(url, path)
|
|
366
|
-
elsif URI.
|
|
369
|
+
elsif URI::DEFAULT_PARSER.make_regexp.match?(url)
|
|
367
370
|
File.open(path, "wb") do |f|
|
|
368
371
|
open(url) do |r|
|
|
369
372
|
f.write(r.read)
|
|
@@ -377,7 +380,7 @@ class Chef::Application::Base < Chef::Application
|
|
|
377
380
|
|
|
378
381
|
def interval_run_chef_client
|
|
379
382
|
if Chef::Config[:daemonize]
|
|
380
|
-
Chef::Daemon.daemonize(
|
|
383
|
+
Chef::Daemon.daemonize(ChefUtils::Dist::Infra::PRODUCT)
|
|
381
384
|
|
|
382
385
|
# Start first daemonized run after configured number of seconds
|
|
383
386
|
if Chef::Config[:daemonize].is_a?(Integer)
|