chef 16.4.41-universal-mingw32 → 16.5.64-universal-mingw32
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/distro/templates/powershell/chef/chef.psm1.erb +18 -18
- data/ext/win32-eventlog/Rakefile +2 -2
- data/ext/win32-eventlog/chef-log.man.erb +4 -4
- 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
@@ -21,7 +21,7 @@ require_relative "../../resource/windows_package"
|
|
21
21
|
require_relative "../package"
|
22
22
|
require_relative "../../util/path_helper"
|
23
23
|
require_relative "../../mixin/checksum"
|
24
|
-
|
24
|
+
autoload :CGI, "cgi"
|
25
25
|
|
26
26
|
class Chef
|
27
27
|
class Provider
|
@@ -33,7 +33,7 @@ class Chef
|
|
33
33
|
provides :package, os: "windows"
|
34
34
|
provides :windows_package
|
35
35
|
|
36
|
-
|
36
|
+
autoload :RegistryUninstallEntry, ::File.expand_path("windows/registry_uninstall_entry.rb", __dir__)
|
37
37
|
|
38
38
|
def define_resource_requirements
|
39
39
|
if new_resource.checksum
|
@@ -17,7 +17,9 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
#
|
19
19
|
|
20
|
-
|
20
|
+
module Win32
|
21
|
+
autoload :Registry, File.expand_path("../../../monkey_patches/win32/registry", __dir__) if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
22
|
+
end
|
21
23
|
|
22
24
|
class Chef
|
23
25
|
class Provider
|
@@ -21,6 +21,9 @@ require "uri" unless defined?(URI)
|
|
21
21
|
require "tempfile" unless defined?(Tempfile)
|
22
22
|
require_relative "../../file_content_management/content_base"
|
23
23
|
require_relative "../../mixin/uris"
|
24
|
+
module Net
|
25
|
+
autoload :FTPError, "net/ftp"
|
26
|
+
end
|
24
27
|
|
25
28
|
class Chef
|
26
29
|
class Provider
|
@@ -16,10 +16,12 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
autoload :URI, "uri"
|
20
|
+
autoload :CGI, "cgi"
|
21
|
+
autoload :Tempfile, "tempfile"
|
22
|
+
module Net
|
23
|
+
autoload :FTP, "net/ftp"
|
24
|
+
end
|
23
25
|
require_relative "../remote_file"
|
24
26
|
require_relative "../../file_content_management/tempfile"
|
25
27
|
|
@@ -16,10 +16,12 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
autoload :URI, "uri"
|
20
|
+
autoload :CGI, "cgi"
|
21
|
+
autoload :Tempfile, "tempfile"
|
22
|
+
module Net
|
23
|
+
autoload :SFTP, "net/sftp"
|
24
|
+
end
|
23
25
|
require_relative "../remote_file"
|
24
26
|
require_relative "../../file_content_management/tempfile"
|
25
27
|
|
data/lib/chef/provider/route.rb
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
require_relative "../log"
|
21
21
|
require_relative "../provider"
|
22
|
-
|
22
|
+
autoload :IPAddr, "ipaddr"
|
23
23
|
|
24
24
|
class Chef
|
25
25
|
class Provider
|
@@ -169,11 +169,7 @@ class Chef
|
|
169
169
|
next unless resource.is_a? Chef::Resource::Route
|
170
170
|
|
171
171
|
# default to eth0
|
172
|
-
dev =
|
173
|
-
resource.device
|
174
|
-
else
|
175
|
-
"eth0"
|
176
|
-
end
|
172
|
+
dev = resource.device || "eth0"
|
177
173
|
|
178
174
|
conf[dev] = "" if conf[dev].nil?
|
179
175
|
case @action
|
@@ -18,7 +18,7 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
require "etc" unless defined?(Etc)
|
21
|
-
|
21
|
+
autoload :REXML, "rexml/document"
|
22
22
|
require_relative "../../resource/service"
|
23
23
|
require_relative "../../resource/macosx_service"
|
24
24
|
require_relative "simple"
|
@@ -47,7 +47,7 @@ class Chef
|
|
47
47
|
@current_resource = Chef::Resource::MacosxService.new(@new_resource.name)
|
48
48
|
@current_resource.service_name(@new_resource.service_name)
|
49
49
|
@plist_size = 0
|
50
|
-
@plist = @new_resource.plist
|
50
|
+
@plist = @new_resource.plist || find_service_plist
|
51
51
|
@service_label = find_service_label
|
52
52
|
# LaunchAgents should be loaded as the console user.
|
53
53
|
@console_user = @plist ? @plist.include?("LaunchAgents") : false
|
@@ -43,19 +43,11 @@ class Chef
|
|
43
43
|
protected
|
44
44
|
|
45
45
|
def template_source_name(name, options)
|
46
|
-
|
47
|
-
options[:source]
|
48
|
-
else
|
49
|
-
name
|
50
|
-
end
|
46
|
+
options[:source] || name
|
51
47
|
end
|
52
48
|
|
53
49
|
def find_cookbook_name(options)
|
54
|
-
|
55
|
-
options[:cookbook]
|
56
|
-
else
|
57
|
-
@cookbook_name
|
58
|
-
end
|
50
|
+
options[:cookbook] || @cookbook_name
|
59
51
|
end
|
60
52
|
end
|
61
53
|
end
|
@@ -19,8 +19,8 @@
|
|
19
19
|
require_relative "../../mixin/shell_out"
|
20
20
|
require_relative "../user"
|
21
21
|
require_relative "../../resource/user/dscl_user"
|
22
|
-
|
23
|
-
|
22
|
+
autoload :OpenSSL, "openssl"
|
23
|
+
autoload :Plist, "plist"
|
24
24
|
require_relative "../../util/path_helper"
|
25
25
|
|
26
26
|
class Chef
|
@@ -587,7 +587,7 @@ in 'password', with the associated 'salt' and 'iterations'.")
|
|
587
587
|
result = shell_out("dscl", ".", "-#{args[0]}", args[1..-1])
|
588
588
|
return "" if ( args.first =~ /^delete/ ) && ( result.exitstatus != 0 )
|
589
589
|
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") unless result.exitstatus == 0
|
590
|
-
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if
|
590
|
+
raise(Chef::Exceptions::DsclCommandFailed, "dscl error: #{result.inspect}") if result.stdout.include?("No such key: ")
|
591
591
|
|
592
592
|
result.stdout
|
593
593
|
end
|
@@ -16,8 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
require "iso8601" if ChefUtils.windows?
|
19
|
+
autoload :ISO8601, "iso8601" if ChefUtils.windows?
|
21
20
|
require_relative "../provider"
|
22
21
|
require_relative "../util/path_helper"
|
23
22
|
require "win32/taskscheduler" if ChefUtils.windows?
|
@@ -20,7 +20,7 @@ require_relative "../resource"
|
|
20
20
|
require_relative "../dsl/declare_resource"
|
21
21
|
require_relative "noop"
|
22
22
|
require "shellwords" unless defined?(Shellwords)
|
23
|
-
|
23
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
24
24
|
|
25
25
|
class Chef
|
26
26
|
class Provider
|
@@ -110,7 +110,7 @@ class Chef
|
|
110
110
|
logger.trace("Will use :cookbook_file resource to cache the gpg key locally")
|
111
111
|
:cookbook_file
|
112
112
|
else
|
113
|
-
raise Chef::Exceptions::FileNotFound, "Cannot determine location of gpgkey. Must start with 'http' or be a file managed by #{
|
113
|
+
raise Chef::Exceptions::FileNotFound, "Cannot determine location of gpgkey. Must start with 'http' or be a file managed by #{ChefUtils::Dist::Infra::PRODUCT}."
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
@@ -113,7 +113,7 @@ class Chef
|
|
113
113
|
|
114
114
|
# if resource.provider is set, just return one of those objects
|
115
115
|
def maybe_explicit_provider(resource)
|
116
|
-
resource.provider
|
116
|
+
resource.provider
|
117
117
|
end
|
118
118
|
|
119
119
|
# try dynamically finding a provider based on querying the providers to see what they support
|
data/lib/chef/providers.rb
CHANGED
@@ -119,6 +119,7 @@ require_relative "provider/mount/mount"
|
|
119
119
|
require_relative "provider/mount/aix"
|
120
120
|
require_relative "provider/mount/solaris"
|
121
121
|
require_relative "provider/mount/windows"
|
122
|
+
require_relative "provider/mount/linux"
|
122
123
|
|
123
124
|
require_relative "provider/remote_file/ftp"
|
124
125
|
require_relative "provider/remote_file/sftp"
|
data/lib/chef/recipe.rb
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
#
|
19
19
|
|
20
|
-
|
20
|
+
autoload :YAML, "yaml"
|
21
21
|
require_relative "dsl/recipe"
|
22
22
|
require_relative "mixin/from_file"
|
23
23
|
require_relative "mixin/deprecation"
|
@@ -122,7 +122,7 @@ class Chef
|
|
122
122
|
end
|
123
123
|
|
124
124
|
def to_s
|
125
|
-
"cookbook: #{cookbook_name
|
125
|
+
"cookbook: #{cookbook_name || "(none)"}, recipe: #{recipe_name || "(none)"} "
|
126
126
|
end
|
127
127
|
|
128
128
|
def inspect
|
data/lib/chef/resource.rb
CHANGED
@@ -36,7 +36,7 @@ require_relative "resource/resource_notification"
|
|
36
36
|
require_relative "provider_resolver"
|
37
37
|
require_relative "resource_resolver"
|
38
38
|
require_relative "provider"
|
39
|
-
|
39
|
+
autoload :Set, "set"
|
40
40
|
|
41
41
|
require_relative "mixin/deprecation"
|
42
42
|
require_relative "mixin/properties"
|
@@ -17,6 +17,7 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require_relative "package"
|
20
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
20
21
|
|
21
22
|
class Chef
|
22
23
|
class Resource
|
@@ -27,6 +28,27 @@ class Chef
|
|
27
28
|
|
28
29
|
description "Use the **bff_package** resource to manage packages for the AIX platform using the installp utility. When a package is installed from a local file, it must be added to the node using the **remote_file** or **cookbook_file** resources."
|
29
30
|
introduced "12.0"
|
31
|
+
examples <<~DOC
|
32
|
+
The **bff_package** resource is the default package provider on the AIX platform. The base **package** resource may be used, and then when the platform is AIX, #{ChefUtils::Dist::Infra::PRODUCT} will identify the correct package provider. The following examples show how to install part of the IBM XL C/C++ compiler.
|
33
|
+
|
34
|
+
**Installing using the base package resource**
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
package 'xlccmp.13.1.0' do
|
38
|
+
source '/var/tmp/IBM_XL_C_13.1.0/usr/sys/inst.images/xlccmp.13.1.0'
|
39
|
+
action :install
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Installing using the bff_package resource**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
bff_package 'xlccmp.13.1.0' do
|
47
|
+
source '/var/tmp/IBM_XL_C_13.1.0/usr/sys/inst.images/xlccmp.13.1.0'
|
48
|
+
action :install
|
49
|
+
end
|
50
|
+
```
|
51
|
+
DOC
|
30
52
|
|
31
53
|
property :package_name, String,
|
32
54
|
description: "An optional property to set the package name if it differs from the resource block's name.",
|
@@ -17,7 +17,7 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require_relative "../resource"
|
20
|
-
|
20
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
21
21
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
@@ -26,8 +26,63 @@ class Chef
|
|
26
26
|
|
27
27
|
provides :breakpoint, target_mode: true
|
28
28
|
|
29
|
-
description "Use the **breakpoint** resource to add breakpoints to recipes. Run the #{
|
29
|
+
description "Use the **breakpoint** resource to add breakpoints to recipes. Run the #{ChefUtils::Dist::Infra::SHELL} in #{ChefUtils::Dist::Infra::PRODUCT} mode, and then use those breakpoints to debug recipes. Breakpoints are ignored by the #{ChefUtils::Dist::Infra::CLIENT} during an actual #{ChefUtils::Dist::Infra::CLIENT} run. That said, breakpoints are typically used to debug recipes only when running them in a non-production environment, after which they are removed from those recipes before the parent cookbook is uploaded to the Chef server."
|
30
30
|
introduced "12.0"
|
31
|
+
examples <<~DOC
|
32
|
+
**A recipe without a breakpoint**
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
yum_key node['yum']['elrepo']['key'] do
|
36
|
+
url node['yum']['elrepo']['key_url']
|
37
|
+
action :add
|
38
|
+
end
|
39
|
+
|
40
|
+
yum_repository 'elrepo' do
|
41
|
+
description 'ELRepo.org Community Enterprise Linux Extras Repository'
|
42
|
+
key node['yum']['elrepo']['key']
|
43
|
+
mirrorlist node['yum']['elrepo']['url']
|
44
|
+
includepkgs node['yum']['elrepo']['includepkgs']
|
45
|
+
exclude node['yum']['elrepo']['exclude']
|
46
|
+
action :create
|
47
|
+
end
|
48
|
+
```
|
49
|
+
|
50
|
+
**The same recipe with breakpoints**
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
breakpoint "before yum_key node['yum']['repo_name']['key']" do
|
54
|
+
action :break
|
55
|
+
end
|
56
|
+
|
57
|
+
yum_key node['yum']['repo_name']['key'] do
|
58
|
+
url node['yum']['repo_name']['key_url']
|
59
|
+
action :add
|
60
|
+
end
|
61
|
+
|
62
|
+
breakpoint "after yum_key node['yum']['repo_name']['key']" do
|
63
|
+
action :break
|
64
|
+
end
|
65
|
+
|
66
|
+
breakpoint "before yum_repository 'repo_name'" do
|
67
|
+
action :break
|
68
|
+
end
|
69
|
+
|
70
|
+
yum_repository 'repo_name' do
|
71
|
+
description 'description'
|
72
|
+
key node['yum']['repo_name']['key']
|
73
|
+
mirrorlist node['yum']['repo_name']['url']
|
74
|
+
includepkgs node['yum']['repo_name']['includepkgs']
|
75
|
+
exclude node['yum']['repo_name']['exclude']
|
76
|
+
action :create
|
77
|
+
end
|
78
|
+
|
79
|
+
breakpoint "after yum_repository 'repo_name'" do
|
80
|
+
action :break
|
81
|
+
end
|
82
|
+
```
|
83
|
+
|
84
|
+
where the name of each breakpoint is an arbitrary string. In the previous examples, the names are used to indicate if the breakpoint is before or after a resource, and then also to specify which resource.
|
85
|
+
DOC
|
31
86
|
|
32
87
|
default_action :break
|
33
88
|
|
@@ -29,6 +29,35 @@ class Chef
|
|
29
29
|
|
30
30
|
description "Use the **cab_package** resource to install or remove Microsoft Windows cabinet (.cab) packages."
|
31
31
|
introduced "12.15"
|
32
|
+
examples <<~'DOC'
|
33
|
+
**Using local path in source**
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
cab_package 'Install .NET 3.5 sp1 via KB958488' do
|
37
|
+
source 'C:\Users\xyz\AppData\Local\Temp\Windows6.1-KB958488-x64.cab'
|
38
|
+
action :install
|
39
|
+
end
|
40
|
+
|
41
|
+
cab_package 'Remove .NET 3.5 sp1 via KB958488' do
|
42
|
+
source 'C:\Users\xyz\AppData\Local\Temp\Windows6.1-KB958488-x64.cab'
|
43
|
+
action :remove
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
**Using URL in source**
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
cab_package 'Install .NET 3.5 sp1 via KB958488' do
|
51
|
+
source 'https://s3.amazonaws.com/my_bucket/Windows6.1-KB958488-x64.cab'
|
52
|
+
action :install
|
53
|
+
end
|
54
|
+
|
55
|
+
cab_package 'Remove .NET 3.5 sp1 via KB958488' do
|
56
|
+
source 'https://s3.amazonaws.com/my_bucket/Temp\Windows6.1-KB958488-x64.cab'
|
57
|
+
action :remove
|
58
|
+
end
|
59
|
+
```
|
60
|
+
DOC
|
32
61
|
|
33
62
|
allowed_actions :install, :remove
|
34
63
|
|
@@ -15,9 +15,9 @@
|
|
15
15
|
#
|
16
16
|
|
17
17
|
require_relative "../resource"
|
18
|
-
|
18
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
19
19
|
require_relative "helpers/cron_validations"
|
20
|
-
require "digest/md5"
|
20
|
+
require "digest/md5" unless defined?(Digest::MD5)
|
21
21
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
@@ -26,25 +26,25 @@ class Chef
|
|
26
26
|
|
27
27
|
provides :chef_client_cron
|
28
28
|
|
29
|
-
description "Use the **chef_client_cron** resource to setup the #{
|
29
|
+
description "Use the **chef_client_cron** resource to setup the #{ChefUtils::Dist::Infra::PRODUCT} to run as a cron job. This resource will also create the specified log directory if it doesn't already exist."
|
30
30
|
introduced "16.0"
|
31
31
|
examples <<~DOC
|
32
|
-
**Setup #{
|
32
|
+
**Setup #{ChefUtils::Dist::Infra::PRODUCT} to run using the default 30 minute cadence**:
|
33
33
|
|
34
34
|
```ruby
|
35
|
-
chef_client_cron "Run #{
|
35
|
+
chef_client_cron "Run #{ChefUtils::Dist::Infra::PRODUCT} as a cron job"
|
36
36
|
```
|
37
37
|
|
38
|
-
**Run #{
|
38
|
+
**Run #{ChefUtils::Dist::Infra::PRODUCT} twice a day**:
|
39
39
|
|
40
40
|
```ruby
|
41
|
-
chef_client_cron "Run #{
|
41
|
+
chef_client_cron "Run #{ChefUtils::Dist::Infra::PRODUCT} every 12 hours" do
|
42
42
|
minute 0
|
43
43
|
hour "0,12"
|
44
44
|
end
|
45
45
|
```
|
46
46
|
|
47
|
-
**Run #{
|
47
|
+
**Run #{ChefUtils::Dist::Infra::PRODUCT} with extra options passed to the client**:
|
48
48
|
|
49
49
|
```ruby
|
50
50
|
chef_client_cron "Run an override recipe" do
|
@@ -56,42 +56,42 @@ class Chef
|
|
56
56
|
extend Chef::ResourceHelpers::CronValidations
|
57
57
|
|
58
58
|
property :job_name, String,
|
59
|
-
default:
|
59
|
+
default: ChefUtils::Dist::Infra::CLIENT,
|
60
60
|
description: "The name of the cron job to create."
|
61
61
|
|
62
62
|
property :comment, String,
|
63
63
|
description: "A comment to place in the cron.d file."
|
64
64
|
|
65
65
|
property :user, String,
|
66
|
-
description: "The name of the user that #{
|
66
|
+
description: "The name of the user that #{ChefUtils::Dist::Infra::PRODUCT} runs as.",
|
67
67
|
default: "root"
|
68
68
|
|
69
69
|
property :minute, [Integer, String],
|
70
|
-
description: "The minute at which #{
|
70
|
+
description: "The minute at which #{ChefUtils::Dist::Infra::PRODUCT} is to run (0 - 59) or a cron pattern such as '0,30'.",
|
71
71
|
default: "0,30", callbacks: {
|
72
72
|
"should be a valid minute spec" => method(:validate_minute),
|
73
73
|
}
|
74
74
|
|
75
75
|
property :hour, [Integer, String],
|
76
|
-
description: "The hour at which #{
|
76
|
+
description: "The hour at which #{ChefUtils::Dist::Infra::PRODUCT} is to run (0 - 23) or a cron pattern such as '0,12'.",
|
77
77
|
default: "*", callbacks: {
|
78
78
|
"should be a valid hour spec" => method(:validate_hour),
|
79
79
|
}
|
80
80
|
|
81
81
|
property :day, [Integer, String],
|
82
|
-
description: "The day of month at which #{
|
82
|
+
description: "The day of month at which #{ChefUtils::Dist::Infra::PRODUCT} is to run (1 - 31) or a cron pattern such as '1,7,14,21,28'.",
|
83
83
|
default: "*", callbacks: {
|
84
84
|
"should be a valid day spec" => method(:validate_day),
|
85
85
|
}
|
86
86
|
|
87
87
|
property :month, [Integer, String],
|
88
|
-
description: "The month in the year on which #{
|
88
|
+
description: "The month in the year on which #{ChefUtils::Dist::Infra::PRODUCT} is to run (1 - 12, jan-dec, or *).",
|
89
89
|
default: "*", callbacks: {
|
90
90
|
"should be a valid month spec" => method(:validate_month),
|
91
91
|
}
|
92
92
|
|
93
93
|
property :weekday, [Integer, String],
|
94
|
-
description: "The day of the week on which #{
|
94
|
+
description: "The day of the week on which #{ChefUtils::Dist::Infra::PRODUCT} is to run (0-7, mon-sun, or *), where Sunday is both 0 and 7.",
|
95
95
|
default: "*", callbacks: {
|
96
96
|
"should be a valid weekday spec" => method(:validate_dow),
|
97
97
|
}
|
@@ -100,7 +100,7 @@ class Chef
|
|
100
100
|
default: 300,
|
101
101
|
coerce: proc { |x| Integer(x) },
|
102
102
|
callbacks: { "should be a positive number" => proc { |v| v > 0 } },
|
103
|
-
description: "A random number of seconds between 0 and X to add to interval so that all #{
|
103
|
+
description: "A random number of seconds between 0 and X to add to interval so that all #{ChefUtils::Dist::Infra::CLIENT} commands don't execute at the same time."
|
104
104
|
|
105
105
|
property :mailto, String,
|
106
106
|
description: "The e-mail address to e-mail any cron task failures to."
|
@@ -110,12 +110,12 @@ class Chef
|
|
110
110
|
default: false
|
111
111
|
|
112
112
|
property :config_directory, String,
|
113
|
-
default:
|
113
|
+
default: ChefConfig::Config.etc_chef_dir,
|
114
114
|
description: "The path of the config directory."
|
115
115
|
|
116
116
|
property :log_directory, String,
|
117
|
-
default: lazy { platform?("mac_os_x") ? "/Library/Logs/#{
|
118
|
-
default_description: "/Library/Logs/#{
|
117
|
+
default: lazy { platform?("mac_os_x") ? "/Library/Logs/#{ChefUtils::Dist::Infra::DIR_SUFFIX.capitalize}" : "/var/log/#{ChefUtils::Dist::Infra::DIR_SUFFIX}" },
|
118
|
+
default_description: "/Library/Logs/#{ChefUtils::Dist::Infra::DIR_SUFFIX.capitalize} on macOS and /var/log/#{ChefUtils::Dist::Infra::DIR_SUFFIX} otherwise",
|
119
119
|
description: "The path of the directory to create the log file in."
|
120
120
|
|
121
121
|
property :log_file_name, String,
|
@@ -127,17 +127,23 @@ class Chef
|
|
127
127
|
description: "Append to the log file instead of overwriting the log file on each run."
|
128
128
|
|
129
129
|
property :chef_binary_path, String,
|
130
|
-
default: "/opt/#{
|
131
|
-
description: "The path to the #{
|
130
|
+
default: "/opt/#{ChefUtils::Dist::Infra::DIR_SUFFIX}/bin/#{ChefUtils::Dist::Infra::CLIENT}",
|
131
|
+
description: "The path to the #{ChefUtils::Dist::Infra::CLIENT} binary."
|
132
132
|
|
133
133
|
property :daemon_options, Array,
|
134
134
|
default: lazy { [] },
|
135
|
-
description: "An array of options to pass to the #{
|
135
|
+
description: "An array of options to pass to the #{ChefUtils::Dist::Infra::CLIENT} command."
|
136
136
|
|
137
137
|
property :environment, Hash,
|
138
138
|
default: lazy { {} },
|
139
139
|
description: "A Hash containing additional arbitrary environment variables under which the cron job will be run in the form of `({'ENV_VARIABLE' => 'VALUE'})`."
|
140
140
|
|
141
|
+
property :nice, [Integer, String],
|
142
|
+
description: "The process priority to run the #{ChefUtils::Dist::Infra::CLIENT} process at. A value of -20 is the highest priority and 19 is the lowest priority.",
|
143
|
+
introduced: "16.5",
|
144
|
+
coerce: proc { |x| Integer(x) },
|
145
|
+
callbacks: { "should be an Integer between -20 and 19" => proc { |v| v >= -20 && v <= 19 } }
|
146
|
+
|
141
147
|
action :add do
|
142
148
|
# TODO: Replace this with a :create_if_missing action on directory when that exists
|
143
149
|
unless ::Dir.exist?(new_resource.log_directory)
|
@@ -158,7 +164,7 @@ class Chef
|
|
158
164
|
mailto new_resource.mailto if new_resource.mailto
|
159
165
|
user new_resource.user
|
160
166
|
comment new_resource.comment if new_resource.comment
|
161
|
-
command
|
167
|
+
command client_command
|
162
168
|
end
|
163
169
|
end
|
164
170
|
|
@@ -187,15 +193,16 @@ class Chef
|
|
187
193
|
#
|
188
194
|
# @return [String]
|
189
195
|
#
|
190
|
-
def
|
196
|
+
def client_command
|
191
197
|
cmd = ""
|
192
198
|
cmd << "/bin/sleep #{splay_sleep_time(new_resource.splay)}; "
|
199
|
+
cmd << "#{which("nice")} -n #{new_resource.nice} " if new_resource.nice
|
193
200
|
cmd << "#{new_resource.chef_binary_path} "
|
194
201
|
cmd << "#{new_resource.daemon_options.join(" ")} " unless new_resource.daemon_options.empty?
|
195
202
|
cmd << "-c #{::File.join(new_resource.config_directory, "client.rb")} "
|
196
203
|
cmd << "--chef-license accept " if new_resource.accept_chef_license
|
197
204
|
cmd << log_command
|
198
|
-
cmd << " || echo \"#{
|
205
|
+
cmd << " || echo \"#{ChefUtils::Dist::Infra::PRODUCT} execution failed\"" if new_resource.mailto
|
199
206
|
cmd
|
200
207
|
end
|
201
208
|
|