chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -7
  3. data/README.md +1 -1
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +6 -4
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/action_collection.rb +16 -5
  9. data/lib/chef/application.rb +33 -54
  10. data/lib/chef/application/apply.rb +18 -1
  11. data/lib/chef/application/base.rb +8 -3
  12. data/lib/chef/application/knife.rb +1 -1
  13. data/lib/chef/chef_class.rb +4 -4
  14. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +3 -3
  21. data/lib/chef/client.rb +16 -14
  22. data/lib/chef/config.rb +1 -1
  23. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  24. data/lib/chef/cookbook/gem_installer.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +45 -22
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +38 -3
  30. data/lib/chef/data_collector.rb +1 -1
  31. data/lib/chef/data_collector/error_handlers.rb +1 -1
  32. data/lib/chef/data_collector/run_end_message.rb +7 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +4 -0
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dist.rb +8 -0
  37. data/lib/chef/dsl/chef_vault.rb +84 -0
  38. data/lib/chef/dsl/declare_resource.rb +7 -5
  39. data/lib/chef/dsl/platform_introspection.rb +3 -2
  40. data/lib/chef/dsl/recipe.rb +7 -12
  41. data/lib/chef/dsl/universal.rb +3 -7
  42. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  43. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  44. data/lib/chef/event_dispatch/base.rb +3 -0
  45. data/lib/chef/formatters/base.rb +1 -1
  46. data/lib/chef/formatters/doc.rb +1 -1
  47. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  48. data/lib/chef/http.rb +1 -1
  49. data/lib/chef/http/decompressor.rb +1 -1
  50. data/lib/chef/http/http_request.rb +3 -2
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -4
  54. data/lib/chef/knife/acl_add.rb +57 -0
  55. data/lib/chef/knife/acl_base.rb +183 -0
  56. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  57. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  58. data/lib/chef/knife/acl_remove.rb +62 -0
  59. data/lib/chef/knife/acl_show.rb +56 -0
  60. data/lib/chef/knife/bootstrap.rb +84 -90
  61. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
  62. data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
  63. data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
  64. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
  65. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  66. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  67. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  68. data/lib/chef/knife/core/node_presenter.rb +2 -2
  69. data/lib/chef/knife/core/status_presenter.rb +5 -5
  70. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  71. data/lib/chef/knife/core/ui.rb +17 -1
  72. data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
  73. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  74. data/lib/chef/knife/group_add.rb +55 -0
  75. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  76. data/lib/chef/knife/group_destroy.rb +53 -0
  77. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  78. data/lib/chef/knife/group_remove.rb +56 -0
  79. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  80. data/lib/chef/knife/key_create_base.rb +1 -1
  81. data/lib/chef/knife/key_edit_base.rb +1 -1
  82. data/lib/chef/knife/ssh.rb +12 -31
  83. data/lib/chef/knife/status.rb +3 -3
  84. data/lib/chef/knife/supermarket_download.rb +1 -2
  85. data/lib/chef/knife/supermarket_install.rb +2 -3
  86. data/lib/chef/knife/supermarket_list.rb +1 -2
  87. data/lib/chef/knife/supermarket_search.rb +1 -2
  88. data/lib/chef/knife/supermarket_share.rb +1 -2
  89. data/lib/chef/knife/supermarket_show.rb +1 -2
  90. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  91. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  92. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  93. data/lib/chef/knife/user_invite_list.rb +34 -0
  94. data/lib/chef/knife/user_invite_rescind.rb +63 -0
  95. data/lib/chef/knife/yaml_convert.rb +91 -0
  96. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  97. data/lib/chef/mixin/checksum.rb +0 -1
  98. data/lib/chef/mixin/openssl_helper.rb +4 -4
  99. data/lib/chef/mixin/powershell_exec.rb +10 -1
  100. data/lib/chef/mixin/powershell_out.rb +1 -1
  101. data/lib/chef/mixin/properties.rb +16 -2
  102. data/lib/chef/mixin/shell_out.rb +1 -5
  103. data/lib/chef/monkey_patches/net_http.rb +0 -4
  104. data/lib/chef/node.rb +18 -6
  105. data/lib/chef/node/attribute.rb +2 -2
  106. data/lib/chef/node/immutable_collections.rb +1 -1
  107. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  108. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  109. data/lib/chef/node_map.rb +5 -31
  110. data/lib/chef/platform/priority_map.rb +4 -4
  111. data/lib/chef/platform/query_helpers.rb +6 -34
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +14 -0
  114. data/lib/chef/property.rb +24 -6
  115. data/lib/chef/provider.rb +40 -6
  116. data/lib/chef/provider/cron.rb +2 -2
  117. data/lib/chef/provider/directory.rb +3 -3
  118. data/lib/chef/provider/dsc_resource.rb +1 -1
  119. data/lib/chef/provider/dsc_script.rb +1 -1
  120. data/lib/chef/provider/execute.rb +3 -9
  121. data/lib/chef/provider/file.rb +6 -6
  122. data/lib/chef/provider/git.rb +84 -27
  123. data/lib/chef/provider/group.rb +4 -4
  124. data/lib/chef/provider/http_request.rb +6 -6
  125. data/lib/chef/provider/ifconfig.rb +4 -4
  126. data/lib/chef/provider/launchd.rb +45 -64
  127. data/lib/chef/provider/link.rb +2 -2
  128. data/lib/chef/provider/mount.rb +5 -5
  129. data/lib/chef/provider/osx_profile.rb +7 -3
  130. data/lib/chef/provider/package.rb +2 -2
  131. data/lib/chef/provider/package/cab.rb +5 -6
  132. data/lib/chef/provider/package/chocolatey.rb +1 -3
  133. data/lib/chef/provider/package/dnf.rb +66 -10
  134. data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
  135. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  136. data/lib/chef/provider/package/dnf/version.rb +5 -1
  137. data/lib/chef/provider/package/dpkg.rb +1 -1
  138. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  139. data/lib/chef/provider/package/homebrew.rb +107 -43
  140. data/lib/chef/provider/package/macports.rb +0 -2
  141. data/lib/chef/provider/package/msu.rb +4 -1
  142. data/lib/chef/provider/package/pacman.rb +25 -34
  143. data/lib/chef/provider/package/portage.rb +1 -0
  144. data/lib/chef/provider/package/powershell.rb +1 -1
  145. data/lib/chef/provider/package/rubygems.rb +30 -3
  146. data/lib/chef/provider/package/windows.rb +29 -53
  147. data/lib/chef/provider/package/windows/msi.rb +2 -2
  148. data/lib/chef/provider/package/yum.rb +1 -9
  149. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  150. data/lib/chef/provider/package/zypper.rb +0 -1
  151. data/lib/chef/provider/powershell_script.rb +5 -11
  152. data/lib/chef/provider/registry_key.rb +4 -4
  153. data/lib/chef/provider/remote_directory.rb +5 -5
  154. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  155. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  156. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  157. data/lib/chef/provider/route.rb +5 -3
  158. data/lib/chef/provider/ruby_block.rb +1 -1
  159. data/lib/chef/provider/script.rb +2 -2
  160. data/lib/chef/provider/service.rb +8 -8
  161. data/lib/chef/provider/service/aixinit.rb +1 -1
  162. data/lib/chef/provider/service/arch.rb +1 -1
  163. data/lib/chef/provider/service/debian.rb +30 -28
  164. data/lib/chef/provider/service/macosx.rb +16 -10
  165. data/lib/chef/provider/service/systemd.rb +12 -12
  166. data/lib/chef/provider/service/upstart.rb +1 -1
  167. data/lib/chef/provider/service/windows.rb +5 -11
  168. data/lib/chef/provider/subversion.rb +25 -5
  169. data/lib/chef/provider/systemd_unit.rb +26 -25
  170. data/lib/chef/provider/user.rb +6 -6
  171. data/lib/chef/provider/user/aix.rb +1 -1
  172. data/lib/chef/provider/user/dscl.rb +6 -6
  173. data/lib/chef/provider/user/mac.rb +20 -15
  174. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  175. data/lib/chef/provider/windows_env.rb +3 -3
  176. data/lib/chef/provider/windows_script.rb +2 -2
  177. data/lib/chef/provider/windows_task.rb +10 -10
  178. data/lib/chef/providers.rb +0 -6
  179. data/lib/chef/recipe.rb +36 -0
  180. data/lib/chef/resource.rb +44 -57
  181. data/lib/chef/resource/action_class.rb +24 -22
  182. data/lib/chef/resource/alternatives.rb +210 -0
  183. data/lib/chef/resource/apt_package.rb +33 -3
  184. data/lib/chef/resource/apt_preference.rb +103 -7
  185. data/lib/chef/resource/apt_repository.rb +357 -18
  186. data/lib/chef/resource/apt_update.rb +58 -5
  187. data/lib/chef/resource/archive_file.rb +6 -5
  188. data/lib/chef/resource/bash.rb +3 -1
  189. data/lib/chef/resource/batch.rb +1 -1
  190. data/lib/chef/resource/bff_package.rb +10 -2
  191. data/lib/chef/resource/breakpoint.rb +1 -2
  192. data/lib/chef/resource/build_essential.rb +49 -51
  193. data/lib/chef/resource/cab_package.rb +9 -2
  194. data/lib/chef/resource/chef_client_cron.rb +228 -0
  195. data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
  196. data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
  197. data/lib/chef/resource/chef_gem.rb +15 -18
  198. data/lib/chef/resource/chef_handler.rb +5 -4
  199. data/lib/chef/resource/chef_sleep.rb +7 -5
  200. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  201. data/lib/chef/resource/chocolatey_config.rb +8 -4
  202. data/lib/chef/resource/chocolatey_feature.rb +7 -4
  203. data/lib/chef/resource/chocolatey_package.rb +7 -4
  204. data/lib/chef/resource/chocolatey_source.rb +7 -4
  205. data/lib/chef/resource/cookbook_file.rb +4 -3
  206. data/lib/chef/resource/cron.rb +34 -80
  207. data/lib/chef/resource/cron_access.rb +10 -6
  208. data/lib/chef/resource/cron_d.rb +44 -95
  209. data/lib/chef/resource/csh.rb +3 -1
  210. data/lib/chef/resource/directory.rb +3 -3
  211. data/lib/chef/resource/dmg_package.rb +22 -19
  212. data/lib/chef/resource/dnf_package.rb +3 -4
  213. data/lib/chef/resource/dpkg_package.rb +3 -2
  214. data/lib/chef/resource/dsc_resource.rb +6 -4
  215. data/lib/chef/resource/dsc_script.rb +3 -2
  216. data/lib/chef/resource/execute.rb +15 -14
  217. data/lib/chef/resource/file.rb +14 -9
  218. data/lib/chef/resource/freebsd_package.rb +3 -2
  219. data/lib/chef/resource/gem_package.rb +19 -11
  220. data/lib/chef/resource/group.rb +5 -2
  221. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  222. data/lib/chef/resource/homebrew_cask.rb +3 -2
  223. data/lib/chef/resource/homebrew_package.rb +5 -3
  224. data/lib/chef/resource/homebrew_tap.rb +3 -2
  225. data/lib/chef/resource/hostname.rb +26 -20
  226. data/lib/chef/resource/http_request.rb +1 -2
  227. data/lib/chef/resource/ifconfig.rb +8 -8
  228. data/lib/chef/resource/ips_package.rb +11 -3
  229. data/lib/chef/resource/kernel_module.rb +30 -30
  230. data/lib/chef/resource/ksh.rb +3 -1
  231. data/lib/chef/resource/launchd.rb +3 -3
  232. data/lib/chef/resource/link.rb +5 -27
  233. data/lib/chef/resource/locale.rb +60 -26
  234. data/lib/chef/resource/log.rb +13 -2
  235. data/lib/chef/resource/lwrp_base.rb +1 -1
  236. data/lib/chef/resource/macos_userdefaults.rb +18 -10
  237. data/lib/chef/resource/macosx_service.rb +3 -2
  238. data/lib/chef/resource/macports_package.rb +10 -2
  239. data/lib/chef/resource/mdadm.rb +63 -3
  240. data/lib/chef/resource/mount.rb +4 -1
  241. data/lib/chef/resource/msu_package.rb +19 -2
  242. data/lib/chef/resource/notify_group.rb +8 -3
  243. data/lib/chef/resource/ohai.rb +20 -4
  244. data/lib/chef/resource/ohai_hint.rb +4 -13
  245. data/lib/chef/resource/openbsd_package.rb +10 -2
  246. data/lib/chef/resource/openssl_dhparam.rb +11 -2
  247. data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
  248. data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
  249. data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
  250. data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
  251. data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
  252. data/lib/chef/resource/openssl_x509_crl.rb +13 -2
  253. data/lib/chef/resource/openssl_x509_request.rb +38 -2
  254. data/lib/chef/resource/osx_profile.rb +4 -3
  255. data/lib/chef/resource/package.rb +3 -2
  256. data/lib/chef/resource/pacman_package.rb +3 -2
  257. data/lib/chef/resource/paludis_package.rb +13 -4
  258. data/lib/chef/resource/perl.rb +3 -1
  259. data/lib/chef/resource/plist.rb +207 -0
  260. data/lib/chef/resource/portage_package.rb +14 -4
  261. data/lib/chef/resource/powershell_package.rb +2 -4
  262. data/lib/chef/resource/powershell_package_source.rb +4 -2
  263. data/lib/chef/resource/powershell_script.rb +8 -18
  264. data/lib/chef/resource/python.rb +3 -1
  265. data/lib/chef/resource/reboot.rb +1 -2
  266. data/lib/chef/resource/registry_key.rb +2 -3
  267. data/lib/chef/resource/remote_directory.rb +3 -1
  268. data/lib/chef/resource/remote_file.rb +3 -2
  269. data/lib/chef/resource/rhsm_errata.rb +1 -4
  270. data/lib/chef/resource/rhsm_errata_level.rb +1 -2
  271. data/lib/chef/resource/rhsm_register.rb +3 -3
  272. data/lib/chef/resource/rhsm_repo.rb +4 -3
  273. data/lib/chef/resource/rhsm_subscription.rb +5 -4
  274. data/lib/chef/resource/route.rb +6 -2
  275. data/lib/chef/resource/rpm_package.rb +13 -3
  276. data/lib/chef/resource/ruby.rb +3 -1
  277. data/lib/chef/resource/ruby_block.rb +2 -5
  278. data/lib/chef/resource/scm/_scm.rb +49 -0
  279. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  280. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
  281. data/lib/chef/resource/script.rb +7 -4
  282. data/lib/chef/resource/service.rb +7 -8
  283. data/lib/chef/resource/smartos_package.rb +10 -2
  284. data/lib/chef/resource/snap_package.rb +4 -2
  285. data/lib/chef/resource/solaris_package.rb +10 -2
  286. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  287. data/lib/chef/resource/sudo.rb +11 -11
  288. data/lib/chef/resource/support/cron.d.erb +1 -1
  289. data/lib/chef/resource/support/cron_access.erb +1 -1
  290. data/lib/chef/resource/support/sudoer.erb +1 -2
  291. data/lib/chef/resource/support/ulimit.erb +41 -0
  292. data/lib/chef/resource/swap_file.rb +7 -5
  293. data/lib/chef/resource/sysctl.rb +63 -4
  294. data/lib/chef/resource/systemd_unit.rb +6 -4
  295. data/lib/chef/resource/template.rb +0 -1
  296. data/lib/chef/resource/timezone.rb +8 -19
  297. data/lib/chef/resource/user.rb +3 -5
  298. data/lib/chef/resource/user/aix_user.rb +0 -2
  299. data/lib/chef/resource/user/dscl_user.rb +1 -1
  300. data/lib/chef/resource/user/linux_user.rb +0 -2
  301. data/lib/chef/resource/user/mac_user.rb +1 -1
  302. data/lib/chef/resource/user/pw_user.rb +0 -2
  303. data/lib/chef/resource/user/solaris_user.rb +0 -2
  304. data/lib/chef/resource/user/windows_user.rb +0 -2
  305. data/lib/chef/resource/user_ulimit.rb +116 -0
  306. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  307. data/lib/chef/resource/windows_ad_join.rb +20 -7
  308. data/lib/chef/resource/windows_auto_run.rb +2 -3
  309. data/lib/chef/resource/windows_certificate.rb +3 -3
  310. data/lib/chef/resource/windows_dfs_folder.rb +1 -2
  311. data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
  312. data/lib/chef/resource/windows_dfs_server.rb +2 -3
  313. data/lib/chef/resource/windows_dns_record.rb +0 -1
  314. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  315. data/lib/chef/resource/windows_env.rb +12 -4
  316. data/lib/chef/resource/windows_feature.rb +59 -4
  317. data/lib/chef/resource/windows_feature_dism.rb +24 -24
  318. data/lib/chef/resource/windows_feature_powershell.rb +44 -78
  319. data/lib/chef/resource/windows_firewall_rule.rb +121 -8
  320. data/lib/chef/resource/windows_font.rb +10 -2
  321. data/lib/chef/resource/windows_package.rb +76 -7
  322. data/lib/chef/resource/windows_pagefile.rb +31 -4
  323. data/lib/chef/resource/windows_path.rb +18 -2
  324. data/lib/chef/resource/windows_printer.rb +26 -7
  325. data/lib/chef/resource/windows_printer_port.rb +29 -2
  326. data/lib/chef/resource/windows_script.rb +3 -4
  327. data/lib/chef/resource/windows_security_policy.rb +119 -0
  328. data/lib/chef/resource/windows_service.rb +46 -32
  329. data/lib/chef/resource/windows_share.rb +22 -6
  330. data/lib/chef/resource/windows_shortcut.rb +13 -3
  331. data/lib/chef/resource/windows_task.rb +129 -16
  332. data/lib/chef/resource/windows_uac.rb +20 -2
  333. data/lib/chef/resource/windows_user_privilege.rb +199 -0
  334. data/lib/chef/resource/windows_workgroup.rb +19 -4
  335. data/lib/chef/resource/yum_package.rb +91 -7
  336. data/lib/chef/resource/yum_repository.rb +30 -12
  337. data/lib/chef/resource/zypper_package.rb +32 -5
  338. data/lib/chef/resource/zypper_repository.rb +19 -6
  339. data/lib/chef/resource_builder.rb +8 -0
  340. data/lib/chef/resource_inspector.rb +3 -2
  341. data/lib/chef/resource_resolver.rb +7 -14
  342. data/lib/chef/resources.rb +11 -3
  343. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  344. data/lib/chef/scan_access_control.rb +1 -1
  345. data/lib/chef/shell.rb +22 -0
  346. data/lib/chef/shell/ext.rb +1 -1
  347. data/lib/chef/version.rb +1 -1
  348. data/lib/chef/win32/api.rb +2 -2
  349. data/lib/chef/win32/api/error.rb +3 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/net.rb +1 -0
  352. data/lib/chef/win32/api/security.rb +6 -0
  353. data/lib/chef/win32/file.rb +1 -9
  354. data/lib/chef/win32/mutex.rb +1 -1
  355. data/lib/chef/win32/net.rb +1 -0
  356. data/lib/chef/win32/security.rb +40 -2
  357. data/lib/chef/win32/security/sid.rb +4 -4
  358. data/spec/functional/assets/inittest +8 -7
  359. data/spec/functional/knife/ssh_spec.rb +23 -19
  360. data/spec/functional/resource/cron_spec.rb +10 -29
  361. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  362. data/spec/functional/resource/git_spec.rb +184 -134
  363. data/spec/functional/resource/insserv_spec.rb +1 -1
  364. data/spec/functional/resource/launchd_spec.rb +232 -0
  365. data/spec/functional/resource/link_spec.rb +3 -3
  366. data/spec/functional/resource/locale_spec.rb +13 -2
  367. data/spec/functional/resource/msu_package_spec.rb +5 -2
  368. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  369. data/spec/functional/resource/remote_file_spec.rb +1 -1
  370. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  371. data/spec/functional/resource/windows_task_spec.rb +4 -4
  372. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  373. data/spec/functional/run_lock_spec.rb +1 -1
  374. data/spec/functional/shell_spec.rb +1 -1
  375. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  376. data/spec/functional/version_spec.rb +1 -1
  377. data/spec/functional/win32/registry_spec.rb +0 -6
  378. data/spec/functional/win32/security_spec.rb +22 -0
  379. data/spec/integration/client/client_spec.rb +123 -2
  380. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  381. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  382. data/spec/integration/knife/raw_spec.rb +34 -6
  383. data/spec/integration/knife/redirection_spec.rb +2 -2
  384. data/spec/integration/knife/show_spec.rb +32 -3
  385. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
  386. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  387. data/spec/integration/recipes/notifies_spec.rb +49 -20
  388. data/spec/integration/recipes/notifying_block_spec.rb +8 -5
  389. data/spec/integration/recipes/provider_choice.rb +2 -0
  390. data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
  391. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  392. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
  393. data/spec/integration/recipes/resource_load_spec.rb +133 -12
  394. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  395. data/spec/integration/solo/solo_spec.rb +3 -3
  396. data/spec/spec_helper.rb +18 -3
  397. data/spec/support/chef_helpers.rb +2 -2
  398. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  399. data/spec/support/platform_helpers.rb +2 -20
  400. data/spec/support/recipe_dsl_helper.rb +83 -0
  401. data/spec/support/shared/functional/http.rb +2 -2
  402. data/spec/support/shared/functional/windows_script.rb +3 -16
  403. data/spec/support/shared/integration/knife_support.rb +9 -6
  404. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  405. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  406. data/spec/unit/application/apply_spec.rb +3 -0
  407. data/spec/unit/application/client_spec.rb +5 -1
  408. data/spec/unit/application_spec.rb +1 -2
  409. data/spec/unit/client_spec.rb +7 -5
  410. data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
  411. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  412. data/spec/unit/data_collector_spec.rb +39 -18
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/json_compat_spec.rb +1 -1
  415. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  416. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  417. data/spec/unit/knife/bootstrap_spec.rb +20 -38
  418. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  419. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  420. data/spec/unit/knife/core/ui_spec.rb +16 -0
  421. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
  422. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  423. data/spec/unit/knife/ssh_spec.rb +8 -111
  424. data/spec/unit/knife/status_spec.rb +1 -1
  425. data/spec/unit/knife_spec.rb +18 -0
  426. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  427. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  428. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  429. data/spec/unit/node/attribute_spec.rb +3 -3
  430. data/spec/unit/node_spec.rb +24 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  432. data/spec/unit/property/state_spec.rb +12 -7
  433. data/spec/unit/property/validation_spec.rb +25 -1
  434. data/spec/unit/property_spec.rb +12 -9
  435. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  436. data/spec/unit/provider/apt_repository_spec.rb +34 -36
  437. data/spec/unit/provider/apt_update_spec.rb +12 -11
  438. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  439. data/spec/unit/provider/cron_spec.rb +2 -2
  440. data/spec/unit/provider/directory_spec.rb +4 -15
  441. data/spec/unit/provider/file_spec.rb +4 -4
  442. data/spec/unit/provider/git_spec.rb +41 -1
  443. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  444. data/spec/unit/provider/launchd_spec.rb +8 -50
  445. data/spec/unit/provider/link_spec.rb +0 -1
  446. data/spec/unit/provider/log_spec.rb +3 -3
  447. data/spec/unit/provider/mdadm_spec.rb +3 -3
  448. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  449. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  450. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  451. data/spec/unit/provider/package/portage_spec.rb +2 -2
  452. data/spec/unit/provider/package/powershell_spec.rb +3 -2
  453. data/spec/unit/provider/package/rubygems_spec.rb +211 -26
  454. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  455. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  456. data/spec/unit/provider/remote_file_spec.rb +3 -4
  457. data/spec/unit/provider/service/debian_service_spec.rb +34 -13
  458. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  459. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  460. data/spec/unit/provider/subversion_spec.rb +4 -2
  461. data/spec/unit/provider/template_spec.rb +3 -4
  462. data/spec/unit/provider/zypper_repository_spec.rb +17 -17
  463. data/spec/unit/provider_resolver_spec.rb +4 -4
  464. data/spec/unit/recipe_spec.rb +68 -0
  465. data/spec/unit/resource/alternatives_spec.rb +120 -0
  466. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  467. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  468. data/spec/unit/resource/apt_update_spec.rb +0 -18
  469. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  470. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  471. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  472. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  473. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  474. data/spec/unit/resource/cron_d_spec.rb +6 -48
  475. data/spec/unit/resource/cron_spec.rb +4 -10
  476. data/spec/unit/resource/gem_package_spec.rb +3 -3
  477. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  478. data/spec/unit/resource/link_spec.rb +0 -4
  479. data/spec/unit/resource/locale_spec.rb +0 -34
  480. data/spec/unit/resource/msu_package_spec.rb +4 -0
  481. data/spec/unit/resource/ohai_spec.rb +56 -2
  482. data/spec/unit/resource/plist_spec.rb +130 -0
  483. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  484. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  485. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  486. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  487. data/spec/unit/resource/service_spec.rb +4 -0
  488. data/spec/unit/resource/user_spec.rb +2 -2
  489. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  490. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  491. data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
  492. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  493. data/spec/unit/resource/windows_package_spec.rb +14 -0
  494. data/spec/unit/resource/windows_service_spec.rb +9 -0
  495. data/spec/unit/resource_reporter_spec.rb +2 -6
  496. data/spec/unit/resource_spec.rb +10 -3
  497. data/spec/unit/run_lock_spec.rb +1 -1
  498. data/spec/unit/scan_access_control_spec.rb +1 -1
  499. data/spec/unit/search/query_spec.rb +1 -1
  500. data/spec/unit/win32/registry_spec.rb +1 -1
  501. data/tasks/rspec.rb +6 -14
  502. metadata +92 -37
  503. data/lib/chef/dsl/core.rb +0 -52
  504. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  505. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  506. data/lib/chef/provider/apt_preference.rb +0 -93
  507. data/lib/chef/provider/apt_repository.rb +0 -358
  508. data/lib/chef/provider/apt_update.rb +0 -79
  509. data/lib/chef/provider/log.rb +0 -43
  510. data/lib/chef/provider/mdadm.rb +0 -85
  511. data/lib/chef/provider/ohai.rb +0 -45
  512. data/lib/chef/resource/git.rb +0 -37
  513. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -36,46 +36,57 @@ class Chef
36
36
  provides(:windows_service) { true }
37
37
  provides :service, os: "windows"
38
38
 
39
- description "Use the windows_service resource to create, delete, or manage a service on the Microsoft Windows platform."
39
+ description "Use the **windows_service** resource to create, delete, or manage a service on the Microsoft Windows platform."
40
40
  introduced "12.0"
41
41
 
42
42
  allowed_actions :configure_startup, :create, :delete, :configure
43
43
 
44
- # The display name to be used by user interface programs to identify the
45
- # service. This string has a maximum length of 256 characters.
44
+ property :timeout, Integer,
45
+ description: "The amount of time (in seconds) to wait before timing out.",
46
+ default: 60,
47
+ desired_state: false
48
+
46
49
  property :display_name, String, regex: /^.{1,256}$/,
47
- validation_message: "The display_name can only be a maximum of 256 characters!",
48
- introduced: "14.0"
50
+ description: "The display name to be used by user interface programs to identify the service. This string has a maximum length of 256 characters.",
51
+ validation_message: "The display_name can only be a maximum of 256 characters!",
52
+ introduced: "14.0"
49
53
 
50
54
  # https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L19-L29
51
- property :desired_access, Integer, default: SERVICE_ALL_ACCESS
55
+ property :desired_access, Integer,
56
+ default: SERVICE_ALL_ACCESS,
57
+ introduced: "14.0"
52
58
 
53
59
  # https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L31-L41
54
- property :service_type, Integer, default: SERVICE_WIN32_OWN_PROCESS
60
+ property :service_type, Integer, default: SERVICE_WIN32_OWN_PROCESS,
61
+ introduced: "14.0"
55
62
 
56
63
  # Valid options:
57
64
  # - :automatic
58
65
  # - :manual
59
66
  # - :disabled
60
67
  # Reference: https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L49-L54
61
- property :startup_type, [Symbol], equal_to: %i{automatic manual disabled}, default: :automatic, coerce: proc { |x|
62
- if x.is_a?(Integer)
63
- ALLOWED_START_TYPES.invert.fetch(x) do
64
- Chef::Log.warn("Unsupported startup_type #{x}, falling back to :automatic")
65
- :automatic
68
+ property :startup_type, [Symbol],
69
+ equal_to: %i{automatic manual disabled},
70
+ default: :automatic,
71
+ description: "Use to specify the startup type of the service.",
72
+ coerce: proc { |x|
73
+ if x.is_a?(Integer)
74
+ ALLOWED_START_TYPES.invert.fetch(x) do
75
+ Chef::Log.warn("Unsupported startup_type #{x}, falling back to :automatic")
76
+ :automatic
77
+ end
78
+ elsif x.is_a?(String)
79
+ x.to_sym
80
+ else
81
+ x
66
82
  end
67
- elsif x.is_a?(String)
68
- x.to_sym
69
- else
70
- x
71
- end
72
- }
73
-
74
- # This only applies if startup_type is :automatic
83
+ }
84
+
75
85
  # 1 == delayed start is enabled
76
86
  # 0 == NO delayed start
77
87
  property :delayed_start, [TrueClass, FalseClass],
78
88
  introduced: "14.0",
89
+ description: "Set the startup type to delayed start. This only applies if `startup_type` is `:automatic`",
79
90
  default: false, coerce: proc { |x|
80
91
  if x.is_a?(Integer)
81
92
  x == 0 ? false : true
@@ -85,31 +96,34 @@ class Chef
85
96
  }
86
97
 
87
98
  # https://github.com/chef/win32-service/blob/ffi/lib/win32/windows/constants.rb#L43-L47
88
- property :error_control, Integer, default: SERVICE_ERROR_NORMAL
99
+ property :error_control, Integer,
100
+ default: SERVICE_ERROR_NORMAL,
101
+ introduced: "14.0"
89
102
 
90
103
  property :binary_path_name, String,
91
104
  introduced: "14.0",
92
- description: "The fully qualified path to the service binary file. The path can also include arguments for an auto-start service. This is required for ':create' and ':configure' actions"
105
+ description: "The fully qualified path to the service binary file. The path can also include arguments for an auto-start service. This is required for `:create` and `:configure` actions"
93
106
 
94
107
  property :load_order_group, String,
95
108
  introduced: "14.0",
96
- description: "The names of the load ordering group of which this service is a member. Don't set this property if the service does not belong to a group."
97
-
98
- # A pointer to a double null-terminated array of null-separated names of
99
- # services or load ordering groups that the system must start before this
100
- # service. Specify nil or an empty string if the service has no
101
- # dependencies. Dependency on a group means that this service can run if
102
- # at least one member of the group is running after an attempt to start
103
- # all members of the group.
109
+ description: "The name of the service's load ordering group(s)."
110
+
104
111
  property :dependencies, [String, Array],
112
+ description: "A pointer to a double null-terminated array of null-separated names of services or load ordering groups that the system must start before this service. Specify `nil` or an empty string if the service has no dependencies. Dependency on a group means that this service can run if at least one member of the group is running after an attempt to start all members of the group.",
105
113
  introduced: "14.0"
106
114
 
107
115
  property :description, String,
108
116
  description: "Description of the service.",
109
117
  introduced: "14.0"
110
118
 
111
- property :run_as_user, String, default: "localsystem", coerce: proc { |x| x.downcase }
112
- property :run_as_password, String, default: ""
119
+ property :run_as_user, String,
120
+ description: "The user under which a Microsoft Windows service runs.",
121
+ default: "localsystem",
122
+ coerce: proc { |x| x.downcase }
123
+
124
+ property :run_as_password, String,
125
+ description: "The password for the user specified by `run_as_user`.",
126
+ default: ""
113
127
  end
114
128
  end
115
129
  end
@@ -26,10 +26,30 @@ require_relative "../util/path_helper"
26
26
  class Chef
27
27
  class Resource
28
28
  class WindowsShare < Chef::Resource
29
- resource_name :windows_share
29
+ provides :windows_share
30
30
 
31
- description "Use the windows_share resource to create, modify and remove Windows shares."
31
+ description "Use the **windows_share** resource to create, modify and remove Windows shares."
32
32
  introduced "14.7"
33
+ examples <<~DOC
34
+ **Create a share**:
35
+
36
+ ```ruby
37
+ windows_share 'foo' do
38
+ action :create
39
+ path 'C:\\foo'
40
+ full_users ['DOMAIN_A\\some_user', 'DOMAIN_B\\some_other_user']
41
+ read_users ['DOMAIN_C\\Domain users']
42
+ end
43
+ ```
44
+
45
+ **Delete a share**:
46
+
47
+ ```ruby
48
+ windows_share 'foo' do
49
+ action :delete
50
+ end
51
+ ```
52
+ DOC
33
53
 
34
54
  # Specifies a name for the SMB share. The name may be composed of any valid file name characters, but must be less than 80 characters long. The names pipe and mailslot are reserved for use by the computer.
35
55
  property :share_name, String,
@@ -145,10 +165,6 @@ class Chef
145
165
  read_users r_users
146
166
  end
147
167
 
148
- def after_created
149
- raise "The windows_share resource relies on PowerShell cmdlets not present in Windows releases prior to 8/2012. Cannot continue!" if node["platform_version"].to_f < 6.3
150
- end
151
-
152
168
  # given the string output of Get-SmbShareAccess parse out
153
169
  # arrays of full access users, change users, and read only users
154
170
  def parse_permissions(results_string)
@@ -21,11 +21,21 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsShortcut < Chef::Resource
24
- resource_name :windows_shortcut
25
24
  provides(:windows_shortcut) { true }
26
25
 
27
- description "Use the windows_shortcut resource to create shortcut files on Windows."
26
+ description "Use the **windows_shortcut** resource to create shortcut files on Windows."
28
27
  introduced "14.0"
28
+ examples <<~DOC
29
+ **Create a shortcut with a description**:
30
+
31
+ ```ruby
32
+ windows_shortcut 'C:\\shortcut_dir.lnk' do
33
+ target 'C:\\original_dir'
34
+ description 'Make a shortcut to C:\\original_dir'
35
+ end
36
+ ```
37
+
38
+ DOC
29
39
 
30
40
  property :shortcut_name, String,
31
41
  description: "An optional property to set the shortcut name if it differs from the resource block's name.",
@@ -44,7 +54,7 @@ class Chef
44
54
  description: "Working directory to use when the target is executed."
45
55
 
46
56
  property :iconlocation, String,
47
- description: "Icon to use for the shortcut. Accepts the format of 'path, index', where index is the icon file to use. See https://msdn.microsoft.com/en-us/library/3s9bx7at.aspx for details"
57
+ 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"
48
58
 
49
59
  load_current_value do |desired|
50
60
  require "win32ole" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
@@ -22,17 +22,129 @@ require_relative "../win32/security" if Chef::Platform.windows?
22
22
  class Chef
23
23
  class Resource
24
24
  class WindowsTask < Chef::Resource
25
- resource_name :windows_task
26
25
  provides(:windows_task) { true }
27
26
 
28
- description "Use the windows_task resource to create, delete or run a Windows scheduled task. Requires Windows Server 2008 or later due to API usage."
27
+ description "Use the **windows_task** resource to create, delete or run a Windows scheduled task."
29
28
  introduced "13.0"
29
+ examples <<~DOC
30
+ **Create a scheduled task to run every 15 minutes as the Administrator user**:
31
+
32
+ ```ruby
33
+ windows_task 'chef-client' do
34
+ user 'Administrator'
35
+ password 'password'
36
+ command 'chef-client'
37
+ run_level :highest
38
+ frequency :minute
39
+ frequency_modifier 15
40
+ end
41
+ ```
42
+
43
+ **Create a scheduled task to run every 2 days**:
44
+
45
+ ``` ruby
46
+ windows_task 'chef-client' do
47
+ command 'chef-client'
48
+ run_level :highest
49
+ frequency :daily
50
+ frequency_modifier 2
51
+ end
52
+ ```
53
+
54
+ **Create a scheduled task to run on specific days of the week**:
55
+
56
+ ```ruby
57
+ windows_task 'chef-client' do
58
+ command 'chef-client'
59
+ run_level :highest
60
+ frequency :weekly
61
+ day 'Mon, Thu'
62
+ end
63
+ ```
64
+
65
+ **Create a scheduled task to run only once**:
66
+
67
+ ```ruby
68
+ windows_task 'chef-client' do
69
+ command 'chef-client'
70
+ run_level :highest
71
+ frequency :once
72
+ start_time "16:10"
73
+ end
74
+ ```
75
+
76
+ **Create a scheduled task to run on current day every 3 weeks and delay upto 1 min**:
77
+
78
+ ```ruby
79
+ windows_task 'chef-client' do
80
+ command 'chef-client'
81
+ run_level :highest
82
+ frequency :weekly
83
+ frequency_modifier 3
84
+ random_delay '60'
85
+ end
86
+ ```
87
+
88
+ **Create a scheduled task to run weekly starting on Dec 28th 2018**:
89
+
90
+ ```ruby
91
+ windows_task 'chef-client 8' do
92
+ command 'chef-client'
93
+ run_level :highest
94
+ frequency :weekly
95
+ start_day '12/28/2018'
96
+ end
97
+ ```
98
+
99
+ **Create a scheduled task to run every Monday, Friday every 2 weeks**:
100
+
101
+ ```ruby
102
+ windows_task 'chef-client' do
103
+ command 'chef-client'
104
+ run_level :highest
105
+ frequency :weekly
106
+ frequency_modifier 2
107
+ day 'Mon, Fri'
108
+ end
109
+ ```
110
+
111
+ **Create a scheduled task to run when computer is idle with idle duration 20 min**:
112
+ ```ruby
113
+ windows_task 'chef-client' do
114
+ command 'chef-client'
115
+ run_level :highest
116
+ frequency :on_idle
117
+ idle_time 20
118
+ end
119
+ ```
120
+
121
+ **Delete a task named "old task"**:
122
+ ```ruby
123
+ windows_task 'old task' do
124
+ action :delete
125
+ end
126
+ ```
127
+
128
+ **Enable a task named "chef-client"**:
129
+ ```ruby
130
+ windows_task 'chef-client' do
131
+ action :enable
132
+ end
133
+ ```
134
+
135
+ **Disable a task named "ProgramDataUpdater" with TaskPath "\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater"**
136
+ ```ruby
137
+ windows_task '\\Microsoft\\Windows\\Application Experience\\ProgramDataUpdater' do
138
+ action :disable
139
+ end
140
+ ```
141
+ DOC
30
142
 
31
143
  allowed_actions :create, :delete, :run, :end, :enable, :disable, :change
32
144
  default_action :create
33
145
 
34
146
  property :task_name, String, regex: [%r{\A[^/\:\*\?\<\>\|]+\z}],
35
- description: "An optional property to set the task name if it differs from the resource block's name. Example: 'Task Name' or '/Task Name'",
147
+ description: "An optional property to set the task name if it differs from the resource block's name. Example: `Task Name` or `/Task Name`",
36
148
  name_property: true
37
149
 
38
150
  property :command, String,
@@ -47,10 +159,10 @@ class Chef
47
159
  default_description: "The localized SYSTEM user for the node."
48
160
 
49
161
  property :password, String,
50
- description: "The users password. The user property must be set if using this property."
162
+ description: "The user's password. The user property must be set if using this property."
51
163
 
52
164
  property :run_level, Symbol, equal_to: %i{highest limited},
53
- description: "Run with ':limited' or ':highest' privileges.",
165
+ description: "Run with `:limited` or `:highest` privileges.",
54
166
  default: :limited
55
167
 
56
168
  property :force, [TrueClass, FalseClass],
@@ -87,17 +199,18 @@ class Chef
87
199
  description: "The day(s) on which the task runs."
88
200
 
89
201
  property :months, String,
90
- description: "The Months of the year on which the task runs, such as: 'JAN, FEB' or '\*'. Multiple months should be comma delimited. e.g. 'Jan, Feb, Mar, Dec'."
202
+ description: "The Months of the year on which the task runs, such as: `JAN, FEB` or `*`. Multiple months should be comma delimited. e.g. `Jan, Feb, Mar, Dec`."
91
203
 
92
204
  property :idle_time, Integer,
93
- description: "For :on_idle frequency, the time (in minutes) without user activity that must pass to trigger the task, from 1 - 999."
205
+ description: "For `:on_idle` frequency, the time (in minutes) without user activity that must pass to trigger the task, from `1` - `999`."
94
206
 
95
207
  property :random_delay, [String, Integer],
96
208
  description: "Delays the task up to a given time (in seconds)."
97
209
 
98
210
  property :execution_time_limit, [String, Integer],
99
- description: "The maximum time (in seconds) the task will run.",
100
- default: "PT72H" # 72 hours in ISO8601 duration format
211
+ description: "The maximum time the task will run. This field accepts either seconds or an ISO8601 duration value.",
212
+ default: "PT72H",
213
+ default_description: "PT72H (72 hours in ISO8601 duration format)"
101
214
 
102
215
  property :minutes_duration, [String, Integer],
103
216
  description: ""
@@ -122,7 +235,7 @@ class Chef
122
235
  description: "The task description."
123
236
 
124
237
  property :start_when_available, [TrueClass, FalseClass],
125
- introduced: "15.0", default: false,
238
+ introduced: "14.15", default: false,
126
239
  description: "To start the task at any time after its scheduled time has passed."
127
240
 
128
241
  attr_accessor :exists, :task, :command_arguments
@@ -161,7 +274,7 @@ class Chef
161
274
 
162
275
  ## Resource is not idempotent when day, start_day is not provided with frequency :weekly
163
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 ..
164
- ## 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
165
278
  def idempotency_warning_for_frequency_weekly(day, start_day)
166
279
  if start_day.nil? && day.nil?
167
280
  logger.warn "To maintain idempotency for frequency :weekly provide start_day, start_time and day."
@@ -182,19 +295,19 @@ class Chef
182
295
  end
183
296
 
184
297
  def validate_frequency_monthly(frequency_modifier, months, day)
185
- # 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
186
299
  if (frequency_modifier != 1) && (frequency_modifier_includes_days_of_weeks?(frequency_modifier)) && !(day)
187
- 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."
188
301
  end
189
302
 
190
- # 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.
191
- # 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
192
305
  if (frequency_modifier.to_i.between?(2, 12)) && !(months.nil?)
193
306
  raise ArgumentError, "For frequency :monthly either use property months or frequency_modifier to set months."
194
307
  end
195
308
  end
196
309
 
197
- # 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
198
311
  def frequency_modifier_includes_days_of_weeks?(frequency_modifier)
199
312
  frequency_modifier = frequency_modifier.to_s.split(",")
200
313
  frequency_modifier.map! { |value| value.strip.upcase }
@@ -20,11 +20,29 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class WindowsUac < Chef::Resource
23
- resource_name :windows_uac
24
23
  provides :windows_uac
25
24
 
26
- description 'The windows_uac resource configures UAC on Windows hosts by setting registry keys at \'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\''
25
+ description 'The *windows_uac* resource configures UAC on Windows hosts by setting registry keys at `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`'
27
26
  introduced "15.0"
27
+ examples <<~DOC
28
+ **Disable UAC prompts for the admin**:
29
+
30
+ ``` ruby
31
+ windows_uac 'Disable UAC prompts for the admin' do
32
+ enable_uac true
33
+ prompt_on_secure_desktop false
34
+ consent_behavior_admins :no_prompt
35
+ end
36
+ ```
37
+
38
+ **Disable UAC entirely**:
39
+
40
+ ``` ruby
41
+ windows_uac 'Disable UAC entirely' do
42
+ enable_uac false
43
+ end
44
+ ```
45
+ DOC
28
46
 
29
47
  # https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/user-account-control-group-policy-and-registry-key-settings#user-account-control-virtualize-file-and-registry-write-failures-to-per-user-locations
30
48
  property :enable_uac, [TrueClass, FalseClass],
@@ -0,0 +1,199 @@
1
+ #
2
+ # Author:: Jared Kauppila (<jared@kauppi.la>)
3
+ # Author:: Vasundhara Jagdale(<vasundhara.jagdale@chef.io>)
4
+ # Copyright:: Copyright (c) Chef Software Inc.
5
+
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require_relative "../resource"
20
+
21
+ class Chef
22
+ class Resource
23
+ class WindowsUserPrivilege < Chef::Resource
24
+ privilege_opts = %w{SeTrustedCredManAccessPrivilege
25
+ SeNetworkLogonRight
26
+ SeTcbPrivilege
27
+ SeMachineAccountPrivilege
28
+ SeIncreaseQuotaPrivilege
29
+ SeInteractiveLogonRight
30
+ SeRemoteInteractiveLogonRight
31
+ SeBackupPrivilege
32
+ SeChangeNotifyPrivilege
33
+ SeSystemtimePrivilege
34
+ SeTimeZonePrivilege
35
+ SeCreatePagefilePrivilege
36
+ SeCreateTokenPrivilege
37
+ SeCreateGlobalPrivilege
38
+ SeCreatePermanentPrivilege
39
+ SeCreateSymbolicLinkPrivilege
40
+ SeDebugPrivilege
41
+ SeDenyNetworkLogonRight
42
+ SeDenyBatchLogonRight
43
+ SeDenyServiceLogonRight
44
+ SeDenyInteractiveLogonRight
45
+ SeDenyRemoteInteractiveLogonRight
46
+ SeEnableDelegationPrivilege
47
+ SeRemoteShutdownPrivilege
48
+ SeAuditPrivilege
49
+ SeImpersonatePrivilege
50
+ SeIncreaseWorkingSetPrivilege
51
+ SeIncreaseBasePriorityPrivilege
52
+ SeLoadDriverPrivilege
53
+ SeLockMemoryPrivilege
54
+ SeBatchLogonRight
55
+ SeServiceLogonRight
56
+ SeSecurityPrivilege
57
+ SeRelabelPrivilege
58
+ SeSystemEnvironmentPrivilege
59
+ SeManageVolumePrivilege
60
+ SeProfileSingleProcessPrivilege
61
+ SeSystemProfilePrivilege
62
+ SeUndockPrivilege
63
+ SeAssignPrimaryTokenPrivilege
64
+ SeRestorePrivilege
65
+ SeShutdownPrivilege
66
+ SeSyncAgentPrivilege
67
+ SeTakeOwnershipPrivilege
68
+ }
69
+
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"
72
+
73
+ introduced "16.0"
74
+
75
+ examples <<~DOC
76
+ **Set the SeNetworkLogonRight Privilege for the Builtin Administrators Group and Authenticated Users**:
77
+
78
+ ```ruby
79
+ windows_user_privilege 'Network Logon Rights' do
80
+ privilege 'SeNetworkLogonRight'
81
+ users ['BUILTIN\Administrators', 'NT AUTHORITY\Authenticated Users']
82
+ action :set
83
+ end
84
+ ```
85
+
86
+ **Add the SeDenyRemoteInteractiveLogonRight Privilege to the Builtin Guests and Local Accounts User Groups**:
87
+
88
+ ```ruby
89
+ windows_user_privilege 'Remote interactive logon' do
90
+ privilege 'SeDenyRemoteInteractiveLogonRight'
91
+ users ['Builtin\Guests', 'NT AUTHORITY\Local Account']
92
+ action :add
93
+ end
94
+ ```
95
+
96
+ **Provide only the Builtin Guests and Administrator Groups with the SeCreatePageFile Privilege**:
97
+
98
+ ```ruby
99
+ windows_user_privilege 'Create Pagefile' do
100
+ privilege 'SeCreatePagefilePrivilege'
101
+ users ['BUILTIN\Guests', 'BUILTIN\Administrators']
102
+ action :set
103
+ end
104
+ ```
105
+
106
+ **Remove the SeCreatePageFile Privilege from the Builtin Guests Group**:
107
+
108
+ ```ruby
109
+ windows_user_privilege 'Create Pagefile' do
110
+ privilege 'SeCreatePagefilePrivilege'
111
+ users ['BUILTIN\Guests']
112
+ action :remove
113
+ end
114
+ ```
115
+ DOC
116
+
117
+ property :principal, String,
118
+ description: "An optional property to add the user to the given privilege. Use only with add and remove action.",
119
+ name_property: true
120
+
121
+ property :users, Array,
122
+ description: "An optional property to set the privilege for given users. Use only with set action."
123
+
124
+ property :privilege, [Array, String],
125
+ description: "Privilege to set for users.",
126
+ required: true,
127
+ coerce: proc { |v| v.is_a?(String) ? Array[v] : v },
128
+ callbacks: {
129
+ "Option privilege must include any of the: #{privilege_opts}" => lambda { |v|
130
+ (privilege_opts & v).size == v.size
131
+ },
132
+ }
133
+
134
+ load_current_value do |new_resource|
135
+ unless new_resource.principal.nil?
136
+ privilege Chef::ReservedNames::Win32::Security.get_account_right(new_resource.principal) unless new_resource.action.include?(:set)
137
+ end
138
+ end
139
+
140
+ action :add do
141
+ ([*new_resource.privilege] - [*current_resource.privilege]).each do |user_right|
142
+ converge_by("adding user '#{new_resource.principal}' privilege #{user_right}") do
143
+ Chef::ReservedNames::Win32::Security.add_account_right(new_resource.principal, user_right)
144
+ end
145
+ end
146
+ end
147
+
148
+ action :set do
149
+ if new_resource.users.nil? || new_resource.users.empty?
150
+ raise Chef::Exceptions::ValidationFailed, "Users are required property with set action."
151
+ end
152
+
153
+ users = []
154
+
155
+ # Getting users with its domain for comparison
156
+ new_resource.users.each do |user|
157
+ user = Chef::ReservedNames::Win32::Security.lookup_account_name(user)
158
+ users << user[1].account_name if user
159
+ end
160
+
161
+ new_resource.privilege.each do |privilege|
162
+ accounts = Chef::ReservedNames::Win32::Security.get_account_with_user_rights(privilege)
163
+
164
+ # comparing the existing accounts for privilege with users
165
+ unless users == accounts
166
+ # Removing only accounts which is not matching with users in new_resource
167
+ (accounts - users).each do |account|
168
+ converge_by("removing user '#{account}' from privilege #{privilege}") do
169
+ Chef::ReservedNames::Win32::Security.remove_account_right(account, privilege)
170
+ end
171
+ end
172
+
173
+ # Adding only users which is not already exist
174
+ (users - accounts).each do |user|
175
+ converge_by("adding user '#{user}' to privilege #{privilege}") do
176
+ Chef::ReservedNames::Win32::Security.add_account_right(user, privilege)
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
182
+
183
+ action :remove do
184
+ curr_res_privilege = current_resource.privilege
185
+ missing_res_privileges = (new_resource.privilege - curr_res_privilege)
186
+
187
+ if missing_res_privileges
188
+ Chef::Log.info("User \'#{new_resource.principal}\' for Privilege: #{missing_res_privileges.join(", ")} not found. Nothing to remove.")
189
+ end
190
+
191
+ (new_resource.privilege - missing_res_privileges).each do |user_right|
192
+ converge_by("removing user #{new_resource.principal} from privilege #{user_right}") do
193
+ Chef::ReservedNames::Win32::Security.remove_account_right(new_resource.principal, user_right)
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end