chef 16.4.41 → 16.5.64
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 +1 -1
- data/Rakefile +2 -2
- data/bin/knife +1 -1
- data/chef.gemspec +2 -1
- data/lib/chef/application.rb +18 -16
- data/lib/chef/application/apply.rb +12 -7
- data/lib/chef/application/base.rb +26 -23
- data/lib/chef/application/client.rb +10 -4
- 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/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +10 -11
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/data_collector.rb +6 -5
- 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/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +4 -4
- data/lib/chef/file_access_control/windows.rb +5 -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/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 +2 -2
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/http.rb +6 -4
- 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 +1 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +16 -14
- 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 +7 -7
- 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/object_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +16 -1
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- 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/deep_merge.rb +0 -12
- data/lib/chef/mixin/openssl_helper.rb +1 -4
- data/lib/chef/mixin/template.rb +2 -2
- data/lib/chef/mixin/uris.rb +2 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/monkey_patches/net_http.rb +4 -4
- data/lib/chef/node_map.rb +2 -2
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/provider.rb +0 -4
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +1 -1
- data/lib/chef/provider/launchd.rb +2 -2
- data/lib/chef/provider/mount/linux.rb +63 -0
- data/lib/chef/provider/package/rubygems.rb +21 -18
- data/lib/chef/provider/package/snap.rb +0 -1
- 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/zypper.rb +1 -1
- 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 +2 -6
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/mac.rb +1 -1
- data/lib/chef/provider/windows_task.rb +1 -2
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +1 -1
- data/lib/chef/resource/apt_repository.rb +1 -1
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +57 -2
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_cron.rb +32 -25
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
- data/lib/chef/resource/chef_client_systemd_timer.rb +24 -17
- 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 +148 -4
- data/lib/chef/resource/chef_sleep.rb +2 -2
- 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_d.rb +0 -1
- 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 +2 -2
- data/lib/chef/resource/execute.rb +6 -6
- 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 +5 -5
- data/lib/chef/resource/hostname.rb +2 -2
- data/lib/chef/resource/launchd.rb +2 -1
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- 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/plist.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +5 -5
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- 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 +2 -2
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +10 -3
- data/lib/chef/resource/windows_certificate.rb +6 -4
- data/lib/chef/resource/windows_firewall_profile.rb +22 -20
- data/lib/chef/resource/windows_package.rb +28 -5
- data/lib/chef/resource/windows_printer.rb +5 -3
- data/lib/chef/resource/windows_printer_port.rb +6 -4
- data/lib/chef/resource/windows_user_privilege.rb +53 -54
- data/lib/chef/resource/windows_workgroup.rb +3 -3
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resources.rb +3 -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 +2 -2
- data/lib/chef/search/query.rb +4 -5
- data/lib/chef/shell.rb +31 -26
- data/lib/chef/shell/ext.rb +11 -11
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/diff.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.rb +3 -1
- 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/crypto.rb +1 -1
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/shef-config.rb +1 -1
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/insserv_spec.rb +1 -1
- 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_task_spec.rb +13 -13
- data/spec/functional/version_spec.rb +3 -3
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_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/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +6 -3
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/platform_helpers.rb +16 -34
- 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/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/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- 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 -113
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +6 -6
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/ssh_spec.rb +2 -2
- 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 +1 -1
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/node/immutable_collections_spec.rb +2 -2
- data/spec/unit/provider/mount/linux_spec.rb +97 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/recipe_spec.rb +1 -1
- 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/launchd_spec.rb +8 -0
- data/spec/unit/resource/osx_profile_spec.rb +67 -1
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- 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 +16 -19
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +0 -2
- metadata +41 -17
- data/lib/chef/dist.rb +0 -68
- data/spec/integration/knife/config_get_profile_spec.rb +0 -114
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# See the License for the specific language governing permissions and
|
|
17
17
|
# limitations under the License.
|
|
18
18
|
#
|
|
19
|
-
|
|
19
|
+
require "chef-utils" unless defined?(ChefUtils)
|
|
20
20
|
|
|
21
21
|
class Chef
|
|
22
22
|
module Formatters
|
|
@@ -56,7 +56,7 @@ class Chef
|
|
|
56
56
|
require_relative "../../win32/security"
|
|
57
57
|
|
|
58
58
|
unless Chef::ReservedNames::Win32::Security.has_admin_privileges?
|
|
59
|
-
error_description.section("Missing Windows Admin Privileges", "#{
|
|
59
|
+
error_description.section("Missing Windows Admin Privileges", "#{ChefUtils::Dist::Infra::CLIENT} doesn't have administrator privileges. This can be a possible reason for the resource failure.")
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
#
|
|
19
19
|
|
|
20
20
|
require_relative "api_error_formatting"
|
|
21
|
-
|
|
21
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
22
22
|
|
|
23
23
|
class Chef
|
|
24
24
|
module Formatters
|
|
@@ -78,7 +78,7 @@ class Chef
|
|
|
78
78
|
case response
|
|
79
79
|
when Net::HTTPUnauthorized
|
|
80
80
|
error_description.section("Authentication Error:", <<~E)
|
|
81
|
-
Failed to authenticate to the #{
|
|
81
|
+
Failed to authenticate to the #{ChefUtils::Dist::Server::PRODUCT} (http 401).
|
|
82
82
|
E
|
|
83
83
|
|
|
84
84
|
error_description.section("Server Response:", format_rest_error)
|
|
@@ -109,7 +109,7 @@ class Chef
|
|
|
109
109
|
E
|
|
110
110
|
error_description.section("Server Response:", format_rest_error)
|
|
111
111
|
when Net::HTTPBadGateway, Net::HTTPServiceUnavailable
|
|
112
|
-
error_description.section("Server Unavailable", "The #{
|
|
112
|
+
error_description.section("Server Unavailable", "The #{ChefUtils::Dist::Server::PRODUCT} is temporarily unavailable")
|
|
113
113
|
error_description.section("Server Response:", format_rest_error)
|
|
114
114
|
else
|
|
115
115
|
error_description.section("Unexpected API Request Failure:", format_rest_error)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require_relative "base"
|
|
2
|
-
|
|
2
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
3
3
|
|
|
4
4
|
class Chef
|
|
5
5
|
|
|
@@ -28,19 +28,20 @@ class Chef
|
|
|
28
28
|
|
|
29
29
|
# Called at the very start of a Chef Run
|
|
30
30
|
def run_start(version, run_status)
|
|
31
|
-
puts_line "Starting #{
|
|
31
|
+
puts_line "Starting #{ChefUtils::Dist::Infra::PRODUCT}, version #{version}"
|
|
32
|
+
puts_line "Patents: #{ChefUtils::Dist::Org::PATENTS}"
|
|
32
33
|
puts_line "Targeting node: #{Chef::Config.target_mode.host}" if Chef::Config.target_mode?
|
|
33
34
|
puts_line "OpenSSL FIPS 140 mode enabled" if Chef::Config[:fips]
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
# Called at the end of the Chef run.
|
|
37
38
|
def run_completed(node)
|
|
38
|
-
puts "#{
|
|
39
|
+
puts "#{ChefUtils::Dist::Infra::PRODUCT} finished, #{@updated_resources.size} resources updated"
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
# called at the end of a failed run
|
|
42
43
|
def run_failed(exception)
|
|
43
|
-
puts "#{
|
|
44
|
+
puts "#{ChefUtils::Dist::Infra::PRODUCT} failed. #{@updated_resources.size} resources updated"
|
|
44
45
|
end
|
|
45
46
|
|
|
46
47
|
# Called right after ohai runs.
|
data/lib/chef/http.rb
CHANGED
|
@@ -22,11 +22,13 @@
|
|
|
22
22
|
#
|
|
23
23
|
|
|
24
24
|
require "tempfile" unless defined?(Tempfile)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
autoload :OpenSSL, "openssl"
|
|
26
|
+
autoload :URI, "uri"
|
|
27
|
+
module Net
|
|
28
|
+
autoload :HTTP, File.expand_path("monkey_patches/net_http", __dir__)
|
|
29
|
+
autoload :HTTPClientException, File.expand_path("monkey_patches/net_http", __dir__)
|
|
30
|
+
end
|
|
28
31
|
require_relative "http/basic_client"
|
|
29
|
-
require_relative "monkey_patches/net_http"
|
|
30
32
|
require_relative "config"
|
|
31
33
|
require_relative "platform/query_helpers"
|
|
32
34
|
require_relative "exceptions"
|
|
@@ -21,7 +21,11 @@
|
|
|
21
21
|
# limitations under the License.
|
|
22
22
|
#
|
|
23
23
|
require_relative "../log"
|
|
24
|
-
|
|
24
|
+
module Mixlib
|
|
25
|
+
module Authentication
|
|
26
|
+
autoload :SignedHeaderAuth, "mixlib/authentication/signedheaderauth"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
25
29
|
|
|
26
30
|
class Chef
|
|
27
31
|
class HTTP
|
|
@@ -20,8 +20,10 @@
|
|
|
20
20
|
# See the License for the specific language governing permissions and
|
|
21
21
|
# limitations under the License.
|
|
22
22
|
#
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
autoload :URI, "uri"
|
|
24
|
+
module Net
|
|
25
|
+
autoload :HTTP, File.expand_path("../monkey_patches/net_http", __dir__)
|
|
26
|
+
end
|
|
25
27
|
require_relative "ssl_policies"
|
|
26
28
|
require_relative "http_request"
|
|
27
29
|
|
|
@@ -20,10 +20,12 @@
|
|
|
20
20
|
# See the License for the specific language governing permissions and
|
|
21
21
|
# limitations under the License.
|
|
22
22
|
#
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
autoload :URI, "uri"
|
|
24
|
+
autoload :CGI, "cgi"
|
|
25
|
+
module Net
|
|
26
|
+
autoload :HTTP, File.expand_path("../monkey_patches/net_http", __dir__)
|
|
27
|
+
end
|
|
28
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
27
29
|
|
|
28
30
|
# To load faster, we only want ohai's version string.
|
|
29
31
|
# However, in ohai before 0.6.0, the version is defined
|
|
@@ -42,7 +44,7 @@ class Chef
|
|
|
42
44
|
|
|
43
45
|
engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
|
|
44
46
|
|
|
45
|
-
UA_COMMON = "/#{::Chef::VERSION} (#{engine}-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}; ohai-#{Ohai::VERSION}; #{RUBY_PLATFORM}; +#{
|
|
47
|
+
UA_COMMON = "/#{::Chef::VERSION} (#{engine}-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}; ohai-#{Ohai::VERSION}; #{RUBY_PLATFORM}; +#{ChefUtils::Dist::Org::WEBSITE})".freeze
|
|
46
48
|
DEFAULT_UA = "Chef Client" << UA_COMMON
|
|
47
49
|
|
|
48
50
|
USER_AGENT = "User-Agent".freeze
|
|
@@ -44,7 +44,10 @@
|
|
|
44
44
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
45
45
|
|
|
46
46
|
require "chef_zero/server"
|
|
47
|
-
|
|
47
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
48
|
+
module Net
|
|
49
|
+
autoload :HTTPResponse, File.expand_path("../monkey_patches/net_http", __dir__)
|
|
50
|
+
end
|
|
48
51
|
|
|
49
52
|
class Chef
|
|
50
53
|
class HTTP
|
|
@@ -64,7 +67,7 @@ class Chef
|
|
|
64
67
|
# or else streaming-style responses won't work.
|
|
65
68
|
def read_body(dest = nil, &block)
|
|
66
69
|
if dest
|
|
67
|
-
raise "responses from socketless #{
|
|
70
|
+
raise "responses from socketless #{ChefUtils::Dist::Zero::PRODUCT} can't be written to specific destination"
|
|
68
71
|
end
|
|
69
72
|
|
|
70
73
|
if block_given?
|
data/lib/chef/json_compat.rb
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
# Wrapper class for interacting with JSON.
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
autoload :FFI_Yajl, "ffi_yajl"
|
|
21
21
|
require_relative "exceptions"
|
|
22
22
|
# We're requiring this to prevent breaking consumers using Hash.to_json
|
|
23
23
|
require "json" unless defined?(JSON)
|
data/lib/chef/knife.rb
CHANGED
|
@@ -21,6 +21,7 @@ require "forwardable" unless defined?(Forwardable)
|
|
|
21
21
|
require_relative "version"
|
|
22
22
|
require "mixlib/cli" unless defined?(Mixlib::CLI)
|
|
23
23
|
require "chef-utils/dsl/default_paths" unless defined?(ChefUtils::DSL::DefaultPaths)
|
|
24
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
24
25
|
require_relative "workstation_config_loader"
|
|
25
26
|
require_relative "mixin/convert_to_class_name"
|
|
26
27
|
require_relative "mixin/default_paths"
|
|
@@ -32,12 +33,11 @@ require_relative "http/authenticator"
|
|
|
32
33
|
require_relative "http/http_request"
|
|
33
34
|
require_relative "http"
|
|
34
35
|
require "pp" unless defined?(PP)
|
|
35
|
-
require_relative "dist"
|
|
36
36
|
|
|
37
37
|
class Chef
|
|
38
38
|
class Knife
|
|
39
39
|
|
|
40
|
-
Chef::HTTP::HTTPRequest.user_agent = "#{
|
|
40
|
+
Chef::HTTP::HTTPRequest.user_agent = "#{ChefUtils::Dist::Infra::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
|
|
41
41
|
|
|
42
42
|
include Mixlib::CLI
|
|
43
43
|
include ChefUtils::DSL::DefaultPaths
|
|
@@ -282,7 +282,7 @@ class Chef
|
|
|
282
282
|
elsif category_commands = guess_category(args)
|
|
283
283
|
list_commands(category_commands)
|
|
284
284
|
elsif OFFICIAL_PLUGINS.include?(args[0]) # command was an uninstalled official chef knife plugin
|
|
285
|
-
ui.info("Use `#{
|
|
285
|
+
ui.info("Use `#{ChefUtils::Dist::Infra::EXEC} gem install knife-#{args[0]}` to install the plugin into Chef Workstation")
|
|
286
286
|
else
|
|
287
287
|
list_commands
|
|
288
288
|
end
|
|
@@ -564,7 +564,7 @@ class Chef
|
|
|
564
564
|
ui.error "The API version that Knife is using is not supported by the server you sent this request to."
|
|
565
565
|
ui.info "The request that Knife sent was using API version #{client_api_version}."
|
|
566
566
|
ui.info "The server you sent the request to supports a min API version of #{min_server_version} and a max API version of #{max_server_version}."
|
|
567
|
-
ui.info "Please either update your #{
|
|
567
|
+
ui.info "Please either update your #{ChefUtils::Dist::Infra::PRODUCT} or the server to be a compatible set."
|
|
568
568
|
else
|
|
569
569
|
ui.error response.message
|
|
570
570
|
ui.info "Response: #{format_rest_error(response)}"
|
data/lib/chef/knife/bootstrap.rb
CHANGED
|
@@ -18,9 +18,11 @@
|
|
|
18
18
|
|
|
19
19
|
require_relative "../knife"
|
|
20
20
|
require_relative "data_bag_secret_options"
|
|
21
|
-
|
|
21
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
22
22
|
require "license_acceptance/cli_flags/mixlib_cli"
|
|
23
|
-
|
|
23
|
+
module LicenseAcceptance
|
|
24
|
+
autoload :Acceptor, "license_acceptance/acceptor"
|
|
25
|
+
end
|
|
24
26
|
|
|
25
27
|
class Chef
|
|
26
28
|
class Knife
|
|
@@ -144,7 +146,7 @@ class Chef
|
|
|
144
146
|
# client.rb content via chef-full/bootstrap_context
|
|
145
147
|
option :bootstrap_version,
|
|
146
148
|
long: "--bootstrap-version VERSION",
|
|
147
|
-
description: "The version of #{
|
|
149
|
+
description: "The version of #{ChefUtils::Dist::Infra::PRODUCT} to install."
|
|
148
150
|
|
|
149
151
|
option :channel,
|
|
150
152
|
long: "--channel CHANNEL",
|
|
@@ -176,7 +178,7 @@ class Chef
|
|
|
176
178
|
option :bootstrap_template,
|
|
177
179
|
short: "-t TEMPLATE",
|
|
178
180
|
long: "--bootstrap-template TEMPLATE",
|
|
179
|
-
description: "Bootstrap #{
|
|
181
|
+
description: "Bootstrap #{ChefUtils::Dist::Infra::PRODUCT} using a built-in or custom template. Set to the full path of an erb template or use one of the built-in templates."
|
|
180
182
|
|
|
181
183
|
# client.rb content via bootstrap_context
|
|
182
184
|
option :node_ssl_verify_mode,
|
|
@@ -194,7 +196,7 @@ class Chef
|
|
|
194
196
|
# bootstrap_context - client.rb
|
|
195
197
|
option :node_verify_api_cert,
|
|
196
198
|
long: "--[no-]node-verify-api-cert",
|
|
197
|
-
description: "Verify the SSL cert for HTTPS requests to the #{
|
|
199
|
+
description: "Verify the SSL cert for HTTPS requests to the #{ChefUtils::Dist::Server::PRODUCT} API.",
|
|
198
200
|
boolean: true
|
|
199
201
|
|
|
200
202
|
# runtime - sudo settings (train handles sudo)
|
|
@@ -252,14 +254,14 @@ class Chef
|
|
|
252
254
|
option :first_boot_attributes,
|
|
253
255
|
short: "-j JSON_ATTRIBS",
|
|
254
256
|
long: "--json-attributes",
|
|
255
|
-
description: "A JSON string to be added to the first run of #{
|
|
257
|
+
description: "A JSON string to be added to the first run of #{ChefUtils::Dist::Infra::CLIENT}.",
|
|
256
258
|
proc: lambda { |o| Chef::JSONCompat.parse(o) },
|
|
257
259
|
default: nil
|
|
258
260
|
|
|
259
261
|
# bootstrap template
|
|
260
262
|
option :first_boot_attributes_from_file,
|
|
261
263
|
long: "--json-attribute-file FILE",
|
|
262
|
-
description: "A JSON file to be used to the first run of #{
|
|
264
|
+
description: "A JSON file to be used to the first run of #{ChefUtils::Dist::Infra::CLIENT}.",
|
|
263
265
|
proc: lambda { |o| Chef::JSONCompat.parse(File.read(o)) },
|
|
264
266
|
default: nil
|
|
265
267
|
|
|
@@ -290,28 +292,28 @@ class Chef
|
|
|
290
292
|
option :msi_url, # Windows target only
|
|
291
293
|
short: "-m URL",
|
|
292
294
|
long: "--msi-url URL",
|
|
293
|
-
description: "Location of the #{
|
|
295
|
+
description: "Location of the #{ChefUtils::Dist::Infra::PRODUCT} MSI. The default templates will prefer to download from this location. The MSI will be downloaded from #{ChefUtils::Dist::Org::WEBSITE} if not provided (Windows).",
|
|
294
296
|
default: ""
|
|
295
297
|
|
|
296
298
|
# bootstrap override: Do this instead of our own setup.sh from omnitruck. Causes bootstrap_url to be ignored.
|
|
297
299
|
option :bootstrap_install_command,
|
|
298
300
|
long: "--bootstrap-install-command COMMANDS",
|
|
299
|
-
description: "Custom command to install #{
|
|
301
|
+
description: "Custom command to install #{ChefUtils::Dist::Infra::PRODUCT}."
|
|
300
302
|
|
|
301
303
|
# bootstrap template: Run this command first in the bootstrap script
|
|
302
304
|
option :bootstrap_preinstall_command,
|
|
303
305
|
long: "--bootstrap-preinstall-command COMMANDS",
|
|
304
|
-
description: "Custom commands to run before installing #{
|
|
306
|
+
description: "Custom commands to run before installing #{ChefUtils::Dist::Infra::PRODUCT}."
|
|
305
307
|
|
|
306
308
|
# bootstrap template
|
|
307
309
|
option :bootstrap_wget_options,
|
|
308
310
|
long: "--bootstrap-wget-options OPTIONS",
|
|
309
|
-
description: "Add options to wget when installing #{
|
|
311
|
+
description: "Add options to wget when installing #{ChefUtils::Dist::Infra::PRODUCT}."
|
|
310
312
|
|
|
311
313
|
# bootstrap template
|
|
312
314
|
option :bootstrap_curl_options,
|
|
313
315
|
long: "--bootstrap-curl-options OPTIONS",
|
|
314
|
-
description: "Add options to curl when install #{
|
|
316
|
+
description: "Add options to curl when install #{ChefUtils::Dist::Infra::PRODUCT}."
|
|
315
317
|
|
|
316
318
|
# chef_vault_handler
|
|
317
319
|
option :bootstrap_vault_file,
|
|
@@ -487,7 +489,7 @@ class Chef
|
|
|
487
489
|
|
|
488
490
|
# Otherwise search the template directories until we find the right one
|
|
489
491
|
bootstrap_files = []
|
|
490
|
-
bootstrap_files << File.join(
|
|
492
|
+
bootstrap_files << File.join(__dir__, "bootstrap/templates", "#{template}.erb")
|
|
491
493
|
bootstrap_files << File.join(Knife.chef_config_dir, "bootstrap", "#{template}.erb") if Chef::Knife.chef_config_dir
|
|
492
494
|
Chef::Util::PathHelper.home(".chef", "bootstrap", "#{template}.erb") { |p| bootstrap_files << p }
|
|
493
495
|
bootstrap_files << Gem.find_files(File.join("chef", "knife", "bootstrap", "#{template}.erb"))
|
|
@@ -538,7 +540,7 @@ class Chef
|
|
|
538
540
|
end
|
|
539
541
|
|
|
540
542
|
def run
|
|
541
|
-
check_license if
|
|
543
|
+
check_license if ChefUtils::Dist::Org::ENFORCE_LICENSE
|
|
542
544
|
|
|
543
545
|
plugin_setup!
|
|
544
546
|
validate_name_args!
|
|
@@ -112,7 +112,7 @@ class Chef
|
|
|
112
112
|
if bootstrap_vault_item
|
|
113
113
|
bootstrap_vault_item
|
|
114
114
|
else
|
|
115
|
-
json = bootstrap_vault_json
|
|
115
|
+
json = bootstrap_vault_json || File.read(bootstrap_vault_file)
|
|
116
116
|
Chef::JSONCompat.from_json(json)
|
|
117
117
|
end
|
|
118
118
|
end
|
|
@@ -172,8 +172,8 @@ do_download() {
|
|
|
172
172
|
<%= @config[:bootstrap_install_command] %>
|
|
173
173
|
<% else %>
|
|
174
174
|
install_sh="<%= @config[:bootstrap_url] ? @config[:bootstrap_url] : "https://omnitruck.chef.io/chef/install.sh" %>"
|
|
175
|
-
if test -f /usr/bin/<%=
|
|
176
|
-
echo "-----> Existing <%=
|
|
175
|
+
if test -f /usr/bin/<%= ChefUtils::Dist::Infra::CLIENT %>; then
|
|
176
|
+
echo "-----> Existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation detected"
|
|
177
177
|
else
|
|
178
178
|
echo "-----> Installing Chef Omnibus (<%= @config[:channel] %>/<%= version_to_install %>)"
|
|
179
179
|
do_download ${install_sh} $tmp_dir/install.sh
|
|
@@ -237,6 +237,6 @@ mkdir -p /etc/chef/client.d
|
|
|
237
237
|
<%= client_d %>
|
|
238
238
|
<% end -%>
|
|
239
239
|
|
|
240
|
-
echo "Starting the first <%=
|
|
240
|
+
echo "Starting the first <%= ChefUtils::Dist::Infra::PRODUCT %> Client run..."
|
|
241
241
|
|
|
242
242
|
<%= start_chef %>
|
|
@@ -109,13 +109,13 @@ goto Version10.0
|
|
|
109
109
|
goto chef_installed
|
|
110
110
|
|
|
111
111
|
:chef_installed
|
|
112
|
-
@echo Checking for existing <%=
|
|
113
|
-
WHERE <%=
|
|
112
|
+
@echo Checking for existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation
|
|
113
|
+
WHERE <%= ChefUtils::Dist::Infra::CLIENT %> >nul 2>nul
|
|
114
114
|
If !ERRORLEVEL!==0 (
|
|
115
|
-
@echo Existing <%=
|
|
115
|
+
@echo Existing <%= ChefUtils::Dist::Infra::PRODUCT %> installation detected, skipping download
|
|
116
116
|
goto key_create
|
|
117
117
|
) else (
|
|
118
|
-
@echo No existing installation of <%=
|
|
118
|
+
@echo No existing installation of <%= ChefUtils::Dist::Infra::PRODUCT %> detected
|
|
119
119
|
goto install
|
|
120
120
|
)
|
|
121
121
|
|
|
@@ -127,7 +127,7 @@ If !ERRORLEVEL!==0 (
|
|
|
127
127
|
@rem Install Chef using the MSI installer
|
|
128
128
|
|
|
129
129
|
@set "LOCAL_DESTINATION_MSI_PATH=<%= local_download_path %>"
|
|
130
|
-
@set "CHEF_CLIENT_MSI_LOG_PATH=%TEMP%\<%=
|
|
130
|
+
@set "CHEF_CLIENT_MSI_LOG_PATH=%TEMP%\<%= ChefUtils::Dist::Infra::CLIENT %>-msi%RANDOM%.log"
|
|
131
131
|
|
|
132
132
|
@rem Clear any pre-existing downloads
|
|
133
133
|
@echo Checking for existing downloaded package at "%LOCAL_DESTINATION_MSI_PATH%"
|
|
@@ -197,7 +197,7 @@ If !ERRORLEVEL!==0 (
|
|
|
197
197
|
<%= install_chef %>
|
|
198
198
|
|
|
199
199
|
@if ERRORLEVEL 1 (
|
|
200
|
-
echo <%=
|
|
200
|
+
echo <%= ChefUtils::Dist::Infra::CLIENT %> package failed to install with status code !ERRORLEVEL!. > "&2"
|
|
201
201
|
echo See installation log for additional detail: %CHEF_CLIENT_MSI_LOG_PATH%. > "&2"
|
|
202
202
|
) else (
|
|
203
203
|
@echo Installation completed successfully
|
|
@@ -274,5 +274,5 @@ echo Validation key written.
|
|
|
274
274
|
<%= client_d %>
|
|
275
275
|
<% end -%>
|
|
276
276
|
|
|
277
|
-
@echo Starting <%=
|
|
277
|
+
@echo Starting <%= ChefUtils::Dist::Infra::CLIENT %> to bootstrap the node...
|
|
278
278
|
<%= start_chef %>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require_relative "../knife"
|
|
20
|
-
|
|
20
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
|
21
21
|
|
|
22
22
|
class Chef
|
|
23
23
|
class Knife
|
|
@@ -30,7 +30,7 @@ class Chef
|
|
|
30
30
|
option :file,
|
|
31
31
|
short: "-f FILE",
|
|
32
32
|
long: "--file FILE",
|
|
33
|
-
description: "Write the private key to a file if the #{
|
|
33
|
+
description: "Write the private key to a file if the #{ChefUtils::Dist::Server::PRODUCT} generated one."
|
|
34
34
|
|
|
35
35
|
option :validator,
|
|
36
36
|
long: "--validator",
|
|
@@ -45,7 +45,7 @@ class Chef
|
|
|
45
45
|
option :prevent_keygen,
|
|
46
46
|
short: "-k",
|
|
47
47
|
long: "--prevent-keygen",
|
|
48
|
-
description: "Prevent #{
|
|
48
|
+
description: "Prevent #{ChefUtils::Dist::Server::PRODUCT} from generating a default key pair for you. Cannot be passed with --public-key.",
|
|
49
49
|
boolean: true
|
|
50
50
|
|
|
51
51
|
banner "knife client create CLIENTNAME (options)"
|