chef 16.1.16 → 16.2.44
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -3
- data/README.md +3 -3
- data/Rakefile +2 -2
- data/chef.gemspec +3 -3
- data/lib/chef/application/apply.rb +1 -1
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +1 -1
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +1 -1
- data/lib/chef/cookbook_version.rb +2 -2
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +17 -2
- 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/knife.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +3 -6
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/data_bag_create.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 +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/execute.rb +2 -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/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/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +2 -2
- data/lib/chef/provider/package/snap.rb +96 -27
- 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/powershell_script.rb +10 -14
- 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 +1 -1
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.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/dscl.rb +4 -4
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +5 -5
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +22 -11
- 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/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/execute.rb +477 -7
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/freebsd_package.rb +1 -1
- 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 +6 -19
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/mount.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/template.rb +1 -1
- 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 +26 -0
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +1 -1
- data/lib/chef/resource/windows_pagefile.rb +1 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +17 -15
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +4 -4
- data/lib/chef/resource/windows_user_privilege.rb +5 -5
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- 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/file.rb +1 -1
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- 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/remote_file_spec.rb +2 -2
- data/spec/functional/resource/windows_task_spec.rb +8 -8
- 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/unit/execute_resource.rb +1 -1
- 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/mixin/user_context_spec.rb +1 -9
- 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/package/powershell_spec.rb +95 -86
- 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/zypper_repository_spec.rb +60 -10
- 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_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/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- metadata +22 -22
- data/lib/chef/resource/cron.rb +0 -157
data/lib/chef/resource/ruby.rb
CHANGED
@@ -69,7 +69,7 @@ class Chef
|
|
69
69
|
|
70
70
|
property :local, [ TrueClass, FalseClass ],
|
71
71
|
default: false, desired_state: false,
|
72
|
-
description: "Load a template from a local path. By default, the #{Chef::Dist::CLIENT} loads templates from a cookbook
|
72
|
+
description: "Load a template from a local path. By default, the #{Chef::Dist::CLIENT} loads templates from a cookbook's /templates directory. When this property is set to true, use the source property to specify the path to a template on the local node."
|
73
73
|
|
74
74
|
# Declares a helper method to be defined in the template context when
|
75
75
|
# rendering.
|
@@ -25,6 +25,35 @@ class Chef
|
|
25
25
|
|
26
26
|
description "Use the **windows_ad_join** resource to join a Windows Active Directory domain."
|
27
27
|
introduced "14.0"
|
28
|
+
examples <<~DOC
|
29
|
+
**Join a domain**
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
windows_ad_join 'ad.example.org' do
|
33
|
+
domain_user 'nick'
|
34
|
+
domain_password 'p@ssw0rd1'
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
**Join a domain, as `win-workstation`**
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
windows_ad_join 'ad.example.org' do
|
42
|
+
domain_user 'nick'
|
43
|
+
domain_password 'p@ssw0rd1'
|
44
|
+
new_hostname 'win-workstation'
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
**Leave the current domain and re-join the `local` workgroup**
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
windows_ad_join 'Leave domain' do
|
52
|
+
action :leave
|
53
|
+
workgroup 'local'
|
54
|
+
end
|
55
|
+
```
|
56
|
+
DOC
|
28
57
|
|
29
58
|
property :domain_name, String,
|
30
59
|
description: "An optional property to set the FQDN of the Active Directory domain to join if it differs from the resource block's name.",
|
@@ -175,7 +204,7 @@ class Chef
|
|
175
204
|
# links: https://docs.microsoft.com/en-us/windows/win32/ad/naming-properties#userprincipalname https://tools.ietf.org/html/rfc822
|
176
205
|
# regex: https://rubular.com/r/isAWojpTMKzlnp
|
177
206
|
def sanitize_usename
|
178
|
-
if new_resource.domain_user
|
207
|
+
if /@/.match?(new_resource.domain_user)
|
179
208
|
new_resource.domain_user
|
180
209
|
else
|
181
210
|
"#{new_resource.domain_user}@#{new_resource.domain_name}"
|
@@ -0,0 +1,227 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Ross Moles (<rmoles@chef.io>)
|
3
|
+
# Author:: Rachel Rice (<rrice@chef.io>)
|
4
|
+
# Author:: Davin Taddeo (<davin@chef.io>)
|
5
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
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
|
+
|
22
|
+
class Chef
|
23
|
+
class Resource
|
24
|
+
class WindowsAuditPolicy < Chef::Resource
|
25
|
+
WIN_AUDIT_SUBCATEGORIES = ["Account Lockout",
|
26
|
+
"Application Generated",
|
27
|
+
"Application Group Management",
|
28
|
+
"Audit Policy Change",
|
29
|
+
"Authentication Policy Change",
|
30
|
+
"Authorization Policy Change",
|
31
|
+
"Central Policy Staging",
|
32
|
+
"Certification Services",
|
33
|
+
"Computer Account Management",
|
34
|
+
"Credential Validation",
|
35
|
+
"DPAPI Activity",
|
36
|
+
"Detailed Directory Service Replication",
|
37
|
+
"Detailed File Share",
|
38
|
+
"Directory Service Access",
|
39
|
+
"Directory Service Changes",
|
40
|
+
"Directory Service Replication",
|
41
|
+
"Distribution Group Management",
|
42
|
+
"File Share",
|
43
|
+
"File System",
|
44
|
+
"Filtering Platform Connection",
|
45
|
+
"Filtering Platform Packet Drop",
|
46
|
+
"Filtering Platform Policy Change",
|
47
|
+
"Group Membership",
|
48
|
+
"Handle Manipulation",
|
49
|
+
"IPsec Driver",
|
50
|
+
"IPsec Extended Mode",
|
51
|
+
"IPsec Main Mode",
|
52
|
+
"IPsec Quick Mode",
|
53
|
+
"Kerberos Authentication Service",
|
54
|
+
"Kerberos Service Ticket Operations",
|
55
|
+
"Kernel Object",
|
56
|
+
"Logoff",
|
57
|
+
"Logon",
|
58
|
+
"MPSSVC Rule-Level Policy Change",
|
59
|
+
"Network Policy Server",
|
60
|
+
"Non Sensitive Privilege Use",
|
61
|
+
"Other Account Logon Events",
|
62
|
+
"Other Account Management Events",
|
63
|
+
"Other Logon/Logoff Events",
|
64
|
+
"Other Object Access Events",
|
65
|
+
"Other Policy Change Events",
|
66
|
+
"Other Privilege Use Events",
|
67
|
+
"Other System Events",
|
68
|
+
"Plug and Play Events",
|
69
|
+
"Process Creation",
|
70
|
+
"Process Termination",
|
71
|
+
"RPC Events",
|
72
|
+
"Registry",
|
73
|
+
"Removable Storage",
|
74
|
+
"SAM",
|
75
|
+
"Security Group Management",
|
76
|
+
"Security State Change",
|
77
|
+
"Security System Extension",
|
78
|
+
"Sensitive Privilege Use",
|
79
|
+
"Special Logon",
|
80
|
+
"System Integrity",
|
81
|
+
"Token Right Adjusted Events",
|
82
|
+
"User / Device Claims",
|
83
|
+
"User Account Management",
|
84
|
+
].freeze
|
85
|
+
provides :windows_audit_policy
|
86
|
+
|
87
|
+
description "Use the **windows_audit_policy** resource to configure system level and per-user Windows advanced audit policy settings."
|
88
|
+
introduced "16.2"
|
89
|
+
|
90
|
+
examples <<~DOC
|
91
|
+
**Set Logon and Logoff policy to "Success and Failure"**:
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
windows_audit_policy "Set Audit Policy for 'Logon and Logoff' actions to 'Success and Failure'" do
|
95
|
+
subcategory %w(Logon Logoff)
|
96
|
+
success true
|
97
|
+
failure true
|
98
|
+
action :set
|
99
|
+
end
|
100
|
+
```
|
101
|
+
|
102
|
+
**Set Credential Validation policy to "Success"**:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
windows_audit_policy "Set Audit Policy for 'Credential Validation' actions to 'Success'" do
|
106
|
+
subcategory 'Credential Validation'
|
107
|
+
success true
|
108
|
+
failure false
|
109
|
+
action :set
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
**Enable CrashOnAuditFail option**:
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
windows_audit_policy 'Enable CrashOnAuditFail option' do
|
117
|
+
crash_on_audit_fail true
|
118
|
+
action :set
|
119
|
+
end
|
120
|
+
```
|
121
|
+
DOC
|
122
|
+
|
123
|
+
property :subcategory, [String, Array],
|
124
|
+
coerce: proc { |p| Array(p) },
|
125
|
+
description: "The audit policy subcategory, specified by GUID or name. Applied system-wide if no user is specified.",
|
126
|
+
callbacks: { "Subcategories entered should be actual advanced audit policy subcategories" => proc { |n| (Array(n) - WIN_AUDIT_SUBCATEGORIES).empty? } }
|
127
|
+
|
128
|
+
property :success, [true, false],
|
129
|
+
description: "Specify success auditing. By setting this property to true the resource will enable success for the category or sub category. Success is the default and is applied if neither success nor failure are specified."
|
130
|
+
|
131
|
+
property :failure, [true, false],
|
132
|
+
description: "Specify failure auditing. By setting this property to true the resource will enable failure for the category or sub category. Success is the default and is applied if neither success nor failure are specified."
|
133
|
+
|
134
|
+
property :include_user, String,
|
135
|
+
description: "The audit policy specified by the category or subcategory is applied per-user if specified. When a user is specified, include user. Include and exclude cannot be used at the same time."
|
136
|
+
|
137
|
+
property :exclude_user, String,
|
138
|
+
description: "The audit policy specified by the category or subcategory is applied per-user if specified. When a user is specified, exclude user. Include and exclude cannot be used at the same time."
|
139
|
+
|
140
|
+
property :crash_on_audit_fail, [true, false],
|
141
|
+
description: "Setting this audit policy option to true will cause the system to crash if the auditing system is unable to log events."
|
142
|
+
|
143
|
+
property :full_privilege_auditing, [true, false],
|
144
|
+
description: "Setting this audit policy option to true will force the audit of all privilege changes except SeAuditPrivilege. Setting this property may cause the logs to fill up more quickly."
|
145
|
+
|
146
|
+
property :audit_base_objects, [true, false],
|
147
|
+
description: "Setting this audit policy option to true will force the system to assign a System Access Control List to named objects to enable auditing of base objects such as mutexes."
|
148
|
+
|
149
|
+
property :audit_base_directories, [true, false],
|
150
|
+
description: "Setting this audit policy option to true will force the system to assign a System Access Control List to named objects to enable auditing of container objects such as directories."
|
151
|
+
|
152
|
+
def subcategory_configured?(sub_cat, success_value, failure_value)
|
153
|
+
setting = if success_value && failure_value
|
154
|
+
"Success and Failure$"
|
155
|
+
elsif success_value && !failure_value
|
156
|
+
"Success$"
|
157
|
+
elsif !success_value && failure_value
|
158
|
+
"(Failure$)&!(Success and Failure$)"
|
159
|
+
else
|
160
|
+
"No Auditing"
|
161
|
+
end
|
162
|
+
powershell_exec(<<-CODE).result
|
163
|
+
$auditpol_config = auditpol /get /subcategory:"#{sub_cat}"
|
164
|
+
if ($auditpol_config | Select-String "#{setting}") { return $true } else { return $false }
|
165
|
+
CODE
|
166
|
+
end
|
167
|
+
|
168
|
+
def option_configured?(option_name, option_setting)
|
169
|
+
setting = option_setting ? "Enabled$" : "Disabled$"
|
170
|
+
powershell_exec(<<-CODE).result
|
171
|
+
$auditpol_config = auditpol /get /option:#{option_name}
|
172
|
+
if ($auditpol_config | Select-String "#{setting}") { return $true } else { return $false }
|
173
|
+
CODE
|
174
|
+
end
|
175
|
+
|
176
|
+
action :set do
|
177
|
+
unless new_resource.subcategory.nil?
|
178
|
+
new_resource.subcategory.each do |subcategory|
|
179
|
+
next if subcategory_configured?(subcategory, new_resource.success, new_resource.failure)
|
180
|
+
|
181
|
+
s_val = new_resource.success ? "enable" : "disable"
|
182
|
+
f_val = new_resource.failure ? "enable" : "disable"
|
183
|
+
converge_by "Update Audit Policy for \"#{subcategory}\" to Success:#{s_val} and Failure:#{f_val}" do
|
184
|
+
cmd = "auditpol /set "
|
185
|
+
cmd += "/user:\"#{new_resource.include_user}\" /include " if new_resource.include_user
|
186
|
+
cmd += "/user:\"#{new_resource.exclude_user}\" /exclude " if new_resource.exclude_user
|
187
|
+
cmd += "/subcategory:\"#{subcategory}\" /success:#{s_val} /failure:#{f_val}"
|
188
|
+
powershell_exec!(cmd)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
if !new_resource.crash_on_audit_fail.nil? && option_configured?("CrashOnAuditFail", new_resource.crash_on_audit_fail)
|
194
|
+
val = new_resource.crash_on_audit_fail ? "Enable" : "Disable"
|
195
|
+
converge_by "Configure Audit: CrashOnAuditFail to #{val}" do
|
196
|
+
cmd = "auditpol /set /option:CrashOnAuditFail /value:#{val}"
|
197
|
+
powershell_exec!(cmd)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
if !new_resource.full_privilege_auditing.nil? && option_configured?("FullPrivilegeAuditing", new_resource.full_privilege_auditing)
|
202
|
+
val = new_resource.full_privilege_auditing ? "Enable" : "Disable"
|
203
|
+
converge_by "Configure Audit: FullPrivilegeAuditing to #{val}" do
|
204
|
+
cmd = "auditpol /set /option:FullPrivilegeAuditing /value:#{val}"
|
205
|
+
powershell_exec!(cmd)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
if !new_resource.audit_base_directories.nil? && option_configured?("AuditBaseDirectories", new_resource.audit_base_directories)
|
210
|
+
val = new_resource.audit_base_directories ? "Enable" : "Disable"
|
211
|
+
converge_by "Configure Audit: AuditBaseDirectories to #{val}" do
|
212
|
+
cmd = "auditpol /set /option:AuditBaseDirectories /value:#{val}"
|
213
|
+
powershell_exec!(cmd)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
if !new_resource.audit_base_objects.nil? && option_configured?("AuditBaseObjects", new_resource.audit_base_objects)
|
218
|
+
val = new_resource.audit_base_objects ? "Enable" : "Disable"
|
219
|
+
converge_by "Configure Audit: AuditBaseObjects to #{val}" do
|
220
|
+
cmd = "auditpol /set /option:AuditBaseObjects /value:#{val}"
|
221
|
+
powershell_exec!(cmd)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
@@ -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.",
|
@@ -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
|
@@ -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
|
@@ -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(
|
@@ -25,21 +25,23 @@ class Chef
|
|
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
|
|