chef 16.1.16-universal-mingw32 → 16.2.44-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/README.md +3 -3
  4. data/Rakefile +2 -2
  5. data/chef.gemspec +3 -3
  6. data/lib/chef/application/apply.rb +1 -1
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/application/client.rb +1 -1
  9. data/lib/chef/application/windows_service_manager.rb +1 -1
  10. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  11. data/lib/chef/chef_fs/path_utils.rb +1 -1
  12. data/lib/chef/cookbook/chefignore.rb +1 -1
  13. data/lib/chef/cookbook/metadata.rb +1 -1
  14. data/lib/chef/cookbook_version.rb +2 -2
  15. data/lib/chef/data_bag.rb +4 -4
  16. data/lib/chef/deprecated.rb +4 -0
  17. data/lib/chef/file_access_control.rb +1 -1
  18. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  19. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  20. data/lib/chef/http.rb +17 -2
  21. data/lib/chef/http/http_request.rb +1 -1
  22. data/lib/chef/http/json_output.rb +1 -1
  23. data/lib/chef/http/ssl_policies.rb +18 -0
  24. data/lib/chef/knife.rb +1 -1
  25. data/lib/chef/knife/bootstrap.rb +3 -6
  26. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  27. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  28. data/lib/chef/knife/config_get.rb +1 -1
  29. data/lib/chef/knife/cookbook_delete.rb +1 -1
  30. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  31. data/lib/chef/knife/data_bag_create.rb +1 -1
  32. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  33. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  34. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  35. data/lib/chef/knife/ssh.rb +1 -1
  36. data/lib/chef/knife/supermarket_share.rb +1 -1
  37. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  38. data/lib/chef/log.rb +1 -1
  39. data/lib/chef/mixin/securable.rb +2 -2
  40. data/lib/chef/powershell.rb +1 -1
  41. data/lib/chef/provider/batch.rb +3 -10
  42. data/lib/chef/provider/cron.rb +2 -14
  43. data/lib/chef/provider/execute.rb +2 -1
  44. data/lib/chef/provider/group/dscl.rb +2 -2
  45. data/lib/chef/provider/group/windows.rb +1 -1
  46. data/lib/chef/provider/ifconfig.rb +7 -7
  47. data/lib/chef/provider/mount/aix.rb +1 -1
  48. data/lib/chef/provider/mount/windows.rb +2 -2
  49. data/lib/chef/provider/noop.rb +1 -1
  50. data/lib/chef/provider/package/openbsd.rb +1 -1
  51. data/lib/chef/provider/package/portage.rb +2 -2
  52. data/lib/chef/provider/package/powershell.rb +6 -2
  53. data/lib/chef/provider/package/rubygems.rb +2 -2
  54. data/lib/chef/provider/package/snap.rb +96 -27
  55. data/lib/chef/provider/package/windows/msi.rb +3 -3
  56. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  57. data/lib/chef/provider/powershell_script.rb +10 -14
  58. data/lib/chef/provider/remote_file/http.rb +4 -1
  59. data/lib/chef/provider/script.rb +4 -75
  60. data/lib/chef/provider/service/arch.rb +1 -1
  61. data/lib/chef/provider/service/debian.rb +2 -2
  62. data/lib/chef/provider/service/openbsd.rb +4 -4
  63. data/lib/chef/provider/service/redhat.rb +1 -1
  64. data/lib/chef/provider/service/windows.rb +1 -1
  65. data/lib/chef/provider/subversion.rb +2 -2
  66. data/lib/chef/provider/user/dscl.rb +4 -4
  67. data/lib/chef/provider/user/linux.rb +3 -3
  68. data/lib/chef/provider/user/mac.rb +5 -5
  69. data/lib/chef/provider/windows_script.rb +87 -25
  70. data/lib/chef/provider/zypper_repository.rb +30 -10
  71. data/lib/chef/resource.rb +22 -11
  72. data/lib/chef/resource/apt_package.rb +1 -1
  73. data/lib/chef/resource/archive_file.rb +28 -8
  74. data/lib/chef/resource/bash.rb +0 -1
  75. data/lib/chef/resource/batch.rb +4 -2
  76. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  77. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  78. data/lib/chef/resource/cron/cron.rb +46 -0
  79. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  80. data/lib/chef/resource/cron_access.rb +11 -3
  81. data/lib/chef/resource/csh.rb +0 -1
  82. data/lib/chef/resource/execute.rb +477 -7
  83. data/lib/chef/resource/file.rb +1 -1
  84. data/lib/chef/resource/freebsd_package.rb +1 -1
  85. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  86. data/lib/chef/resource/homebrew_package.rb +30 -1
  87. data/lib/chef/resource/homebrew_update.rb +107 -0
  88. data/lib/chef/resource/hostname.rb +6 -19
  89. data/lib/chef/resource/kernel_module.rb +14 -1
  90. data/lib/chef/resource/mount.rb +1 -1
  91. data/lib/chef/resource/perl.rb +0 -1
  92. data/lib/chef/resource/plist.rb +23 -4
  93. data/lib/chef/resource/powershell_script.rb +4 -2
  94. data/lib/chef/resource/python.rb +0 -1
  95. data/lib/chef/resource/remote_file.rb +26 -10
  96. data/lib/chef/resource/ruby.rb +0 -1
  97. data/lib/chef/resource/template.rb +1 -1
  98. data/lib/chef/resource/windows_ad_join.rb +30 -1
  99. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  100. data/lib/chef/resource/windows_auto_run.rb +11 -0
  101. data/lib/chef/resource/windows_certificate.rb +26 -0
  102. data/lib/chef/resource/windows_font.rb +3 -3
  103. data/lib/chef/resource/windows_package.rb +1 -1
  104. data/lib/chef/resource/windows_pagefile.rb +1 -1
  105. data/lib/chef/resource/windows_script.rb +2 -16
  106. data/lib/chef/resource/windows_security_policy.rb +17 -15
  107. data/lib/chef/resource/windows_shortcut.rb +1 -2
  108. data/lib/chef/resource/windows_task.rb +4 -4
  109. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  110. data/lib/chef/resource/yum_repository.rb +9 -9
  111. data/lib/chef/resources.rb +4 -2
  112. data/lib/chef/search/query.rb +1 -1
  113. data/lib/chef/util/diff.rb +2 -2
  114. data/lib/chef/util/windows/net_user.rb +1 -1
  115. data/lib/chef/util/windows/volume.rb +1 -1
  116. data/lib/chef/version.rb +1 -1
  117. data/lib/chef/win32/file.rb +1 -1
  118. data/lib/chef/win32/registry.rb +2 -2
  119. data/lib/chef/win32/security.rb +1 -1
  120. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  121. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  122. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  123. data/spec/functional/resource/cron_spec.rb +10 -0
  124. data/spec/functional/resource/remote_file_spec.rb +2 -2
  125. data/spec/functional/resource/windows_task_spec.rb +8 -8
  126. data/spec/support/platform_helpers.rb +1 -1
  127. data/spec/support/platforms/win32/spec_service.rb +1 -1
  128. data/spec/support/shared/functional/execute_resource.rb +1 -1
  129. data/spec/support/shared/unit/execute_resource.rb +1 -1
  130. data/spec/unit/application_spec.rb +7 -0
  131. data/spec/unit/data_bag_spec.rb +1 -1
  132. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  133. data/spec/unit/knife/bootstrap_spec.rb +2 -2
  134. data/spec/unit/mixin/user_context_spec.rb +1 -9
  135. data/spec/unit/property_spec.rb +1 -1
  136. data/spec/unit/provider/batch_spec.rb +130 -0
  137. data/spec/unit/provider/cron_spec.rb +9 -49
  138. data/spec/unit/provider/package/powershell_spec.rb +95 -86
  139. data/spec/unit/provider/package/snap_spec.rb +1 -1
  140. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  141. data/spec/unit/provider/script_spec.rb +20 -110
  142. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  143. data/spec/unit/resource/archive_file_spec.rb +11 -2
  144. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  145. data/spec/unit/resource/cron_spec.rb +2 -2
  146. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  147. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  148. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  149. data/spec/unit/resource/timezone_spec.rb +1 -1
  150. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  151. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  152. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  153. data/spec/unit/resource/windows_task_spec.rb +1 -1
  154. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  155. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  156. data/spec/unit/resource_spec.rb +67 -1
  157. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  158. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  159. metadata +22 -22
  160. data/lib/chef/resource/cron.rb +0 -157
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require_relative "script"
20
- require_relative "../provider/script"
21
20
 
22
21
  class Chef
23
22
  class Resource
@@ -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 cookbooks /templates directory. When this property is set to true, use the source property to specify the path to a template on the local node."
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 =~ /^.:.*/ ? x.tr('\\', "/").gsub("//", "/") : 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 =~ /mswin|mingw32|windows/
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 =~ /mswin|mingw32|windows/
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 =~ /mswin|mingw|windows/
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/ =~ new_resource.path
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
- unified_mode true
25
+ include Chef::Mixin::WindowsArchitectureHelper
27
26
 
28
- provides :windows_script
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{MinimumPasswordAge
29
- MaximumPasswordAge
30
- MinimumPasswordLength
31
- PasswordComplexity
32
- PasswordHistorySize
33
- LockoutBadCount
34
- RequireLogonToChangePassword
35
- ForceLogoffWhenHourExpire
36
- NewAdministratorName
37
- NewGuestName
38
- ClearTextPassword
39
- LSAAnonymousNameLookup
40
- EnableAdminAccount
41
- EnableGuestAccount
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