chef 16.0.275-universal-mingw32 → 16.2.50-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 +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
@@ -25,6 +25,17 @@ class Chef
|
|
25
25
|
|
26
26
|
description "Use the **windows_auto_run** resource to set applications to run at login."
|
27
27
|
introduced "14.0"
|
28
|
+
examples <<~DOC
|
29
|
+
**Run BGInfo at login**
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
windows_auto_run 'BGINFO' do
|
33
|
+
program 'C:/Sysinternals/bginfo.exe'
|
34
|
+
args '\'C:/Sysinternals/Config.bgi\' /NOLICPROMPT /TIMER:0'
|
35
|
+
action :create
|
36
|
+
end
|
37
|
+
```
|
38
|
+
DOC
|
28
39
|
|
29
40
|
property :program_name, String,
|
30
41
|
description: "The name of the program to run at login if it differs from the resource block's name.",
|
@@ -30,6 +30,32 @@ class Chef
|
|
30
30
|
|
31
31
|
description "Use the **windows_certificate** resource to install a certificate into the Windows certificate store from a file. The resource grants read-only access to the private key for designated accounts. Due to current limitations in WinRM, installing certificates remotely may not work if the operation requires a user profile. Operations on the local machine store should still work."
|
32
32
|
introduced "14.7"
|
33
|
+
examples <<~DOC
|
34
|
+
**Add PFX cert to local machine personal store and grant accounts read-only access to private key**
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
windows_certificate 'c:/test/mycert.pfx' do
|
38
|
+
pfx_password 'password'
|
39
|
+
private_key_acl ["acme\\fred", "pc\\jane"]
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Add cert to trusted intermediate store**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
windows_certificate 'c:/test/mycert.cer' do
|
47
|
+
store_name 'CA'
|
48
|
+
end
|
49
|
+
```
|
50
|
+
|
51
|
+
**Remove all certificates matching the subject**
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
windows_certificate 'me.acme.com' do
|
55
|
+
action :delete
|
56
|
+
end
|
57
|
+
```
|
58
|
+
DOC
|
33
59
|
|
34
60
|
property :source, String,
|
35
61
|
description: "The source file (for create and acl_add), thumbprint (for delete and acl_add) or subject (for delete) if it differs from the resource block's name.",
|
@@ -308,7 +334,7 @@ class Chef
|
|
308
334
|
#
|
309
335
|
def import_certificates(cert_objs, is_pfx)
|
310
336
|
[cert_objs].flatten.each do |cert_obj|
|
311
|
-
thumbprint = OpenSSL::Digest
|
337
|
+
thumbprint = OpenSSL::Digest.new("SHA1", cert_obj.to_der).to_s # Fetch its thumbprint
|
312
338
|
# Need to check if return value is Boolean:true
|
313
339
|
# If not then the given certificate should be added in certstore
|
314
340
|
if verify_cert(thumbprint) == true
|
@@ -50,7 +50,7 @@ class Chef
|
|
50
50
|
ps_results = powershell_out("Get-DfsnServerConfiguration -ComputerName '#{ENV["COMPUTERNAME"]}' | Select LdapTimeoutSec, PreferLogonDC, EnableSiteCostedReferrals, SyncIntervalSec, UseFqdn | ConvertTo-Json")
|
51
51
|
|
52
52
|
if ps_results.error?
|
53
|
-
raise "The dfs_server resource failed to fetch the current state via the Get-DfsnServerConfiguration PowerShell
|
53
|
+
raise "The dfs_server resource failed to fetch the current state via the Get-DfsnServerConfiguration PowerShell cmdlet. Is the DFS Windows feature installed?"
|
54
54
|
end
|
55
55
|
|
56
56
|
Chef::Log.debug("The Get-DfsnServerConfiguration results were #{ps_results.stdout}")
|
@@ -93,7 +93,7 @@ class Chef
|
|
93
93
|
description: "The local address the firewall rule applies to."
|
94
94
|
|
95
95
|
property :local_port, [String, Integer, Array],
|
96
|
-
|
96
|
+
# split various formats of comma separated lists and provide a sorted array of strings to match PS output
|
97
97
|
coerce: proc { |d| d.is_a?(String) ? d.split(/\s*,\s*/).sort : Array(d).sort.map(&:to_s) },
|
98
98
|
description: "The local port the firewall rule applies to."
|
99
99
|
|
@@ -101,7 +101,7 @@ class Chef
|
|
101
101
|
description: "The remote address the firewall rule applies to."
|
102
102
|
|
103
103
|
property :remote_port, [String, Integer, Array],
|
104
|
-
|
104
|
+
# split various formats of comma separated lists and provide a sorted array of strings to match PS output
|
105
105
|
coerce: proc { |d| d.is_a?(String) ? d.split(/\s*,\s*/).sort : Array(d).sort.map(&:to_s) },
|
106
106
|
description: "The remote port the firewall rule applies to."
|
107
107
|
|
@@ -42,7 +42,7 @@ class Chef
|
|
42
42
|
|
43
43
|
property :source, String,
|
44
44
|
description: "A local filesystem path or URI that is used to source the font file.",
|
45
|
-
coerce: proc { |x| x
|
45
|
+
coerce: proc { |x| /^.:.*/.match?(x) ? x.tr('\\', "/").gsub("//", "/") : x }
|
46
46
|
|
47
47
|
action :install do
|
48
48
|
description "Install a font to the system fonts directory."
|
@@ -84,7 +84,7 @@ class Chef
|
|
84
84
|
|
85
85
|
# install the font into the appropriate fonts directory
|
86
86
|
def install_font
|
87
|
-
require "win32ole" if RUBY_PLATFORM
|
87
|
+
require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
88
88
|
fonts_dir = Chef::Util::PathHelper.join(ENV["windir"], "fonts")
|
89
89
|
folder = WIN32OLE.new("Shell.Application").Namespace(fonts_dir)
|
90
90
|
converge_by("install font #{new_resource.font_name} to #{fonts_dir}") do
|
@@ -96,7 +96,7 @@ class Chef
|
|
96
96
|
#
|
97
97
|
# @return [Boolean] Is the font is installed?
|
98
98
|
def font_exists?
|
99
|
-
require "win32ole" if RUBY_PLATFORM
|
99
|
+
require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
100
100
|
fonts_dir = WIN32OLE.new("WScript.Shell").SpecialFolders("Fonts")
|
101
101
|
logger.trace("Seeing if the font at #{Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name)} exists")
|
102
102
|
::File.exist?(Chef::Util::PathHelper.join(fonts_dir, new_resource.font_name))
|
@@ -19,7 +19,7 @@
|
|
19
19
|
require_relative "../mixin/uris"
|
20
20
|
require_relative "package"
|
21
21
|
require_relative "../provider/package/windows"
|
22
|
-
require_relative "../win32/error" if RUBY_PLATFORM
|
22
|
+
require_relative "../win32/error" if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
|
23
23
|
require_relative "../dist"
|
24
24
|
|
25
25
|
class Chef
|
@@ -104,8 +104,8 @@ class Chef
|
|
104
104
|
description: "An optional property to set the package name if it differs from the resource block's name.",
|
105
105
|
identity: true
|
106
106
|
|
107
|
-
|
108
|
-
|
107
|
+
# we don't redefine the version property as a string here since we store the current value
|
108
|
+
# of version and that may be an array if multiple versions of a package are present on the system
|
109
109
|
|
110
110
|
# windows can't take array options yet
|
111
111
|
property :options, String,
|
@@ -113,7 +113,7 @@ class Chef
|
|
113
113
|
# we do this here and not in the property itself because if automatic_managed
|
114
114
|
# is set then this validation is not necessary / doesn't make sense at all
|
115
115
|
def validate_name
|
116
|
-
return if /^.:.*.sys
|
116
|
+
return if /^.:.*.sys/.match?(new_resource.path)
|
117
117
|
|
118
118
|
raise "#{new_resource.path} does not match the format DRIVE:\\path\\file.sys for pagefiles. Example: C:\\pagefile.sys"
|
119
119
|
end
|
@@ -124,7 +124,7 @@ class Chef
|
|
124
124
|
# @return [Boolean]
|
125
125
|
def exists?(pagefile)
|
126
126
|
@exists ||= begin
|
127
|
-
logger.trace("Checking if #{pagefile} exists by
|
127
|
+
logger.trace("Checking if #{pagefile} exists by running: wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list")
|
128
128
|
cmd = shell_out("wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list", returns: [0])
|
129
129
|
cmd.stderr.empty? && (cmd.stdout =~ /SettingID=#{get_setting_id(pagefile)}/i)
|
130
130
|
end
|
@@ -62,7 +62,7 @@ class Chef
|
|
62
62
|
|
63
63
|
property :driver_name, String,
|
64
64
|
description: "The exact name of printer driver installed on the system.",
|
65
|
-
required:
|
65
|
+
required: [:create]
|
66
66
|
|
67
67
|
property :location, String,
|
68
68
|
description: "Printer location, such as `Fifth floor copy room`."
|
@@ -16,34 +16,20 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require_relative "../platform/query_helpers"
|
20
19
|
require_relative "script"
|
21
20
|
require_relative "../mixin/windows_architecture_helper"
|
22
21
|
|
23
22
|
class Chef
|
24
23
|
class Resource
|
25
24
|
class WindowsScript < Chef::Resource::Script
|
26
|
-
|
25
|
+
include Chef::Mixin::WindowsArchitectureHelper
|
27
26
|
|
28
|
-
|
27
|
+
unified_mode true
|
29
28
|
|
30
29
|
# This is an abstract resource meant to be subclasses; thus no 'provides'
|
31
30
|
|
32
31
|
set_guard_inherited_attributes(:architecture)
|
33
32
|
|
34
|
-
protected
|
35
|
-
|
36
|
-
def initialize(name, run_context, resource_name, interpreter_command)
|
37
|
-
super(name, run_context)
|
38
|
-
@interpreter = interpreter_command
|
39
|
-
@resource_name = resource_name if resource_name
|
40
|
-
@default_guard_interpreter = self.resource_name
|
41
|
-
end
|
42
|
-
|
43
|
-
include Chef::Mixin::WindowsArchitectureHelper
|
44
|
-
|
45
|
-
public
|
46
|
-
|
47
33
|
def architecture(arg = nil)
|
48
34
|
assert_architecture_compatible!(arg) unless arg.nil?
|
49
35
|
result = set_or_return(
|
@@ -21,28 +21,59 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsSecurityPolicy < Chef::Resource
|
24
|
-
|
24
|
+
provides :windows_security_policy
|
25
25
|
|
26
26
|
# The valid policy_names options found here
|
27
27
|
# https://github.com/ChrisAWalker/cSecurityOptions under 'AccountSettings'
|
28
|
-
policy_names = %w{
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
28
|
+
policy_names = %w{LockoutDuration
|
29
|
+
MaximumPasswordAge
|
30
|
+
MinimumPasswordAge
|
31
|
+
MinimumPasswordLength
|
32
|
+
PasswordComplexity
|
33
|
+
PasswordHistorySize
|
34
|
+
LockoutBadCount
|
35
|
+
ResetLockoutCount
|
36
|
+
RequireLogonToChangePassword
|
37
|
+
ForceLogoffWhenHourExpire
|
38
|
+
NewAdministratorName
|
39
|
+
NewGuestName
|
40
|
+
ClearTextPassword
|
41
|
+
LSAAnonymousNameLookup
|
42
|
+
EnableAdminAccount
|
43
|
+
EnableGuestAccount
|
44
|
+
}
|
43
45
|
description "Use the **windows_security_policy** resource to set a security policy on the Microsoft Windows platform."
|
44
46
|
introduced "16.0"
|
45
47
|
|
48
|
+
examples <<~DOC
|
49
|
+
**Set Administrator Account to Enabled**:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
windows_security_policy 'EnableAdminAccount' do
|
53
|
+
secvalue '1'
|
54
|
+
action :set
|
55
|
+
end
|
56
|
+
```
|
57
|
+
|
58
|
+
**Rename Administrator Account**:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
windows_security_policy 'NewAdministratorName' do
|
62
|
+
secvalue 'AwesomeChefGuy'
|
63
|
+
action :set
|
64
|
+
end
|
65
|
+
```
|
66
|
+
|
67
|
+
**Set Guest Account to Disabled**:
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
windows_security_policy 'EnableGuestAccount' do
|
71
|
+
secvalue '0'
|
72
|
+
action :set
|
73
|
+
end
|
74
|
+
```
|
75
|
+
DOC
|
76
|
+
|
46
77
|
property :secoption, String, name_property: true, required: true, equal_to: policy_names,
|
47
78
|
description: "The name of the policy to be set on windows platform to maintain its security."
|
48
79
|
|
@@ -187,8 +187,8 @@ class Chef
|
|
187
187
|
[f_users, c_users, r_users]
|
188
188
|
end
|
189
189
|
|
190
|
-
# local names are returned from Get-SmbShareAccess in the full format MACHINE\\NAME
|
191
|
-
# but users of this resource would simply say NAME so we need to strip the values for comparison
|
190
|
+
# local names are returned from Get-SmbShareAccess in the full format MACHINE\\NAME
|
191
|
+
# but users of this resource would simply say NAME so we need to strip the values for comparison
|
192
192
|
def stripped_account(name)
|
193
193
|
name.slice!("#{node["hostname"]}\\")
|
194
194
|
name
|
@@ -34,7 +34,6 @@ class Chef
|
|
34
34
|
description 'Make a shortcut to C:\\original_dir'
|
35
35
|
end
|
36
36
|
```
|
37
|
-
|
38
37
|
DOC
|
39
38
|
|
40
39
|
property :shortcut_name, String,
|
@@ -57,7 +56,7 @@ class Chef
|
|
57
56
|
description: "Icon to use for the shortcut. Accepts the format of `path, index`, where index is the icon file to use. See Microsoft's [documentation](https://msdn.microsoft.com/en-us/library/3s9bx7at.aspx) for details"
|
58
57
|
|
59
58
|
load_current_value do |desired|
|
60
|
-
require "win32ole" if RUBY_PLATFORM
|
59
|
+
require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
|
61
60
|
|
62
61
|
link = WIN32OLE.new("WScript.Shell").CreateShortcut(desired.shortcut_name)
|
63
62
|
name desired.shortcut_name
|
@@ -189,11 +189,11 @@ class Chef
|
|
189
189
|
description: "The frequency with which to run the task."
|
190
190
|
|
191
191
|
property :start_day, String,
|
192
|
-
description: "Specifies the first date on which the task runs in MM/DD/YYYY format.",
|
192
|
+
description: "Specifies the first date on which the task runs in **MM/DD/YYYY** format.",
|
193
193
|
default_description: "The current date."
|
194
194
|
|
195
195
|
property :start_time, String,
|
196
|
-
description: "Specifies the start time to run the task, in HH:mm format."
|
196
|
+
description: "Specifies the start time to run the task, in **HH:mm** format."
|
197
197
|
|
198
198
|
property :day, [String, Integer],
|
199
199
|
description: "The day(s) on which the task runs."
|
@@ -272,16 +272,16 @@ class Chef
|
|
272
272
|
|
273
273
|
private
|
274
274
|
|
275
|
-
|
276
|
-
|
277
|
-
|
275
|
+
## Resource is not idempotent when day, start_day is not provided with frequency :weekly
|
276
|
+
## we set start_day when not given by user as current date based on which we set the day property for current current date day is monday ..
|
277
|
+
## we set the monday as the day so at next run when new_resource.day is nil and current_resource day is monday due to which update gets called
|
278
278
|
def idempotency_warning_for_frequency_weekly(day, start_day)
|
279
279
|
if start_day.nil? && day.nil?
|
280
280
|
logger.warn "To maintain idempotency for frequency :weekly provide start_day, start_time and day."
|
281
281
|
end
|
282
282
|
end
|
283
283
|
|
284
|
-
|
284
|
+
# Validate the passed value is numeric values only if it is a string
|
285
285
|
def numeric_value_in_string?(val)
|
286
286
|
return true if Integer(val)
|
287
287
|
rescue ArgumentError
|
@@ -295,19 +295,19 @@ class Chef
|
|
295
295
|
end
|
296
296
|
|
297
297
|
def validate_frequency_monthly(frequency_modifier, months, day)
|
298
|
-
# validates the frequency :monthly and raises error if frequency_modifier is first, second,
|
298
|
+
# validates the frequency :monthly and raises error if frequency_modifier is first, second, third etc and day is not provided
|
299
299
|
if (frequency_modifier != 1) && (frequency_modifier_includes_days_of_weeks?(frequency_modifier)) && !(day)
|
300
|
-
raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be
|
300
|
+
raise ArgumentError, "Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be separated by comma."
|
301
301
|
end
|
302
302
|
|
303
|
-
#
|
304
|
-
# Not checking value 1 here for
|
303
|
+
# frequency_modifier 2-12 is used to set every (n) months, so using :months property with frequency_modifier is not valid since they both used to set months.
|
304
|
+
# Not checking value 1 here for frequency_modifier since we are setting that as default value it won't break anything since preference is given to months property
|
305
305
|
if (frequency_modifier.to_i.between?(2, 12)) && !(months.nil?)
|
306
306
|
raise ArgumentError, "For frequency :monthly either use property months or frequency_modifier to set months."
|
307
307
|
end
|
308
308
|
end
|
309
309
|
|
310
|
-
|
310
|
+
# returns true if frequency_modifier has values First, second, third, fourth, last, lastday
|
311
311
|
def frequency_modifier_includes_days_of_weeks?(frequency_modifier)
|
312
312
|
frequency_modifier = frequency_modifier.to_s.split(",")
|
313
313
|
frequency_modifier.map! { |value| value.strip.upcase }
|
@@ -322,7 +322,7 @@ class Chef
|
|
322
322
|
raise ArgumentError, "Invalid value passed for `random_delay`. Please pass seconds as an Integer (e.g. 60) or a String with numeric values only (e.g. '60')." unless numeric_value_in_string?(random_delay)
|
323
323
|
end
|
324
324
|
|
325
|
-
|
325
|
+
# @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~f
|
326
326
|
def validate_start_day(start_day, frequency)
|
327
327
|
if start_day && frequency == :none
|
328
328
|
raise ArgumentError, "`start_day` property is not supported with frequency: #{frequency}"
|
@@ -330,15 +330,15 @@ class Chef
|
|
330
330
|
|
331
331
|
# make sure the start_day is in MM/DD/YYYY format: http://rubular.com/r/cgjHemtWl5
|
332
332
|
if start_day
|
333
|
-
raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$}
|
333
|
+
raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$}.match?(start_day)
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
337
|
-
|
337
|
+
# @todo when we drop ruby 2.3 support this should be converted to .match?() instead of =~
|
338
338
|
def validate_start_time(start_time, frequency)
|
339
339
|
if start_time
|
340
340
|
raise ArgumentError, "`start_time` property is not supported with `frequency :none`" if frequency == :none
|
341
|
-
raise ArgumentError, "`start_time` property must be in the HH:mm format (e.g. 6:20pm -> 18:20)." unless /^[0-2][0-9]:[0-5][0-9]
|
341
|
+
raise ArgumentError, "`start_time` property must be in the HH:mm format (e.g. 6:20pm -> 18:20)." unless /^[0-2][0-9]:[0-5][0-9]$/.match?(start_time)
|
342
342
|
else
|
343
343
|
raise ArgumentError, "`start_time` needs to be provided with `frequency :once`" if frequency == :once
|
344
344
|
end
|
@@ -434,7 +434,7 @@ class Chef
|
|
434
434
|
end
|
435
435
|
end
|
436
436
|
|
437
|
-
|
437
|
+
# This method returns true if day has values from 1-31 which is a days of moths and used with frequency :monthly
|
438
438
|
def days_includes_days_of_months?(days)
|
439
439
|
days.map! { |day| day.to_s.strip.downcase }
|
440
440
|
(days - VALID_DAYS_OF_MONTH).empty?
|
@@ -452,11 +452,11 @@ class Chef
|
|
452
452
|
end
|
453
453
|
end
|
454
454
|
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
455
|
+
# Converts the number of seconds to an ISO8601 duration format and returns it.
|
456
|
+
# Ref : https://github.com/arnau/ISO8601/blob/master/lib/iso8601/duration.rb#L18-L23
|
457
|
+
# e.g.
|
458
|
+
# ISO8601::Duration.new(65707200).to_s
|
459
|
+
# returns 'PT65707200S'
|
460
460
|
def sec_to_dur(seconds)
|
461
461
|
ISO8601::Duration.new(seconds.to_i).to_s
|
462
462
|
end
|
@@ -68,10 +68,52 @@ class Chef
|
|
68
68
|
}
|
69
69
|
|
70
70
|
provides :windows_user_privilege
|
71
|
-
description "The windows_user_privilege resource allows to add and set principal (User/Group) to the specified privilege
|
71
|
+
description "The windows_user_privilege resource allows to add and set principal (User/Group) to the specified privilege.\n Ref: https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-rights-assignment"
|
72
72
|
|
73
73
|
introduced "16.0"
|
74
74
|
|
75
|
+
examples <<~DOC
|
76
|
+
**Set the SeNetworkLogonRight Privilege for the Builtin Administrators Group and Authenticated Users**:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
windows_user_privilege 'Network Logon Rights' do
|
80
|
+
privilege 'SeNetworkLogonRight'
|
81
|
+
users ['BUILTIN\\Administrators', 'NT AUTHORITY\\Authenticated Users']
|
82
|
+
action :set
|
83
|
+
end
|
84
|
+
```
|
85
|
+
|
86
|
+
**Add the SeDenyRemoteInteractiveLogonRight Privilege to the Builtin Guests and Local Accounts User Groups**:
|
87
|
+
|
88
|
+
```ruby
|
89
|
+
windows_user_privilege 'Remote interactive logon' do
|
90
|
+
privilege 'SeDenyRemoteInteractiveLogonRight'
|
91
|
+
users ['Builtin\\Guests', 'NT AUTHORITY\\Local Account']
|
92
|
+
action :add
|
93
|
+
end
|
94
|
+
```
|
95
|
+
|
96
|
+
**Provide only the Builtin Guests and Administrator Groups with the SeCreatePageFile Privilege**:
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
windows_user_privilege 'Create Pagefile' do
|
100
|
+
privilege 'SeCreatePagefilePrivilege'
|
101
|
+
users ['BUILTIN\\Guests', 'BUILTIN\\Administrators']
|
102
|
+
action :set
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
106
|
+
**Remove the SeCreatePageFile Privilege from the Builtin Guests Group**:
|
107
|
+
|
108
|
+
```ruby
|
109
|
+
windows_user_privilege 'Create Pagefile' do
|
110
|
+
privilege 'SeCreatePagefilePrivilege'
|
111
|
+
users ['BUILTIN\\Guests']
|
112
|
+
action :remove
|
113
|
+
end
|
114
|
+
```
|
115
|
+
DOC
|
116
|
+
|
75
117
|
property :principal, String,
|
76
118
|
description: "An optional property to add the user to the given privilege. Use only with add and remove action.",
|
77
119
|
name_property: true
|
@@ -84,8 +126,8 @@ class Chef
|
|
84
126
|
required: true,
|
85
127
|
coerce: proc { |v| v.is_a?(String) ? Array[v] : v },
|
86
128
|
callbacks: {
|
87
|
-
"Option privilege must include any of the: #{privilege_opts}" => lambda {
|
88
|
-
|
129
|
+
"Option privilege must include any of the: #{privilege_opts}" => lambda { |v|
|
130
|
+
(privilege_opts & v).size == v.size
|
89
131
|
},
|
90
132
|
}
|
91
133
|
|