chef 16.0.287 → 16.2.73

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/README.md +3 -3
  4. data/Rakefile +3 -2
  5. data/chef.gemspec +5 -5
  6. data/lib/chef/application/apply.rb +2 -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/file_system/chef_server/acls_dir.rb +1 -1
  12. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  13. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  14. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  15. data/lib/chef/chef_fs/path_utils.rb +4 -4
  16. data/lib/chef/cookbook/chefignore.rb +1 -1
  17. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  18. data/lib/chef/cookbook/metadata.rb +2 -2
  19. data/lib/chef/cookbook_loader.rb +1 -1
  20. data/lib/chef/cookbook_manifest.rb +1 -1
  21. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  22. data/lib/chef/cookbook_version.rb +4 -4
  23. data/lib/chef/data_bag.rb +4 -4
  24. data/lib/chef/data_collector.rb +1 -1
  25. data/lib/chef/data_collector/error_handlers.rb +1 -1
  26. data/lib/chef/decorator/lazy_array.rb +2 -2
  27. data/lib/chef/deprecated.rb +4 -0
  28. data/lib/chef/digester.rb +5 -4
  29. data/lib/chef/dsl/declare_resource.rb +1 -1
  30. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  31. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  32. data/lib/chef/file_access_control.rb +1 -1
  33. data/lib/chef/file_access_control/windows.rb +2 -2
  34. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  35. data/lib/chef/formatters/base.rb +1 -1
  36. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  37. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  38. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  39. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  40. data/lib/chef/http.rb +19 -4
  41. data/lib/chef/http/decompressor.rb +1 -1
  42. data/lib/chef/http/http_request.rb +1 -1
  43. data/lib/chef/http/json_output.rb +1 -1
  44. data/lib/chef/http/ssl_policies.rb +18 -0
  45. data/lib/chef/json_compat.rb +1 -1
  46. data/lib/chef/key.rb +1 -1
  47. data/lib/chef/knife.rb +2 -2
  48. data/lib/chef/knife/bootstrap.rb +20 -14
  49. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  50. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  51. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  52. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  53. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  54. data/lib/chef/knife/config_get.rb +1 -1
  55. data/lib/chef/knife/config_use_profile.rb +15 -5
  56. data/lib/chef/knife/cookbook_delete.rb +1 -1
  57. data/lib/chef/knife/cookbook_upload.rb +1 -4
  58. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  59. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  60. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  61. data/lib/chef/knife/core/node_presenter.rb +1 -1
  62. data/lib/chef/knife/core/status_presenter.rb +1 -1
  63. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  64. data/lib/chef/knife/core/windows_bootstrap_context.rb +19 -4
  65. data/lib/chef/knife/data_bag_create.rb +1 -1
  66. data/lib/chef/knife/key_create_base.rb +1 -1
  67. data/lib/chef/knife/key_edit_base.rb +1 -1
  68. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  69. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  70. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  71. data/lib/chef/knife/ssh.rb +2 -2
  72. data/lib/chef/knife/supermarket_share.rb +1 -1
  73. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  74. data/lib/chef/log.rb +1 -1
  75. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  76. data/lib/chef/mixin/checksum.rb +0 -1
  77. data/lib/chef/mixin/openssl_helper.rb +4 -4
  78. data/lib/chef/mixin/properties.rb +2 -2
  79. data/lib/chef/mixin/securable.rb +2 -2
  80. data/lib/chef/mixin/shell_out.rb +1 -1
  81. data/lib/chef/node/attribute.rb +2 -2
  82. data/lib/chef/node/immutable_collections.rb +1 -1
  83. data/lib/chef/policy_builder/policyfile.rb +1 -1
  84. data/lib/chef/powershell.rb +1 -1
  85. data/lib/chef/property.rb +2 -2
  86. data/lib/chef/provider.rb +3 -3
  87. data/lib/chef/provider/batch.rb +3 -10
  88. data/lib/chef/provider/cron.rb +2 -14
  89. data/lib/chef/provider/directory.rb +1 -1
  90. data/lib/chef/provider/execute.rb +2 -1
  91. data/lib/chef/provider/file.rb +1 -1
  92. data/lib/chef/provider/group/dscl.rb +2 -2
  93. data/lib/chef/provider/group/windows.rb +1 -1
  94. data/lib/chef/provider/ifconfig.rb +7 -7
  95. data/lib/chef/provider/launchd.rb +11 -9
  96. data/lib/chef/provider/mount/aix.rb +1 -1
  97. data/lib/chef/provider/mount/windows.rb +2 -2
  98. data/lib/chef/provider/noop.rb +1 -1
  99. data/lib/chef/provider/package/cab.rb +1 -1
  100. data/lib/chef/provider/package/chocolatey.rb +1 -1
  101. data/lib/chef/provider/package/dpkg.rb +1 -1
  102. data/lib/chef/provider/package/openbsd.rb +1 -1
  103. data/lib/chef/provider/package/portage.rb +3 -2
  104. data/lib/chef/provider/package/powershell.rb +6 -2
  105. data/lib/chef/provider/package/rubygems.rb +3 -3
  106. data/lib/chef/provider/package/snap.rb +96 -27
  107. data/lib/chef/provider/package/windows.rb +2 -2
  108. data/lib/chef/provider/package/windows/msi.rb +3 -3
  109. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  110. data/lib/chef/provider/package/yum.rb +1 -1
  111. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  112. data/lib/chef/provider/powershell_script.rb +11 -15
  113. data/lib/chef/provider/remote_directory.rb +2 -2
  114. data/lib/chef/provider/remote_file/http.rb +4 -1
  115. data/lib/chef/provider/script.rb +4 -75
  116. data/lib/chef/provider/service/arch.rb +2 -2
  117. data/lib/chef/provider/service/debian.rb +2 -2
  118. data/lib/chef/provider/service/macosx.rb +9 -0
  119. data/lib/chef/provider/service/openbsd.rb +4 -4
  120. data/lib/chef/provider/service/redhat.rb +1 -1
  121. data/lib/chef/provider/service/upstart.rb +1 -1
  122. data/lib/chef/provider/service/windows.rb +1 -1
  123. data/lib/chef/provider/subversion.rb +2 -2
  124. data/lib/chef/provider/user/aix.rb +1 -1
  125. data/lib/chef/provider/user/dscl.rb +6 -6
  126. data/lib/chef/provider/user/linux.rb +3 -3
  127. data/lib/chef/provider/user/mac.rb +15 -11
  128. data/lib/chef/provider/windows_script.rb +87 -25
  129. data/lib/chef/provider/windows_task.rb +4 -2
  130. data/lib/chef/provider/zypper_repository.rb +30 -10
  131. data/lib/chef/resource.rb +25 -14
  132. data/lib/chef/resource/alternatives.rb +1 -1
  133. data/lib/chef/resource/apt_package.rb +1 -1
  134. data/lib/chef/resource/archive_file.rb +28 -8
  135. data/lib/chef/resource/bash.rb +0 -1
  136. data/lib/chef/resource/batch.rb +4 -2
  137. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  138. data/lib/chef/resource/chef_gem.rb +57 -21
  139. data/lib/chef/resource/chef_handler.rb +2 -2
  140. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  141. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  142. data/lib/chef/resource/cron/cron.rb +46 -0
  143. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  144. data/lib/chef/resource/cron_access.rb +11 -3
  145. data/lib/chef/resource/csh.rb +0 -1
  146. data/lib/chef/resource/dmg_package.rb +2 -2
  147. data/lib/chef/resource/execute.rb +478 -8
  148. data/lib/chef/resource/file.rb +10 -8
  149. data/lib/chef/resource/freebsd_package.rb +1 -1
  150. data/lib/chef/resource/gem_package.rb +35 -2
  151. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  152. data/lib/chef/resource/homebrew_package.rb +30 -1
  153. data/lib/chef/resource/homebrew_update.rb +107 -0
  154. data/lib/chef/resource/hostname.rb +7 -20
  155. data/lib/chef/resource/kernel_module.rb +14 -1
  156. data/lib/chef/resource/launchd.rb +1 -1
  157. data/lib/chef/resource/locale.rb +3 -3
  158. data/lib/chef/resource/macos_userdefaults.rb +11 -6
  159. data/lib/chef/resource/mount.rb +1 -1
  160. data/lib/chef/resource/perl.rb +0 -1
  161. data/lib/chef/resource/plist.rb +23 -4
  162. data/lib/chef/resource/powershell_script.rb +4 -2
  163. data/lib/chef/resource/python.rb +0 -1
  164. data/lib/chef/resource/remote_file.rb +26 -10
  165. data/lib/chef/resource/ruby.rb +0 -1
  166. data/lib/chef/resource/scm/git.rb +1 -1
  167. data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
  168. data/lib/chef/resource/sudo.rb +29 -2
  169. data/lib/chef/resource/swap_file.rb +17 -0
  170. data/lib/chef/resource/template.rb +1 -1
  171. data/lib/chef/resource/timezone.rb +15 -0
  172. data/lib/chef/resource/windows_ad_join.rb +30 -1
  173. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  174. data/lib/chef/resource/windows_auto_run.rb +11 -0
  175. data/lib/chef/resource/windows_certificate.rb +27 -1
  176. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  177. data/lib/chef/resource/windows_font.rb +3 -3
  178. data/lib/chef/resource/windows_package.rb +1 -1
  179. data/lib/chef/resource/windows_pagefile.rb +2 -2
  180. data/lib/chef/resource/windows_script.rb +2 -16
  181. data/lib/chef/resource/windows_security_policy.rb +47 -16
  182. data/lib/chef/resource/windows_shortcut.rb +1 -2
  183. data/lib/chef/resource/windows_task.rb +10 -10
  184. data/lib/chef/resource/windows_user_privilege.rb +70 -5
  185. data/lib/chef/resource/yum_repository.rb +9 -9
  186. data/lib/chef/resource_inspector.rb +4 -3
  187. data/lib/chef/resources.rb +4 -2
  188. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  189. data/lib/chef/search/query.rb +1 -1
  190. data/lib/chef/shell/ext.rb +1 -1
  191. data/lib/chef/util/diff.rb +2 -2
  192. data/lib/chef/util/windows/net_user.rb +1 -1
  193. data/lib/chef/util/windows/volume.rb +1 -1
  194. data/lib/chef/version.rb +1 -1
  195. data/lib/chef/win32/api.rb +2 -2
  196. data/lib/chef/win32/api/error.rb +3 -1
  197. data/lib/chef/win32/api/file.rb +1 -1
  198. data/lib/chef/win32/api/net.rb +1 -0
  199. data/lib/chef/win32/file.rb +1 -1
  200. data/lib/chef/win32/mutex.rb +1 -1
  201. data/lib/chef/win32/net.rb +1 -0
  202. data/lib/chef/win32/registry.rb +2 -2
  203. data/lib/chef/win32/security.rb +1 -1
  204. data/lib/chef/win32/security/sid.rb +4 -4
  205. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  206. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  207. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  208. data/spec/functional/knife/configure_spec.rb +1 -1
  209. data/spec/functional/resource/aix_service_spec.rb +10 -1
  210. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  211. data/spec/functional/resource/bash_spec.rb +3 -2
  212. data/spec/functional/resource/bff_spec.rb +1 -1
  213. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  214. data/spec/functional/resource/cron_spec.rb +20 -1
  215. data/spec/functional/resource/dnf_package_spec.rb +6 -3
  216. data/spec/functional/resource/execute_spec.rb +1 -1
  217. data/spec/functional/resource/git_spec.rb +6 -6
  218. data/spec/functional/resource/group_spec.rb +9 -1
  219. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  220. data/spec/functional/resource/insserv_spec.rb +3 -2
  221. data/spec/functional/resource/launchd_spec.rb +232 -0
  222. data/spec/functional/resource/link_spec.rb +2 -5
  223. data/spec/functional/resource/mount_spec.rb +9 -1
  224. data/spec/functional/resource/msu_package_spec.rb +9 -3
  225. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  226. data/spec/functional/resource/remote_file_spec.rb +8 -8
  227. data/spec/functional/resource/rpm_spec.rb +1 -1
  228. data/spec/functional/resource/timezone_spec.rb +2 -0
  229. data/spec/functional/resource/windows_package_spec.rb +0 -1
  230. data/spec/functional/resource/windows_path_spec.rb +4 -0
  231. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  232. data/spec/functional/resource/windows_service_spec.rb +4 -0
  233. data/spec/functional/resource/windows_task_spec.rb +16 -15
  234. data/spec/functional/resource/windows_user_privilege_spec.rb +0 -1
  235. data/spec/functional/resource/yum_package_spec.rb +4 -1
  236. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  237. data/spec/functional/shell_spec.rb +0 -1
  238. data/spec/functional/win32/crypto_spec.rb +1 -1
  239. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  240. data/spec/integration/knife/cookbook_upload_spec.rb +1 -1
  241. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  242. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  243. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  245. data/spec/integration/recipes/recipe_dsl_spec.rb +4 -0
  246. data/spec/integration/recipes/resource_load_spec.rb +2 -2
  247. data/spec/support/chef_helpers.rb +1 -1
  248. data/spec/support/platform_helpers.rb +1 -1
  249. data/spec/support/platforms/win32/spec_service.rb +1 -1
  250. data/spec/support/shared/functional/execute_resource.rb +1 -1
  251. data/spec/support/shared/functional/securable_resource.rb +1 -2
  252. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  253. data/spec/support/shared/functional/windows_script.rb +3 -3
  254. data/spec/support/shared/unit/execute_resource.rb +1 -1
  255. data/spec/support/shared/unit/provider/file.rb +12 -8
  256. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  257. data/spec/unit/application/solo_spec.rb +4 -2
  258. data/spec/unit/application_spec.rb +7 -0
  259. data/spec/unit/chef_fs/config_spec.rb +2 -2
  260. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  261. data/spec/unit/client_spec.rb +4 -1
  262. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  263. data/spec/unit/data_bag_spec.rb +6 -3
  264. data/spec/unit/decorator_spec.rb +23 -23
  265. data/spec/unit/environment_spec.rb +5 -1
  266. data/spec/unit/guard_interpreter_spec.rb +1 -1
  267. data/spec/unit/http/api_versions_spec.rb +1 -1
  268. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  269. data/spec/unit/knife/bootstrap_spec.rb +3 -2
  270. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  271. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  272. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  273. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  274. data/spec/unit/lwrp_spec.rb +5 -2
  275. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  276. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  277. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  278. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  279. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  280. data/spec/unit/mixin/uris_spec.rb +1 -1
  281. data/spec/unit/mixin/user_context_spec.rb +1 -9
  282. data/spec/unit/node/attribute_spec.rb +1 -1
  283. data/spec/unit/property_spec.rb +1 -1
  284. data/spec/unit/provider/batch_spec.rb +130 -0
  285. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  286. data/spec/unit/provider/cron_spec.rb +9 -49
  287. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  288. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  289. data/spec/unit/provider/execute_spec.rb +1 -1
  290. data/spec/unit/provider/git_spec.rb +3 -3
  291. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  292. data/spec/unit/provider/launchd_spec.rb +0 -42
  293. data/spec/unit/provider/mdadm_spec.rb +1 -3
  294. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  295. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  296. data/spec/unit/provider/package/portage_spec.rb +2 -2
  297. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  298. data/spec/unit/provider/package/snap_spec.rb +1 -1
  299. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  300. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  301. data/spec/unit/provider/script_spec.rb +20 -110
  302. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  303. data/spec/unit/provider/windows_env_spec.rb +5 -4
  304. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  305. data/spec/unit/resource/archive_file_spec.rb +11 -2
  306. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  307. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  308. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  309. data/spec/unit/resource/cron_spec.rb +2 -2
  310. data/spec/unit/resource/file/verification_spec.rb +2 -1
  311. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  312. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  313. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  314. data/spec/unit/resource/timezone_spec.rb +1 -1
  315. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  316. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  317. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  318. data/spec/unit/resource/windows_task_spec.rb +1 -1
  319. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  320. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  321. data/spec/unit/resource_spec.rb +84 -1
  322. data/spec/unit/role_spec.rb +23 -21
  323. data/spec/unit/util/backup_spec.rb +1 -1
  324. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  325. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  326. data/spec/unit/util/selinux_spec.rb +2 -1
  327. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  328. data/spec/unit/win32/registry_spec.rb +1 -1
  329. metadata +37 -31
  330. data/lib/chef/resource/cron.rb +0 -157
  331. data/spec/functional/resource/base.rb +0 -28
@@ -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::SHA1.new(cert_obj.to_der).to_s # Fetch its thumbprint
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 cmlet. Is the DFS Windows feature installed?"
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}")
@@ -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
@@ -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 runing: wmic.exe pagefileset where SettingID=\"#{get_setting_id(pagefile)}\" list /format:list")
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
@@ -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(
@@ -21,28 +21,59 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsSecurityPolicy < Chef::Resource
24
- resource_name :windows_security_policy
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{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
 
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
 
@@ -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 =~ /mswin|mingw32|windows/
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."
@@ -274,7 +274,7 @@ class Chef
274
274
 
275
275
  ## Resource is not idempotent when day, start_day is not provided with frequency :weekly
276
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 udpate gets called
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."
@@ -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, thrid etc and day is not provided
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 seprated by comma."
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
- # frequency_modifer 2-12 is used to set every (n) months, so using :months propety with frequency_modifer is not valid since they both used to set months.
304
- # Not checking value 1 here for frequecy_modifier since we are setting that as default value it won't break anything since preference is given to months property
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
- # returns true if frequency_modifer has values First, second, third, fourth, last, lastday
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 }
@@ -330,7 +330,7 @@ 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$} =~ 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$}.match?(start_day)
334
334
  end
335
335
  end
336
336
 
@@ -338,7 +338,7 @@ class Chef
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]$/ =~ start_time
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
@@ -68,10 +68,61 @@ 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. \n Ref: https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-rights-assignment"
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
+
116
+ **Clear all users from the SeDenyNetworkLogonRight Privilege**:
117
+
118
+ ```ruby
119
+ windows_user_privilege 'Allow any user the Network Logon right' do
120
+ privilege 'SeDenyNetworkLogonRight'
121
+ action :clear
122
+ end
123
+ ```
124
+ DOC
125
+
75
126
  property :principal, String,
76
127
  description: "An optional property to add the user to the given privilege. Use only with add and remove action.",
77
128
  name_property: true
@@ -84,14 +135,14 @@ class Chef
84
135
  required: true,
85
136
  coerce: proc { |v| v.is_a?(String) ? Array[v] : v },
86
137
  callbacks: {
87
- "Option privilege must include any of the: #{privilege_opts}" => lambda {
88
- |v| (privilege_opts & v).size == v.size
138
+ "Option privilege must include any of the: #{privilege_opts}" => lambda { |v|
139
+ (privilege_opts & v).size == v.size
89
140
  },
90
141
  }
91
142
 
92
143
  load_current_value do |new_resource|
93
- unless new_resource.principal.nil?
94
- privilege Chef::ReservedNames::Win32::Security.get_account_right(new_resource.principal) unless new_resource.action.include?(:set)
144
+ if new_resource.principal && (new_resource.action.include?(:add) || new_resource.action.include?(:remove))
145
+ privilege Chef::ReservedNames::Win32::Security.get_account_right(new_resource.principal)
95
146
  end
96
147
  end
97
148
 
@@ -138,6 +189,20 @@ class Chef
138
189
  end
139
190
  end
140
191
 
192
+ action :clear do
193
+ new_resource.privilege.each do |privilege|
194
+ accounts = Chef::ReservedNames::Win32::Security.get_account_with_user_rights(privilege)
195
+
196
+ # comparing the existing accounts for privilege with users
197
+ # Removing only accounts which is not matching with users in new_resource
198
+ accounts.each do |account|
199
+ converge_by("removing user '#{account}' from privilege #{privilege}") do
200
+ Chef::ReservedNames::Win32::Security.remove_account_right(account, privilege)
201
+ end
202
+ end
203
+ end
204
+ end
205
+
141
206
  action :remove do
142
207
  curr_res_privilege = current_resource.privilege
143
208
  missing_res_privileges = (new_resource.privilege - curr_res_privilege)
@@ -95,7 +95,7 @@ class Chef
95
95
  description: "URL pointing to the ASCII-armored GPG key file for the repository. This is used if Yum needs a public key to verify a package and the required key hasn't been imported into the RPM database. If this option is set, Yum will automatically import the key from the specified URL. Multiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed.\nMultiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed."
96
96
 
97
97
  property :http_caching, String, equal_to: %w{packages all none},
98
- description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values: all (all HTTP downloads should be cached), packages (only RPM package downloads should be cached, but not repository metadata downloads), or none (no HTTP downloads should be cached)"
98
+ description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values:\n - `all` means all HTTP downloads should be cached\n - `packages` means only RPM package downloads should be cached, but not repository metadata downloads\n - `none` means no HTTP downloads should be cached.\n\nThe default value of `all` is recommended unless you are experiencing caching related issues."
99
99
 
100
100
  property :include_config, String,
101
101
  description: "An external configuration file using the format `url://to/some/location`."
@@ -114,25 +114,25 @@ class Chef
114
114
  description: "Number of times any attempt to retrieve a file should retry before returning an error. Setting this to `0` makes Yum try forever."
115
115
 
116
116
  property :metadata_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/, /never/],
117
- description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
118
- validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
117
+ description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
118
+ validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
119
119
 
120
120
  property :metalink, String,
121
121
  description: "Specifies a URL to a metalink file for the repomd.xml, a list of mirrors for the entire repository are generated by converting the mirrors for the repomd.xml file to a baseurl."
122
122
 
123
123
  property :mirror_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
124
- description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively.",
125
- validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
124
+ description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
125
+ validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
126
126
 
127
127
  property :mirrorlist_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
128
- description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively.",
129
- validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
128
+ description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
129
+ validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
130
130
 
131
131
  property :mirrorlist, String,
132
132
  description: "URL to a file containing a list of baseurls. This can be used instead of or with the baseurl option. Substitution variables, described below, can be used with this option."
133
133
 
134
134
  property :mode, [String, Integer],
135
- description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to '600', normal users will not be able to use Yum search, Yum info, etc.",
135
+ description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to `600`, normal users will not be able to use Yum search, Yum info, etc.",
136
136
  default: "0644"
137
137
 
138
138
  property :options, Hash,
@@ -142,7 +142,7 @@ class Chef
142
142
  description: "Password to use with the username for basic authentication."
143
143
 
144
144
  property :priority, String, regex: /^(\d?[1-9]|[0-9][0-9])$/,
145
- description: "Assigns a priority to a repository where the priority value is between '1' and '99' inclusive. Priorities are used to enforce ordered protection of repositories. Packages from repositories with a lower priority (higher numerical value) will never be used to upgrade packages that were installed from a repository with a higher priority (lower numerical value). The repositories with the lowest numerical priority number have the highest priority.",
145
+ description: "Assigns a priority to a repository where the priority value is between `1` and `99` inclusive. Priorities are used to enforce ordered protection of repositories. Packages from repositories with a lower priority (higher numerical value) will never be used to upgrade packages that were installed from a repository with a higher priority (lower numerical value). The repositories with the lowest numerical priority number have the highest priority.",
146
146
  validation_message: "The priority property must be a numeric value from 1-99!"
147
147
 
148
148
  property :proxy_password, String,