chef 16.2.73-universal-mingw32 → 16.4.41-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 +4 -4
- data/Rakefile +1 -1
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +2 -1
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +13 -1
- data/lib/chef/application/apply.rb +5 -5
- data/lib/chef/application/windows_service.rb +27 -27
- data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
- data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/client.rb +14 -14
- data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
- data/lib/chef/cookbook/syntax_check.rb +1 -2
- data/lib/chef/cookbook_loader.rb +15 -29
- data/lib/chef/data_bag.rb +1 -2
- data/lib/chef/data_collector/run_end_message.rb +11 -1
- data/lib/chef/deprecated.rb +8 -0
- data/lib/chef/dsl/platform_introspection.rb +9 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/environment.rb +3 -4
- data/lib/chef/exceptions.rb +4 -1
- data/lib/chef/file_content_management/tempfile.rb +9 -9
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http.rb +11 -11
- data/lib/chef/http/authenticator.rb +3 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +6 -12
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
- data/lib/chef/knife/config_get.rb +1 -0
- data/lib/chef/knife/config_list_profiles.rb +4 -1
- data/lib/chef/knife/configure.rb +3 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +28 -33
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
- data/lib/chef/knife/core/subcommand_loader.rb +20 -1
- data/lib/chef/knife/core/ui.rb +8 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +32 -25
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/rehash.rb +3 -21
- data/lib/chef/knife/ssh.rb +11 -7
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/log.rb +7 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/chef_utils_wiring.rb +40 -0
- data/lib/chef/mixin/deep_merge.rb +35 -6
- data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
- data/lib/chef/mixin/openssl_helper.rb +30 -6
- data/lib/chef/mixin/path_sanity.rb +5 -4
- data/lib/chef/mixin/shell_out.rb +4 -188
- data/lib/chef/mixin/template.rb +1 -0
- data/lib/chef/mixin/which.rb +6 -3
- data/lib/chef/mixins.rb +1 -0
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node.rb +36 -12
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +21 -18
- data/lib/chef/platform/service_helpers.rb +31 -28
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/git.rb +17 -9
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/solaris.rb +0 -1
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/snap.rb +3 -4
- data/lib/chef/provider/package/windows.rb +9 -4
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/route.rb +1 -1
- data/lib/chef/provider/service.rb +2 -2
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/mac.rb +9 -9
- data/lib/chef/provider/windows_task.rb +0 -3
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +1 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/recipe.rb +1 -1
- data/lib/chef/resource.rb +8 -10
- data/lib/chef/resource/apt_repository.rb +1 -10
- data/lib/chef/resource/build_essential.rb +2 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +13 -13
- data/lib/chef/resource/chocolatey_feature.rb +1 -2
- data/lib/chef/resource/cron/cron_d.rb +1 -1
- data/lib/chef/resource/cron_access.rb +2 -2
- data/lib/chef/resource/execute.rb +4 -5
- data/lib/chef/resource/homebrew_update.rb +2 -2
- data/lib/chef/resource/hostname.rb +18 -18
- data/lib/chef/resource/lwrp_base.rb +1 -0
- data/lib/chef/resource/macos_userdefaults.rb +176 -61
- data/lib/chef/resource/openssl_dhparam.rb +2 -0
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
- data/lib/chef/resource/openssl_x509_crl.rb +3 -2
- data/lib/chef/resource/openssl_x509_request.rb +23 -20
- data/lib/chef/resource/osx_profile.rb +227 -5
- data/lib/chef/resource/powershell_package_source.rb +1 -1
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/service.rb +2 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sudo.rb +2 -2
- data/lib/chef/resource/sysctl.rb +5 -5
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/user_ulimit.rb +1 -1
- data/lib/chef/resource/windows_ad_join.rb +2 -0
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +2 -0
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +25 -5
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +199 -0
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +17 -18
- data/lib/chef/resource/windows_printer_port.rb +14 -13
- data/lib/chef/resource/windows_security_policy.rb +51 -20
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +2 -0
- data/lib/chef/resource/windows_workgroup.rb +2 -3
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resource_inspector.rb +7 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +3 -4
- data/lib/chef/run_context/cookbook_compiler.rb +20 -20
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell.rb +1 -1
- data/lib/chef/shell/shell_session.rb +2 -0
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +11 -12
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/win32/file.rb +2 -2
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/knife/ssh_spec.rb +5 -16
- data/spec/functional/resource/aix_service_spec.rb +0 -2
- data/spec/functional/resource/aixinit_service_spec.rb +7 -8
- data/spec/functional/resource/apt_package_spec.rb +0 -1
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +0 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/git_spec.rb +23 -1
- data/spec/functional/resource/group_spec.rb +12 -8
- data/spec/functional/resource/insserv_spec.rb +4 -5
- data/spec/functional/resource/link_spec.rb +20 -20
- data/spec/functional/resource/powershell_script_spec.rb +4 -4
- data/spec/functional/resource/remote_file_spec.rb +1 -7
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
- data/spec/functional/resource/windows_user_privilege_spec.rb +1 -1
- data/spec/functional/run_lock_spec.rb +26 -25
- data/spec/functional/shell_spec.rb +5 -5
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_get_profile_spec.rb +69 -68
- data/spec/integration/knife/config_get_spec.rb +126 -125
- data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
- data/spec/integration/knife/config_use_profile_spec.rb +110 -109
- data/spec/integration/knife/cookbook_upload_spec.rb +27 -0
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/notifying_block_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
- data/spec/integration/recipes/resource_load_spec.rb +2 -0
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +1 -1
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +16 -10
- data/spec/support/chef_helpers.rb +1 -20
- data/spec/support/platform_helpers.rb +9 -11
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +20 -21
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +3 -3
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/integration/knife_support.rb +2 -9
- data/spec/support/shared/unit/application_dot_d.rb +0 -1
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/unit/application_spec.rb +4 -2
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
- data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
- data/spec/unit/data_collector_spec.rb +29 -1
- data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
- data/spec/unit/http/api_versions_spec.rb +19 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +16 -20
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/log/syslog_spec.rb +6 -10
- data/spec/unit/log/winevt_spec.rb +21 -13
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +0 -1
- data/spec/unit/mixin/shell_out_spec.rb +25 -26
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/which.rb +8 -0
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +6 -2
- data/spec/unit/node_spec.rb +103 -16
- data/spec/unit/property_spec.rb +5 -5
- data/spec/unit/provider/execute_spec.rb +0 -7
- data/spec/unit/provider/ifconfig_spec.rb +0 -1
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +5 -10
- data/spec/unit/provider/package/smartos_spec.rb +1 -1
- data/spec/unit/provider/package/windows_spec.rb +30 -53
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +2 -6
- data/spec/unit/provider/systemd_unit_spec.rb +28 -24
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/provider_spec.rb +1 -0
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/execute_spec.rb +123 -118
- data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
- data/spec/unit/resource/osx_profile_spec.rb +233 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
- data/spec/unit/resource/windows_package_spec.rb +1 -0
- data/spec/unit/resource_reporter_spec.rb +1 -1
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/server_api_spec.rb +43 -16
- data/spec/unit/util/diff_spec.rb +1 -15
- data/spec/unit/win32/security_spec.rb +4 -3
- data/tasks/rspec.rb +1 -1
- metadata +39 -31
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -22,6 +22,8 @@ require_relative "../resource"
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
24
24
|
class WindowsPrinterPort < Chef::Resource
|
25
|
+
unified_mode true
|
26
|
+
|
25
27
|
require "resolv"
|
26
28
|
|
27
29
|
provides(:windows_printer_port) { true }
|
@@ -82,30 +84,19 @@ class Chef
|
|
82
84
|
validation_message: "port_protocol must be either 1 for RAW or 2 for LPR!",
|
83
85
|
default: 1, equal_to: [1, 2]
|
84
86
|
|
85
|
-
property :exists, [TrueClass, FalseClass],
|
86
|
-
skip_docs: true
|
87
|
-
|
88
87
|
PORTS_REG_KEY = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\\'.freeze unless defined?(PORTS_REG_KEY)
|
89
88
|
|
90
|
-
def port_exists?(name)
|
91
|
-
port_reg_key = PORTS_REG_KEY + name
|
92
|
-
|
93
|
-
logger.trace "Checking to see if this reg key exists: '#{port_reg_key}'"
|
94
|
-
registry_key_exists?(port_reg_key)
|
95
|
-
end
|
96
|
-
|
97
89
|
# @todo Set @current_resource port properties from registry
|
98
90
|
load_current_value do |desired|
|
99
91
|
name desired.name
|
100
92
|
ipv4_address desired.ipv4_address
|
101
93
|
port_name desired.port_name || "IP_#{desired.ipv4_address}"
|
102
|
-
exists port_exists?(desired.port_name || "IP_#{desired.ipv4_address}")
|
103
94
|
end
|
104
95
|
|
105
96
|
action :create do
|
106
97
|
description "Create the new printer port if it does not already exist."
|
107
98
|
|
108
|
-
if
|
99
|
+
if port_exists?
|
109
100
|
Chef::Log.info "#{@new_resource} already exists - nothing to do."
|
110
101
|
else
|
111
102
|
converge_by("Create #{@new_resource}") do
|
@@ -117,7 +108,7 @@ class Chef
|
|
117
108
|
action :delete do
|
118
109
|
description "Delete an existing printer port."
|
119
110
|
|
120
|
-
if
|
111
|
+
if port_exists?
|
121
112
|
converge_by("Delete #{@new_resource}") do
|
122
113
|
delete_printer_port
|
123
114
|
end
|
@@ -127,6 +118,16 @@ class Chef
|
|
127
118
|
end
|
128
119
|
|
129
120
|
action_class do
|
121
|
+
private
|
122
|
+
|
123
|
+
def port_exists?
|
124
|
+
name = new_resource.port_name || "IP_#{new_resource.ipv4_address}"
|
125
|
+
port_reg_key = PORTS_REG_KEY + name
|
126
|
+
|
127
|
+
logger.trace "Checking to see if this reg key exists: '#{port_reg_key}'"
|
128
|
+
registry_key_exists?(port_reg_key)
|
129
|
+
end
|
130
|
+
|
130
131
|
def create_printer_port
|
131
132
|
port_name = new_resource.port_name || "IP_#{new_resource.ipv4_address}"
|
132
133
|
|
@@ -21,6 +21,8 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsSecurityPolicy < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
24
26
|
provides :windows_security_policy
|
25
27
|
|
26
28
|
# The valid policy_names options found here
|
@@ -80,13 +82,55 @@ class Chef
|
|
80
82
|
property :secvalue, String, required: true,
|
81
83
|
description: "Policy value to be set for policy name."
|
82
84
|
|
85
|
+
load_current_value do |desired|
|
86
|
+
powershell_code = <<-CODE
|
87
|
+
C:\\Windows\\System32\\secedit /export /cfg $env:TEMP\\secopts_export.inf | Out-Null
|
88
|
+
# cspell:disable-next-line
|
89
|
+
$security_options_data = (Get-Content $env:TEMP\\secopts_export.inf | Select-String -Pattern "^[CEFLMNPR].* =.*$" | Out-String)
|
90
|
+
Remove-Item $env:TEMP\\secopts_export.inf -force
|
91
|
+
$security_options_hash = ($security_options_data -Replace '"'| ConvertFrom-StringData)
|
92
|
+
([PSCustomObject]@{
|
93
|
+
RequireLogonToChangePassword = $security_options_hash.RequireLogonToChangePassword
|
94
|
+
PasswordComplexity = $security_options_hash.PasswordComplexity
|
95
|
+
LSAAnonymousNameLookup = $security_options_hash.LSAAnonymousNameLookup
|
96
|
+
EnableAdminAccount = $security_options_hash.EnableAdminAccount
|
97
|
+
PasswordHistorySize = $security_options_hash.PasswordHistorySize
|
98
|
+
MinimumPasswordLength = $security_options_hash.MinimumPasswordLength
|
99
|
+
ResetLockoutCount = $security_options_hash.ResetLockoutCount
|
100
|
+
MaximumPasswordAge = $security_options_hash.MaximumPasswordAge
|
101
|
+
ClearTextPassword = $security_options_hash.ClearTextPassword
|
102
|
+
NewAdministratorName = $security_options_hash.NewAdministratorName
|
103
|
+
LockoutDuration = $security_options_hash.LockoutDuration
|
104
|
+
EnableGuestAccount = $security_options_hash.EnableGuestAccount
|
105
|
+
ForceLogoffWhenHourExpire = $security_options_hash.ForceLogoffWhenHourExpire
|
106
|
+
MinimumPasswordAge = $security_options_hash.MinimumPasswordAge
|
107
|
+
NewGuestName = $security_options_hash.NewGuestName
|
108
|
+
LockoutBadCount = $security_options_hash.LockoutBadCount
|
109
|
+
}) | ConvertTo-Json
|
110
|
+
CODE
|
111
|
+
output = powershell_out(powershell_code)
|
112
|
+
current_value_does_not_exist! if output.stdout.empty?
|
113
|
+
state = Chef::JSONCompat.from_json(output.stdout)
|
114
|
+
|
115
|
+
if desired.secoption == "ResetLockoutCount" || desired.secoption == "LockoutDuration"
|
116
|
+
if state["LockoutBadCount"] == "0"
|
117
|
+
raise Chef::Exceptions::ValidationFailed.new "#{desired.secoption} cannot be set unless the \"LockoutBadCount\" security policy has been set to a non-zero value"
|
118
|
+
else
|
119
|
+
secvalue state[desired.secoption.to_s]
|
120
|
+
end
|
121
|
+
else
|
122
|
+
secvalue state[desired.secoption.to_s]
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
83
126
|
action :set do
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
127
|
+
converge_if_changed :secvalue do
|
128
|
+
security_option = new_resource.secoption
|
129
|
+
security_value = new_resource.secvalue
|
130
|
+
|
131
|
+
cmd = <<-EOH
|
89
132
|
$security_option = "#{security_option}"
|
133
|
+
C:\\Windows\\System32\\secedit /export /cfg $env:TEMP\\#{security_option}_Export.inf
|
90
134
|
if ( ($security_option -match "NewGuestName") -Or ($security_option -match "NewAdministratorName") )
|
91
135
|
{
|
92
136
|
$#{security_option}_Remediation = (Get-Content $env:TEMP\\#{security_option}_Export.inf) | Foreach-Object { $_ -replace '#{security_option}\\s*=\\s*\\"\\w*\\"', '#{security_option} = "#{security_value}"' } | Set-Content $env:TEMP\\#{security_option}_Export.inf
|
@@ -99,21 +143,8 @@ class Chef
|
|
99
143
|
}
|
100
144
|
Remove-Item $env:TEMP\\#{security_option}_Export.inf -force
|
101
145
|
EOH
|
102
|
-
|
103
|
-
|
104
|
-
$ExportAudit = (Get-Content $env:TEMP\\#{security_option}_Export.inf | Select-String -Pattern #{security_option})
|
105
|
-
$check_digit = $ExportAudit -match '#{security_option} = #{security_value}'
|
106
|
-
$check_string = $ExportAudit -match '#{security_option} = "#{security_value}"'
|
107
|
-
if ( $check_string -Or $check_digit )
|
108
|
-
{
|
109
|
-
Remove-Item $env:TEMP\\#{security_option}_Export.inf -force
|
110
|
-
$true
|
111
|
-
}
|
112
|
-
else
|
113
|
-
{
|
114
|
-
$false
|
115
|
-
}
|
116
|
-
EOH
|
146
|
+
|
147
|
+
powershell_out!(cmd)
|
117
148
|
end
|
118
149
|
end
|
119
150
|
end
|
@@ -26,6 +26,8 @@ require_relative "../util/path_helper"
|
|
26
26
|
class Chef
|
27
27
|
class Resource
|
28
28
|
class WindowsShare < Chef::Resource
|
29
|
+
unified_mode true
|
30
|
+
|
29
31
|
provides :windows_share
|
30
32
|
|
31
33
|
description "Use the **windows_share** resource to create, modify and remove Windows shares."
|
@@ -59,7 +61,7 @@ class Chef
|
|
59
61
|
# Specifies the path of the location of the folder to share. The path must be fully qualified. Relative paths or paths that contain wildcard characters are not permitted.
|
60
62
|
property :path, String,
|
61
63
|
description: "The path of the folder to share. Required when creating. If the share already exists on a different path then it is deleted and re-created.",
|
62
|
-
coerce: proc { |p| p.
|
64
|
+
coerce: proc { |p| p.tr("/", "\\") || p }
|
63
65
|
|
64
66
|
# Specifies an optional description of the SMB share. A description of the share is displayed by running the Get-SmbShare cmdlet. The description may not contain more than 256 characters.
|
65
67
|
property :description, String,
|
@@ -117,8 +119,6 @@ class Chef
|
|
117
119
|
# Specifies which files and folders in the SMB share are visible to users. AccessBased: SMB does not the display the files and folders for a share to a user unless that user has rights to access the files and folders. By default, access-based enumeration is disabled for new SMB shares. Unrestricted: SMB displays files and folders to a user even when the user does not have permission to access the items.
|
118
120
|
# property :folder_enumeration_mode, String, equal_to: %(AccessBased Unrestricted)
|
119
121
|
|
120
|
-
include Chef::Mixin::PowershellOut
|
121
|
-
|
122
122
|
load_current_value do |desired|
|
123
123
|
# this command selects individual objects because EncryptData & CachingMode have underlying
|
124
124
|
# types that get converted to their Integer values by ConvertTo-Json & we need to make sure
|
@@ -233,6 +233,8 @@ class Chef
|
|
233
233
|
end
|
234
234
|
|
235
235
|
action_class do
|
236
|
+
private
|
237
|
+
|
236
238
|
def different_path?
|
237
239
|
return false if current_resource.nil? # going from nil to something isn't different for our concerns
|
238
240
|
return false if current_resource.path == Chef::Util::PathHelper.cleanpath(new_resource.path)
|
@@ -21,6 +21,8 @@ require_relative "../resource"
|
|
21
21
|
class Chef
|
22
22
|
class Resource
|
23
23
|
class WindowsShortcut < Chef::Resource
|
24
|
+
unified_mode true
|
25
|
+
|
24
26
|
provides(:windows_shortcut) { true }
|
25
27
|
|
26
28
|
description "Use the **windows_shortcut** resource to create shortcut files on Windows."
|
@@ -20,6 +20,8 @@ require_relative "../resource"
|
|
20
20
|
class Chef
|
21
21
|
class Resource
|
22
22
|
class WindowsUac < Chef::Resource
|
23
|
+
unified_mode true
|
24
|
+
|
23
25
|
provides :windows_uac
|
24
26
|
|
25
27
|
description 'The *windows_uac* resource configures UAC on Windows hosts by setting registry keys at `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`'
|
@@ -16,7 +16,6 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require_relative "../resource"
|
19
|
-
require_relative "../mixin/powershell_out"
|
20
19
|
require_relative "../dist"
|
21
20
|
|
22
21
|
class Chef
|
@@ -24,8 +23,6 @@ class Chef
|
|
24
23
|
class WindowsWorkgroup < Chef::Resource
|
25
24
|
provides :windows_workgroup
|
26
25
|
|
27
|
-
include Chef::Mixin::PowershellOut
|
28
|
-
|
29
26
|
description "Use the **windows_workgroup** resource to join or change the workgroup of a Windows host."
|
30
27
|
introduced "14.5"
|
31
28
|
examples <<~DOC
|
@@ -57,6 +54,7 @@ class Chef
|
|
57
54
|
|
58
55
|
property :password, String,
|
59
56
|
description: "The password for the local administrator user. Required if using the `user` property.",
|
57
|
+
sensitive: true,
|
60
58
|
desired_state: false
|
61
59
|
|
62
60
|
property :reboot, Symbol,
|
@@ -83,6 +81,7 @@ class Chef
|
|
83
81
|
end
|
84
82
|
|
85
83
|
# define this again so we can default it to true. Otherwise failures print the password
|
84
|
+
# FIXME: this should now be unnecessary with the password property itself marked sensitive?
|
86
85
|
property :sensitive, [TrueClass, FalseClass],
|
87
86
|
default: true, desired_state: false
|
88
87
|
|
@@ -59,11 +59,17 @@ module ResourceInspector
|
|
59
59
|
required: opts[:required] || false,
|
60
60
|
default: opts[:default_description] || get_default(opts[:default]),
|
61
61
|
name_property: opts[:name_property] || false,
|
62
|
-
equal_to:
|
62
|
+
equal_to: sort_equal_to(opts[:equal_to]) }
|
63
63
|
end
|
64
64
|
data
|
65
65
|
end
|
66
66
|
|
67
|
+
def self.sort_equal_to(equal_to)
|
68
|
+
Array(equal_to).sort.map(&:inspect)
|
69
|
+
rescue ArgumentError
|
70
|
+
Array(equal_to).map(&:inspect)
|
71
|
+
end
|
72
|
+
|
67
73
|
def self.extract_cookbook(path, complete)
|
68
74
|
path = File.expand_path(path)
|
69
75
|
dir, name = File.split(path)
|
data/lib/chef/resources.rb
CHANGED
@@ -153,6 +153,7 @@ require_relative "resource/windows_dns_zone"
|
|
153
153
|
require_relative "resource/windows_feature"
|
154
154
|
require_relative "resource/windows_feature_dism"
|
155
155
|
require_relative "resource/windows_feature_powershell"
|
156
|
+
require_relative "resource/windows_firewall_profile"
|
156
157
|
require_relative "resource/windows_firewall_rule"
|
157
158
|
require_relative "resource/windows_font"
|
158
159
|
require_relative "resource/windows_pagefile"
|
data/lib/chef/role.rb
CHANGED
@@ -133,7 +133,7 @@ class Chef
|
|
133
133
|
def to_h
|
134
134
|
env_run_lists_without_default = @env_run_lists.dup
|
135
135
|
env_run_lists_without_default.delete("_default")
|
136
|
-
|
136
|
+
{
|
137
137
|
"name" => @name,
|
138
138
|
"description" => @description,
|
139
139
|
"json_class" => self.class.name,
|
@@ -149,7 +149,6 @@ class Chef
|
|
149
149
|
accumulator
|
150
150
|
end,
|
151
151
|
}
|
152
|
-
result
|
153
152
|
end
|
154
153
|
|
155
154
|
alias_method :to_hash, :to_h
|
@@ -257,11 +256,11 @@ class Chef
|
|
257
256
|
|
258
257
|
js_path, rb_path = js_files.first, rb_files.first
|
259
258
|
|
260
|
-
if js_path && File.
|
259
|
+
if js_path && File.exist?(js_path)
|
261
260
|
# from_json returns object.class => json_class in the JSON.
|
262
261
|
hsh = Chef::JSONCompat.parse(IO.read(js_path))
|
263
262
|
return from_hash(hsh)
|
264
|
-
elsif rb_path && File.
|
263
|
+
elsif rb_path && File.exist?(rb_path)
|
265
264
|
role = Chef::Role.new
|
266
265
|
role.name(name)
|
267
266
|
role.from_file(rb_path)
|
@@ -169,17 +169,17 @@ class Chef
|
|
169
169
|
def compile_recipes
|
170
170
|
@events.recipe_load_start(run_list_expansion.recipes.size)
|
171
171
|
run_list_expansion.recipes.each do |recipe|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
172
|
+
|
173
|
+
path = resolve_recipe(recipe)
|
174
|
+
@run_context.load_recipe(recipe)
|
175
|
+
@events.recipe_file_loaded(path, recipe)
|
176
|
+
rescue Chef::Exceptions::RecipeNotFound => e
|
177
|
+
@events.recipe_not_found(e)
|
178
|
+
raise
|
179
|
+
rescue Exception => e
|
180
|
+
@events.recipe_file_load_failed(path, e, recipe)
|
181
|
+
raise
|
182
|
+
|
183
183
|
end
|
184
184
|
@events.recipe_load_complete
|
185
185
|
end
|
@@ -231,14 +231,14 @@ class Chef
|
|
231
231
|
|
232
232
|
def load_libraries_from_cookbook(cookbook_name, globs = "**/*.rb")
|
233
233
|
each_file_in_cookbook_by_segment(cookbook_name, :libraries, globs) do |filename|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
234
|
+
|
235
|
+
logger.trace("Loading cookbook #{cookbook_name}'s library file: #{filename}")
|
236
|
+
Kernel.require(filename)
|
237
|
+
@events.library_file_loaded(filename)
|
238
|
+
rescue Exception => e
|
239
|
+
@events.library_file_load_failed(filename, e)
|
240
|
+
raise
|
241
|
+
|
242
242
|
end
|
243
243
|
end
|
244
244
|
|
@@ -325,7 +325,7 @@ class Chef
|
|
325
325
|
|
326
326
|
def count_files_by_segment(segment, root_alias = nil)
|
327
327
|
cookbook_collection.inject(0) do |count, cookbook_by_name|
|
328
|
-
count + cookbook_by_name[1].segment_filenames(segment).size + (root_alias ? cookbook_by_name[1].files_for(:root_files).
|
328
|
+
count + cookbook_by_name[1].segment_filenames(segment).size + (root_alias ? cookbook_by_name[1].files_for(:root_files).count { |record| record[:name] == root_alias } : 0)
|
329
329
|
end
|
330
330
|
end
|
331
331
|
|
data/lib/chef/run_status.rb
CHANGED
@@ -25,17 +25,13 @@ class Chef::RunStatus
|
|
25
25
|
|
26
26
|
attr_reader :events
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
attr_writer :run_context
|
28
|
+
attr_accessor :run_context
|
31
29
|
|
32
30
|
attr_reader :start_time
|
33
31
|
|
34
32
|
attr_reader :end_time
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
attr_writer :exception
|
34
|
+
attr_accessor :exception
|
39
35
|
|
40
36
|
attr_accessor :run_id
|
41
37
|
|
data/lib/chef/shell.rb
CHANGED
@@ -339,7 +339,7 @@ module Shell
|
|
339
339
|
config[:config_file] = config_file_for_shell_mode(environment)
|
340
340
|
config_msg = config[:config_file] || "none (standalone session)"
|
341
341
|
puts "loading configuration: #{config_msg}"
|
342
|
-
Chef::Config.from_file(config[:config_file]) if !config[:config_file].nil? && File.
|
342
|
+
Chef::Config.from_file(config[:config_file]) if !config[:config_file].nil? && File.exist?(config[:config_file]) && File.readable?(config[:config_file])
|
343
343
|
Chef::Config.merge!(config)
|
344
344
|
end
|
345
345
|
|
@@ -41,6 +41,7 @@ module Shell
|
|
41
41
|
|
42
42
|
attr_accessor :node, :compile, :recipe, :json_configuration
|
43
43
|
attr_reader :node_attributes, :client
|
44
|
+
|
44
45
|
def initialize
|
45
46
|
@node_built = false
|
46
47
|
formatter = Chef::Formatters.new(Chef::Config.formatter, STDOUT, STDERR)
|
@@ -75,6 +76,7 @@ module Shell
|
|
75
76
|
end
|
76
77
|
|
77
78
|
attr_writer :run_context
|
79
|
+
|
78
80
|
def run_context
|
79
81
|
@run_context ||= rebuild_context
|
80
82
|
end
|