chef 16.0.275-universal-mingw32 → 16.2.50-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/README.md +3 -3
- data/Rakefile +15 -1
- data/chef.gemspec +3 -3
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/application/apply.rb +2 -2
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +4 -4
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +2 -2
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +7 -7
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +5 -1
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dsl/declare_resource.rb +1 -1
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +18 -3
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +18 -0
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -2
- data/lib/chef/knife/bootstrap.rb +13 -16
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/config_use_profile.rb +15 -5
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/node_bulk_delete.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- data/lib/chef/knife/ssh.rb +2 -2
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/properties.rb +4 -2
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/property.rb +2 -2
- data/lib/chef/provider.rb +3 -3
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/directory.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/launchd.rb +28 -32
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/cab.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +1 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +3 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +3 -3
- data/lib/chef/provider/package/snap.rb +96 -27
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/msi.rb +3 -3
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
- data/lib/chef/provider/package/yum.rb +1 -1
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +11 -15
- data/lib/chef/provider/remote_directory.rb +2 -2
- data/lib/chef/provider/remote_file/http.rb +4 -1
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +13 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/service/simple.rb +3 -3
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +1 -1
- data/lib/chef/provider/subversion.rb +2 -2
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +15 -11
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/windows_task.rb +5 -3
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +25 -14
- data/lib/chef/resource/alternatives.rb +1 -1
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/archive_file.rb +28 -8
- data/lib/chef/resource/bash.rb +0 -1
- data/lib/chef/resource/batch.rb +4 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chef_handler.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cron/_cron_shared.rb +98 -0
- data/lib/chef/resource/cron/cron.rb +46 -0
- data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
- data/lib/chef/resource/cron_access.rb +11 -3
- data/lib/chef/resource/csh.rb +0 -1
- data/lib/chef/resource/dmg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +478 -8
- data/lib/chef/resource/file.rb +10 -8
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +35 -2
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +7 -20
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/launchd.rb +4 -4
- data/lib/chef/resource/locale.rb +3 -3
- data/lib/chef/resource/macos_userdefaults.rb +14 -9
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/msu_package.rb +1 -1
- data/lib/chef/resource/perl.rb +0 -1
- data/lib/chef/resource/plist.rb +23 -4
- data/lib/chef/resource/powershell_script.rb +4 -2
- data/lib/chef/resource/python.rb +0 -1
- data/lib/chef/resource/remote_file.rb +26 -10
- data/lib/chef/resource/ruby.rb +0 -1
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
- data/lib/chef/resource/sudo.rb +29 -2
- data/lib/chef/resource/swap_file.rb +17 -0
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +15 -0
- data/lib/chef/resource/windows_ad_join.rb +30 -1
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +11 -0
- data/lib/chef/resource/windows_certificate.rb +27 -1
- data/lib/chef/resource/windows_dfs_server.rb +1 -1
- data/lib/chef/resource/windows_firewall_rule.rb +2 -2
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +3 -3
- data/lib/chef/resource/windows_pagefile.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +1 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +47 -16
- data/lib/chef/resource/windows_share.rb +2 -2
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +21 -21
- data/lib/chef/resource/windows_user_privilege.rb +45 -3
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resource_inspector.rb +4 -3
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +18 -18
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +10 -0
- data/spec/functional/resource/dnf_package_spec.rb +2 -2
- data/spec/functional/resource/git_spec.rb +6 -6
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/remote_file_spec.rb +2 -2
- 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 +12 -12
- data/spec/integration/knife/config_use_profile_spec.rb +55 -2
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/platform_helpers.rb +1 -1
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application_spec.rb +7 -0
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/knife/bootstrap_spec.rb +2 -2
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/user_context_spec.rb +1 -9
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/property_spec.rb +1 -1
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron_spec.rb +9 -49
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +96 -87
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
- data/spec/unit/provider/zypper_repository_spec.rb +60 -10
- data/spec/unit/provider_resolver_spec.rb +9 -9
- data/spec/unit/resource/archive_file_spec.rb +11 -2
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/cron_spec.rb +2 -2
- data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
- data/spec/unit/resource/homebrew_update_spec.rb +30 -0
- data/spec/unit/resource/powershell_script_spec.rb +10 -15
- data/spec/unit/resource/timezone_spec.rb +1 -1
- data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_package_spec.rb +10 -0
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_spec.rb +67 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- data/spec/unit/win32/registry_spec.rb +1 -1
- metadata +24 -23
- data/lib/chef/resource/cron.rb +0 -157
data/lib/chef/resource/batch.rb
CHANGED
@@ -27,8 +27,10 @@ class Chef
|
|
27
27
|
|
28
28
|
description "Use the **batch** resource to execute a batch script using the cmd.exe interpreter on Windows. The batch resource creates and executes a temporary file (similar to how the script resource behaves), rather than running the command inline. Commands that are executed with this resource are (by their nature) not idempotent, as they are typically unique to the environment in which they are run. Use not_if and only_if to guard this resource for idempotence."
|
29
29
|
|
30
|
-
def initialize(
|
31
|
-
super
|
30
|
+
def initialize(*args)
|
31
|
+
super
|
32
|
+
@interpreter = "cmd.exe"
|
33
|
+
@default_guard_interpreter = resource_name
|
32
34
|
end
|
33
35
|
|
34
36
|
end
|
@@ -48,6 +48,16 @@ class Chef
|
|
48
48
|
daemon_options ["--override-runlist mycorp_base::default"]
|
49
49
|
end
|
50
50
|
```
|
51
|
+
|
52
|
+
**Run #{Chef::Dist::PRODUCT} daily at 01:00 am, specifying a named run-list**:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
chef_client_scheduled_task "Run chef-client named run-list daily" do
|
56
|
+
frequency 'daily'
|
57
|
+
start_time '01:00'
|
58
|
+
daemon_options ['-n audit_only']
|
59
|
+
end
|
60
|
+
```
|
51
61
|
DOC
|
52
62
|
|
53
63
|
resource_name :chef_client_scheduled_task
|
@@ -72,7 +82,8 @@ class Chef
|
|
72
82
|
coerce: proc { |x| Integer(x) },
|
73
83
|
callbacks: { "should be a positive number" => proc { |v| v > 0 } },
|
74
84
|
description: "Numeric value to go with the scheduled task frequency",
|
75
|
-
default: 30
|
85
|
+
default: lazy { frequency == "minute" ? 30 : 1 },
|
86
|
+
default_description: "30 if frequency is 'minute', 1 otherwise"
|
76
87
|
|
77
88
|
property :accept_chef_license, [true, false],
|
78
89
|
description: "Accept the Chef Online Master License and Services Agreement. See <https://www.chef.io/online-master-agreement/>",
|
@@ -129,6 +140,7 @@ class Chef
|
|
129
140
|
|
130
141
|
# According to https://docs.microsoft.com/en-us/windows/desktop/taskschd/schtasks,
|
131
142
|
# the :once, :onstart, :onlogon, and :onidle schedules don't accept schedule modifiers
|
143
|
+
|
132
144
|
windows_task new_resource.task_name do
|
133
145
|
run_level :highest
|
134
146
|
command full_command
|
@@ -22,26 +22,59 @@ require_relative "../dist"
|
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
class Resource
|
25
|
-
# Use the chef_gem resource to install a gem only for the instance of Ruby that is dedicated to the chef-client.
|
26
|
-
# When a gem is installed from a local file, it must be added to the node using the remote_file or cookbook_file
|
27
|
-
# resources.
|
28
|
-
#
|
29
|
-
# The chef_gem resource works with all of the same properties and options as the gem_package resource, but does not
|
30
|
-
# accept the gem_binary property because it always uses the CurrentGemEnvironment under which the chef-client is
|
31
|
-
# running. In addition to performing actions similar to the gem_package resource, the chef_gem resource does the
|
32
|
-
# following:
|
33
|
-
# - Runs its actions immediately, before convergence, allowing a gem to be used in a recipe immediately after it is
|
34
|
-
# installed
|
35
|
-
# - Runs Gem.clear_paths after the action, ensuring that gem is aware of changes so that it can be required
|
36
|
-
# immediately after it is installed
|
37
|
-
|
38
|
-
require_relative "gem_package"
|
39
|
-
require_relative "../dist"
|
40
|
-
|
41
25
|
class ChefGem < Chef::Resource::Package::GemPackage
|
42
26
|
unified_mode true
|
43
27
|
provides :chef_gem
|
44
28
|
|
29
|
+
description <<~DESC
|
30
|
+
Use the **chef_gem** resource to install a gem only for the instance of Ruby that is dedicated to the #{Chef::Dist::CLIENT}.
|
31
|
+
When a gem is installed from a local file, it must be added to the node using the **remote_file** or **cookbook_file** resources.
|
32
|
+
|
33
|
+
The **chef_gem** resource works with all of the same properties and options as the **gem_package** resource, but does not
|
34
|
+
accept the `gem_binary` property because it always uses the `CurrentGemEnvironment` under which the `#{Chef::Dist::CLIENT}` is
|
35
|
+
running. In addition to performing actions similar to the **gem_package** resource, the **chef_gem** resource does the
|
36
|
+
following:
|
37
|
+
- Runs its actions immediately, before convergence, allowing a gem to be used in a recipe immediately after it is installed.
|
38
|
+
- Runs `Gem.clear_paths` after the action, ensuring that gem is aware of changes so that it can be required immediately after it is installed.
|
39
|
+
|
40
|
+
Warning: The **chef_gem** and **gem_package** resources are both used to install Ruby gems. For any machine on which #{Chef::Dist::PRODUCT} is
|
41
|
+
installed, there are two instances of Ruby. One is the standard, system-wide instance of Ruby and the other is a dedicated instance that is
|
42
|
+
available only to #{Chef::Dist::PRODUCT}.
|
43
|
+
Use the **chef_gem** resource to install gems into the instance of Ruby that is dedicated to #{Chef::Dist::PRODUCT}.
|
44
|
+
Use the **gem_package** resource to install all other gems (i.e. install gems system-wide).
|
45
|
+
DESC
|
46
|
+
|
47
|
+
examples <<~EXAMPLES
|
48
|
+
**Compile time vs. converge time installation of gems**
|
49
|
+
|
50
|
+
To install a gem while #{Chef::Dist::PRODUCT} is configuring the node (the converge phase), set the `compile_time` property to `false`:
|
51
|
+
```ruby
|
52
|
+
chef_gem 'right_aws' do
|
53
|
+
compile_time false
|
54
|
+
action :install
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
To install a gem while the resource collection is being built (the compile phase), set the `compile_time` property to `true`:
|
59
|
+
```ruby
|
60
|
+
chef_gem 'right_aws' do
|
61
|
+
compile_time true
|
62
|
+
action :install
|
63
|
+
end
|
64
|
+
```
|
65
|
+
|
66
|
+
Install MySQL for Chef
|
67
|
+
```ruby
|
68
|
+
apt_update
|
69
|
+
|
70
|
+
build_essential 'install compilation tools' do
|
71
|
+
compile_time true
|
72
|
+
end
|
73
|
+
|
74
|
+
chef_gem 'mysql'
|
75
|
+
```
|
76
|
+
EXAMPLES
|
77
|
+
|
45
78
|
property :package_name, String,
|
46
79
|
description: "An optional property to set the package name if it differs from the resource block's name.",
|
47
80
|
identity: true
|
@@ -49,11 +82,14 @@ class Chef
|
|
49
82
|
property :version, String,
|
50
83
|
description: "The version of a package to be installed or upgraded."
|
51
84
|
|
52
|
-
property :gem_binary,
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
85
|
+
property :gem_binary, String,
|
86
|
+
default: "#{RbConfig::CONFIG["bindir"]}/gem",
|
87
|
+
default_description: "The `gem` binary included with #{Chef::Dist::PRODUCT}.",
|
88
|
+
description: "The path of a gem binary to use for the installation. By default, the same version of Ruby that is used by #{Chef::Dist::PRODUCT} will be used.",
|
89
|
+
callbacks: {
|
90
|
+
"The `chef_gem` resource is restricted to the current gem environment, use `gem_package` to install to other environments." =>
|
91
|
+
proc { |v| v == "#{RbConfig::CONFIG["bindir"]}/gem" },
|
92
|
+
}
|
57
93
|
end
|
58
94
|
end
|
59
95
|
end
|
@@ -107,7 +107,7 @@ class Chef
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
# Walks down the namespace
|
110
|
+
# Walks down the namespace hierarchy to return the class object for the given class name.
|
111
111
|
# If the class is not available, NameError is thrown.
|
112
112
|
#
|
113
113
|
# @param class_full_name [String] full class name such as 'Chef::Handler::Foo' or 'MyHandler'.
|
@@ -118,7 +118,7 @@ class Chef
|
|
118
118
|
class_name = ancestors.pop
|
119
119
|
|
120
120
|
# We need to search the ancestors only for the first/uppermost namespace of the class, so we
|
121
|
-
# need to enable the #const_get inherit
|
121
|
+
# need to enable the #const_get inherit parameter only when we are searching in Kernel scope
|
122
122
|
# (see COOK-4117).
|
123
123
|
parent = ancestors.inject(Kernel) { |scope, const_name| scope.const_get(const_name, scope === Kernel) }
|
124
124
|
child = parent.const_get(class_name, parent === Kernel)
|
@@ -0,0 +1,98 @@
|
|
1
|
+
unified_mode true
|
2
|
+
|
3
|
+
TIMEOUT_OPTS = %w{duration preserve-status foreground kill-after signal}.freeze
|
4
|
+
TIMEOUT_REGEX = /\A\S+/.freeze
|
5
|
+
WEEKDAYS = {
|
6
|
+
sunday: "0", monday: "1", tuesday: "2", wednesday: "3", thursday: "4", friday: "5", saturday: "6",
|
7
|
+
sun: "0", mon: "1", tue: "2", wed: "3", thu: "4", fri: "5", sat: "6"
|
8
|
+
}.freeze
|
9
|
+
|
10
|
+
property :minute, [Integer, String],
|
11
|
+
description: "The minute at which the cron entry should run (`0 - 59`).",
|
12
|
+
default: "*", callbacks: {
|
13
|
+
"should be a valid minute spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 59) },
|
14
|
+
}
|
15
|
+
|
16
|
+
property :hour, [Integer, String],
|
17
|
+
description: "The hour at which the cron entry is to run (`0 - 23`).",
|
18
|
+
default: "*", callbacks: {
|
19
|
+
"should be a valid hour spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 23) },
|
20
|
+
}
|
21
|
+
|
22
|
+
property :day, [Integer, String],
|
23
|
+
description: "The day of month at which the cron entry should run (`1 - 31`).",
|
24
|
+
default: "*", callbacks: {
|
25
|
+
"should be a valid day spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 1, 31) },
|
26
|
+
}
|
27
|
+
|
28
|
+
property :month, [Integer, String],
|
29
|
+
description: "The month in the year on which a cron entry is to run (`1 - 12`, `jan-dec`, or `*`).",
|
30
|
+
default: "*", callbacks: {
|
31
|
+
"should be a valid month spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_month(spec) },
|
32
|
+
}
|
33
|
+
|
34
|
+
property :weekday, [Integer, String, Symbol],
|
35
|
+
description: "The day of the week on which this entry is to run (`0-7`, `mon-sun`, `monday-sunday`, or `*`), where Sunday is both `0` and `7`.",
|
36
|
+
default: "*", coerce: proc { |day| weekday_in_crontab(day) },
|
37
|
+
callbacks: {
|
38
|
+
"should be a valid weekday spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_dow(spec) },
|
39
|
+
}
|
40
|
+
|
41
|
+
property :shell, String,
|
42
|
+
description: "Set the `SHELL` environment variable."
|
43
|
+
|
44
|
+
property :path, String,
|
45
|
+
description: "Set the `PATH` environment variable."
|
46
|
+
|
47
|
+
property :home, String,
|
48
|
+
description: "Set the `HOME` environment variable."
|
49
|
+
|
50
|
+
property :mailto, String,
|
51
|
+
description: "Set the `MAILTO` environment variable."
|
52
|
+
|
53
|
+
property :command, String,
|
54
|
+
description: "The command to be run, or the path to a file that contains the command to be run.",
|
55
|
+
identity: true,
|
56
|
+
required: [:create]
|
57
|
+
|
58
|
+
property :user, String,
|
59
|
+
description: "The name of the user that runs the command.",
|
60
|
+
default: "root"
|
61
|
+
|
62
|
+
property :environment, Hash,
|
63
|
+
description: "A Hash containing additional arbitrary environment variables under which the cron job will be run in the form of `({'ENV_VARIABLE' => 'VALUE'})`. **Note**: These variables must exist for a command to be run successfully.",
|
64
|
+
default: lazy { {} }
|
65
|
+
|
66
|
+
property :time_out, Hash,
|
67
|
+
description: "A Hash of timeouts in the form of `({'OPTION' => 'VALUE'})`. Accepted valid options are:
|
68
|
+
- `preserve-status` (BOOL, default: 'false'),
|
69
|
+
- `foreground` (BOOL, default: 'false'),
|
70
|
+
- `kill-after` (in seconds),
|
71
|
+
- `signal` (a name like 'HUP' or a number)",
|
72
|
+
default: lazy { {} },
|
73
|
+
introduced: "15.7",
|
74
|
+
coerce: proc { |h|
|
75
|
+
if h.is_a?(Hash)
|
76
|
+
invalid_keys = h.keys - TIMEOUT_OPTS
|
77
|
+
unless invalid_keys.empty?
|
78
|
+
error_msg = "Key of option time_out must be equal to one of: \"#{TIMEOUT_OPTS.join('", "')}\"! You passed \"#{invalid_keys.join(", ")}\"."
|
79
|
+
raise Chef::Exceptions::ValidationFailed, error_msg
|
80
|
+
end
|
81
|
+
unless h.values.all? { |x| x =~ TIMEOUT_REGEX }
|
82
|
+
error_msg = "Values of option time_out should be non-empty strings without any leading whitespace."
|
83
|
+
raise Chef::Exceptions::ValidationFailed, error_msg
|
84
|
+
end
|
85
|
+
h
|
86
|
+
elsif h.is_a?(Integer) || h.is_a?(String)
|
87
|
+
{ "duration" => h }
|
88
|
+
end
|
89
|
+
}
|
90
|
+
|
91
|
+
private
|
92
|
+
# Convert weekday input value into crontab format that
|
93
|
+
# could be written in the crontab
|
94
|
+
# @return [Integer, String] A weekday formed as per the user inputs.
|
95
|
+
def weekday_in_crontab(day)
|
96
|
+
weekday = day.to_s.downcase.to_sym
|
97
|
+
WEEKDAYS[weekday] || day
|
98
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Bryan McLellan (btm@loftninjas.org)
|
3
|
+
# Author:: Tyler Cloke (<tyler@chef.io>)
|
4
|
+
# Copyright:: Copyright 2009-2016, Bryan McLellan
|
5
|
+
# License:: Apache License, Version 2.0
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
require_relative "../../resource"
|
21
|
+
require_relative "../helpers/cron_validations"
|
22
|
+
require_relative "../../provider/cron" # do not remove. we actually need this below
|
23
|
+
|
24
|
+
class Chef
|
25
|
+
class Resource
|
26
|
+
class Cron < Chef::Resource
|
27
|
+
unified_mode true
|
28
|
+
|
29
|
+
use "cron_shared"
|
30
|
+
|
31
|
+
provides :cron
|
32
|
+
|
33
|
+
description "Use the **cron** resource to manage cron entries for time-based job scheduling. Properties for a schedule will default to * if not provided. The cron resource requires access to a crontab program, typically cron."
|
34
|
+
|
35
|
+
state_attrs :minute, :hour, :day, :month, :weekday, :user
|
36
|
+
|
37
|
+
default_action :create
|
38
|
+
allowed_actions :create, :delete
|
39
|
+
|
40
|
+
property :time, Symbol,
|
41
|
+
description: "A time interval.",
|
42
|
+
equal_to: Chef::Provider::Cron::SPECIAL_TIME_VALUES
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -15,15 +15,18 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
17
|
|
18
|
-
require_relative "
|
19
|
-
require_relative "helpers/cron_validations"
|
18
|
+
require_relative "../../resource"
|
19
|
+
require_relative "../helpers/cron_validations"
|
20
20
|
require "shellwords" unless defined?(Shellwords)
|
21
|
-
require_relative "
|
21
|
+
require_relative "../../dist"
|
22
22
|
|
23
23
|
class Chef
|
24
24
|
class Resource
|
25
25
|
class CronD < Chef::Resource
|
26
26
|
unified_mode true
|
27
|
+
|
28
|
+
use "cron_shared"
|
29
|
+
|
27
30
|
provides :cron_d
|
28
31
|
|
29
32
|
introduced "14.4"
|
@@ -98,92 +101,9 @@ class Chef
|
|
98
101
|
description: "Schedule your cron job with one of the special predefined value instead of ** * pattern.",
|
99
102
|
equal_to: %w{ @reboot @yearly @annually @monthly @weekly @daily @midnight @hourly }
|
100
103
|
|
101
|
-
property :minute, [Integer, String],
|
102
|
-
description: "The minute at which the cron entry should run (`0 - 59`).",
|
103
|
-
default: "*", callbacks: {
|
104
|
-
"should be a valid minute spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 59) },
|
105
|
-
}
|
106
|
-
|
107
|
-
property :hour, [Integer, String],
|
108
|
-
description: "The hour at which the cron entry is to run (`0 - 23`).",
|
109
|
-
default: "*", callbacks: {
|
110
|
-
"should be a valid hour spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 0, 23) },
|
111
|
-
}
|
112
|
-
|
113
|
-
property :day, [Integer, String],
|
114
|
-
description: "The day of month at which the cron entry should run (`1 - 31`).",
|
115
|
-
default: "*", callbacks: {
|
116
|
-
"should be a valid day spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_numeric(spec, 1, 31) },
|
117
|
-
}
|
118
|
-
|
119
|
-
property :month, [Integer, String],
|
120
|
-
description: "The month in the year on which a cron entry is to run (`1 - 12`, `jan-dec`, or `*`).",
|
121
|
-
default: "*", callbacks: {
|
122
|
-
"should be a valid month spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_month(spec) },
|
123
|
-
}
|
124
|
-
|
125
|
-
property :weekday, [Integer, String],
|
126
|
-
description: "The day of the week on which this entry is to run (`0-7`, `mon-sun`, or `*`), where Sunday is both `0` and `7`.",
|
127
|
-
default: "*", callbacks: {
|
128
|
-
"should be a valid weekday spec" => ->(spec) { Chef::ResourceHelpers::CronValidations.validate_dow(spec) },
|
129
|
-
}
|
130
|
-
|
131
|
-
property :command, String,
|
132
|
-
description: "The command to run.",
|
133
|
-
required: [:create]
|
134
|
-
|
135
|
-
property :user, String,
|
136
|
-
description: "The name of the user that runs the command.",
|
137
|
-
default: "root"
|
138
|
-
|
139
|
-
property :mailto, String,
|
140
|
-
description: "Set the `MAILTO` environment variable in the cron.d file."
|
141
|
-
|
142
|
-
property :path, String,
|
143
|
-
description: "Set the `PATH` environment variable in the cron.d file."
|
144
|
-
|
145
|
-
property :home, String,
|
146
|
-
description: "Set the `HOME` environment variable in the cron.d file."
|
147
|
-
|
148
|
-
property :shell, String,
|
149
|
-
description: "Set the `SHELL` environment variable in the cron.d file."
|
150
|
-
|
151
104
|
property :comment, String,
|
152
105
|
description: "A comment to place in the cron.d file."
|
153
106
|
|
154
|
-
property :environment, Hash,
|
155
|
-
description: "A Hash containing additional arbitrary environment variables under which the cron job will be run in the form of `({'ENV_VARIABLE' => 'VALUE'})`.",
|
156
|
-
default: lazy { {} }
|
157
|
-
|
158
|
-
TIMEOUT_OPTS = %w{duration preserve-status foreground kill-after signal}.freeze
|
159
|
-
TIMEOUT_REGEX = /\A\S+/.freeze
|
160
|
-
|
161
|
-
property :time_out, Hash,
|
162
|
-
description: "A Hash of timeouts in the form of `({'OPTION' => 'VALUE'})`.
|
163
|
-
Accepted valid options are:
|
164
|
-
`preserve-status` (BOOL, default: 'false'),
|
165
|
-
`foreground` (BOOL, default: 'false'),
|
166
|
-
`kill-after` (in seconds),
|
167
|
-
`signal` (a name like 'HUP' or a number)",
|
168
|
-
default: lazy { {} },
|
169
|
-
introduced: "15.7",
|
170
|
-
coerce: proc { |h|
|
171
|
-
if h.is_a?(Hash)
|
172
|
-
invalid_keys = h.keys - TIMEOUT_OPTS
|
173
|
-
unless invalid_keys.empty?
|
174
|
-
error_msg = "Key of option time_out must be equal to one of: \"#{TIMEOUT_OPTS.join('", "')}\"! You passed \"#{invalid_keys.join(", ")}\"."
|
175
|
-
raise Chef::Exceptions::ValidationFailed, error_msg
|
176
|
-
end
|
177
|
-
unless h.values.all? { |x| x =~ TIMEOUT_REGEX }
|
178
|
-
error_msg = "Values of option time_out should be non-empty string without any leading whitespaces."
|
179
|
-
raise Chef::Exceptions::ValidationFailed, error_msg
|
180
|
-
end
|
181
|
-
h
|
182
|
-
elsif h.is_a?(Integer) || h.is_a?(String)
|
183
|
-
{ "duration" => h }
|
184
|
-
end
|
185
|
-
}
|
186
|
-
|
187
107
|
property :mode, [String, Integer],
|
188
108
|
description: "The octal mode of the generated crontab file.",
|
189
109
|
default: "0600"
|
@@ -238,7 +158,7 @@ class Chef
|
|
238
158
|
|
239
159
|
# @todo this is Chef 12 era cleanup. Someday we should remove it all
|
240
160
|
template "/etc/cron.d/#{sanitized_name}" do
|
241
|
-
source ::File.expand_path("
|
161
|
+
source ::File.expand_path("../../support/cron.d.erb", __FILE__)
|
242
162
|
local true
|
243
163
|
mode new_resource.mode
|
244
164
|
variables(
|
@@ -28,7 +28,7 @@ class Chef
|
|
28
28
|
provides(:cron_manage) # legacy name @todo in Chef 15 we should { true } this so it wins over the cookbook
|
29
29
|
|
30
30
|
introduced "14.4"
|
31
|
-
description "Use the **cron_access** resource to manage
|
31
|
+
description "Use the **cron_access** resource to manage cron's cron.allow and cron.deny files. Note: This resource previously shipped in the `cron` cookbook as `cron_manage`, which it can still be used as for backwards compatibility with existing Chef Infra Client releases."
|
32
32
|
examples <<~DOC
|
33
33
|
**Add the mike user to cron.allow**
|
34
34
|
|
@@ -58,11 +58,18 @@ class Chef
|
|
58
58
|
description: "An optional property to set the user name if it differs from the resource block's name.",
|
59
59
|
name_property: true
|
60
60
|
|
61
|
+
CRON_PATHS = {
|
62
|
+
"aix" => "/var/adm/cron",
|
63
|
+
"solaris" => "/etc/cron.d",
|
64
|
+
"default" => "/etc",
|
65
|
+
}.freeze
|
66
|
+
|
61
67
|
action :allow do
|
62
68
|
description "Add the user to the cron.allow file."
|
69
|
+
allow_path = ::File.join(value_for_platform_family(CRON_PATHS), "cron.allow")
|
63
70
|
|
64
71
|
with_run_context :root do
|
65
|
-
edit_resource(:template,
|
72
|
+
edit_resource(:template, allow_path) do |new_resource|
|
66
73
|
source ::File.expand_path("../support/cron_access.erb", __FILE__)
|
67
74
|
local true
|
68
75
|
mode "0600"
|
@@ -76,9 +83,10 @@ class Chef
|
|
76
83
|
|
77
84
|
action :deny do
|
78
85
|
description "Add the user to the cron.deny file."
|
86
|
+
deny_path = ::File.join(value_for_platform_family(CRON_PATHS), "cron.deny")
|
79
87
|
|
80
88
|
with_run_context :root do
|
81
|
-
edit_resource(:template,
|
89
|
+
edit_resource(:template, deny_path) do |new_resource|
|
82
90
|
source ::File.expand_path("../support/cron_access.erb", __FILE__)
|
83
91
|
local true
|
84
92
|
mode "0600"
|