chef 16.2.73-universal-mingw32 → 16.4.41-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +1 -1
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +2 -1
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +2 -2
  8. data/lib/chef/application.rb +13 -1
  9. data/lib/chef/application/apply.rb +5 -5
  10. data/lib/chef/application/windows_service.rb +27 -27
  11. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  12. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  13. data/lib/chef/chef_class.rb +0 -1
  14. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  18. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  21. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  24. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  26. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  27. data/lib/chef/client.rb +14 -14
  28. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  29. data/lib/chef/cookbook/syntax_check.rb +1 -2
  30. data/lib/chef/cookbook_loader.rb +15 -29
  31. data/lib/chef/data_bag.rb +1 -2
  32. data/lib/chef/data_collector/run_end_message.rb +11 -1
  33. data/lib/chef/deprecated.rb +8 -0
  34. data/lib/chef/dsl/platform_introspection.rb +9 -7
  35. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  36. data/lib/chef/environment.rb +3 -4
  37. data/lib/chef/exceptions.rb +4 -1
  38. data/lib/chef/file_content_management/tempfile.rb +9 -9
  39. data/lib/chef/handler.rb +2 -0
  40. data/lib/chef/http.rb +11 -11
  41. data/lib/chef/http/authenticator.rb +3 -1
  42. data/lib/chef/json_compat.rb +1 -1
  43. data/lib/chef/knife.rb +4 -4
  44. data/lib/chef/knife/bootstrap.rb +6 -12
  45. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  46. data/lib/chef/knife/config_get.rb +1 -0
  47. data/lib/chef/knife/config_list_profiles.rb +4 -1
  48. data/lib/chef/knife/configure.rb +3 -1
  49. data/lib/chef/knife/cookbook_download.rb +1 -1
  50. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  51. data/lib/chef/knife/cookbook_upload.rb +28 -33
  52. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  53. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  54. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  55. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  56. data/lib/chef/knife/core/ui.rb +8 -2
  57. data/lib/chef/knife/core/windows_bootstrap_context.rb +32 -25
  58. data/lib/chef/knife/delete.rb +15 -15
  59. data/lib/chef/knife/exec.rb +2 -2
  60. data/lib/chef/knife/rehash.rb +3 -21
  61. data/lib/chef/knife/ssh.rb +11 -7
  62. data/lib/chef/knife/xargs.rb +19 -19
  63. data/lib/chef/knife/yaml_convert.rb +1 -1
  64. data/lib/chef/log.rb +7 -2
  65. data/lib/chef/mixin/checksum.rb +0 -1
  66. data/lib/chef/mixin/chef_utils_wiring.rb +40 -0
  67. data/lib/chef/mixin/deep_merge.rb +35 -6
  68. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  69. data/lib/chef/mixin/openssl_helper.rb +30 -6
  70. data/lib/chef/mixin/path_sanity.rb +5 -4
  71. data/lib/chef/mixin/shell_out.rb +4 -188
  72. data/lib/chef/mixin/template.rb +1 -0
  73. data/lib/chef/mixin/which.rb +6 -3
  74. data/lib/chef/mixins.rb +1 -0
  75. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  76. data/lib/chef/node.rb +36 -12
  77. data/lib/chef/node/attribute.rb +2 -4
  78. data/lib/chef/node_map.rb +21 -18
  79. data/lib/chef/platform/service_helpers.rb +31 -28
  80. data/lib/chef/property.rb +1 -1
  81. data/lib/chef/provider/cron/unix.rb +0 -2
  82. data/lib/chef/provider/git.rb +17 -9
  83. data/lib/chef/provider/group.rb +0 -2
  84. data/lib/chef/provider/group/suse.rb +5 -5
  85. data/lib/chef/provider/ifconfig.rb +1 -4
  86. data/lib/chef/provider/mount.rb +0 -2
  87. data/lib/chef/provider/mount/solaris.rb +0 -1
  88. data/lib/chef/provider/package.rb +0 -2
  89. data/lib/chef/provider/package/rubygems.rb +1 -1
  90. data/lib/chef/provider/package/snap.rb +3 -4
  91. data/lib/chef/provider/package/windows.rb +9 -4
  92. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  93. data/lib/chef/provider/package/zypper.rb +0 -1
  94. data/lib/chef/provider/powershell_script.rb +21 -5
  95. data/lib/chef/provider/route.rb +1 -1
  96. data/lib/chef/provider/service.rb +2 -2
  97. data/lib/chef/provider/service/arch.rb +1 -1
  98. data/lib/chef/provider/service/debian.rb +1 -1
  99. data/lib/chef/provider/service/gentoo.rb +2 -2
  100. data/lib/chef/provider/service/macosx.rb +2 -2
  101. data/lib/chef/provider/service/openbsd.rb +1 -4
  102. data/lib/chef/provider/service/redhat.rb +2 -2
  103. data/lib/chef/provider/service/upstart.rb +1 -1
  104. data/lib/chef/provider/service/windows.rb +10 -10
  105. data/lib/chef/provider/systemd_unit.rb +0 -2
  106. data/lib/chef/provider/template/content.rb +1 -0
  107. data/lib/chef/provider/user/dscl.rb +2 -2
  108. data/lib/chef/provider/user/mac.rb +9 -9
  109. data/lib/chef/provider/windows_task.rb +0 -3
  110. data/lib/chef/provider/yum_repository.rb +1 -1
  111. data/lib/chef/provider/zypper_repository.rb +1 -2
  112. data/lib/chef/providers.rb +0 -1
  113. data/lib/chef/recipe.rb +1 -1
  114. data/lib/chef/resource.rb +8 -10
  115. data/lib/chef/resource/apt_repository.rb +1 -10
  116. data/lib/chef/resource/build_essential.rb +2 -2
  117. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  118. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  119. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  120. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  121. data/lib/chef/resource/cron/cron_d.rb +1 -1
  122. data/lib/chef/resource/cron_access.rb +2 -2
  123. data/lib/chef/resource/execute.rb +4 -5
  124. data/lib/chef/resource/homebrew_update.rb +2 -2
  125. data/lib/chef/resource/hostname.rb +18 -18
  126. data/lib/chef/resource/lwrp_base.rb +1 -0
  127. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  128. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  129. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  130. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  131. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  132. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  133. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  134. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  135. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  136. data/lib/chef/resource/osx_profile.rb +227 -5
  137. data/lib/chef/resource/powershell_package_source.rb +1 -1
  138. data/lib/chef/resource/powershell_script.rb +24 -30
  139. data/lib/chef/resource/service.rb +2 -2
  140. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  141. data/lib/chef/resource/sudo.rb +2 -2
  142. data/lib/chef/resource/sysctl.rb +5 -5
  143. data/lib/chef/resource/timezone.rb +112 -73
  144. data/lib/chef/resource/user_ulimit.rb +1 -1
  145. data/lib/chef/resource/windows_ad_join.rb +2 -0
  146. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  147. data/lib/chef/resource/windows_auto_run.rb +2 -0
  148. data/lib/chef/resource/windows_certificate.rb +2 -0
  149. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  150. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  151. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  152. data/lib/chef/resource/windows_dns_record.rb +25 -5
  153. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  154. data/lib/chef/resource/windows_feature.rb +2 -0
  155. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  156. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  157. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  158. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  159. data/lib/chef/resource/windows_font.rb +3 -1
  160. data/lib/chef/resource/windows_pagefile.rb +4 -0
  161. data/lib/chef/resource/windows_printer.rb +17 -18
  162. data/lib/chef/resource/windows_printer_port.rb +14 -13
  163. data/lib/chef/resource/windows_security_policy.rb +51 -20
  164. data/lib/chef/resource/windows_share.rb +5 -3
  165. data/lib/chef/resource/windows_shortcut.rb +2 -0
  166. data/lib/chef/resource/windows_uac.rb +2 -0
  167. data/lib/chef/resource/windows_user_privilege.rb +2 -0
  168. data/lib/chef/resource/windows_workgroup.rb +2 -3
  169. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  170. data/lib/chef/resource_inspector.rb +7 -1
  171. data/lib/chef/resources.rb +1 -0
  172. data/lib/chef/role.rb +3 -4
  173. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  174. data/lib/chef/run_status.rb +2 -6
  175. data/lib/chef/server_api_versions.rb +4 -0
  176. data/lib/chef/shell.rb +1 -1
  177. data/lib/chef/shell/shell_session.rb +2 -0
  178. data/lib/chef/util/backup.rb +1 -1
  179. data/lib/chef/util/diff.rb +11 -12
  180. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  181. data/lib/chef/version.rb +2 -2
  182. data/lib/chef/win32/file.rb +2 -2
  183. data/lib/chef/win32/file/version_info.rb +5 -5
  184. data/lib/chef/win32/registry.rb +1 -2
  185. data/spec/data/ssl/chef-rspec.cert +15 -15
  186. data/spec/functional/knife/ssh_spec.rb +5 -16
  187. data/spec/functional/resource/aix_service_spec.rb +0 -2
  188. data/spec/functional/resource/aixinit_service_spec.rb +7 -8
  189. data/spec/functional/resource/apt_package_spec.rb +0 -1
  190. data/spec/functional/resource/bff_spec.rb +2 -2
  191. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  192. data/spec/functional/resource/cron_spec.rb +0 -1
  193. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  194. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  195. data/spec/functional/resource/git_spec.rb +23 -1
  196. data/spec/functional/resource/group_spec.rb +12 -8
  197. data/spec/functional/resource/insserv_spec.rb +4 -5
  198. data/spec/functional/resource/link_spec.rb +20 -20
  199. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  200. data/spec/functional/resource/remote_file_spec.rb +1 -7
  201. data/spec/functional/resource/rpm_spec.rb +2 -2
  202. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  203. data/spec/functional/resource/windows_font_spec.rb +49 -0
  204. data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
  205. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -1
  206. data/spec/functional/run_lock_spec.rb +26 -25
  207. data/spec/functional/shell_spec.rb +5 -5
  208. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  209. data/spec/functional/version_spec.rb +1 -1
  210. data/spec/functional/win32/registry_spec.rb +8 -8
  211. data/spec/functional/win32/service_manager_spec.rb +1 -1
  212. data/spec/integration/knife/common_options_spec.rb +12 -12
  213. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  214. data/spec/integration/knife/config_get_spec.rb +126 -125
  215. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  216. data/spec/integration/knife/config_use_profile_spec.rb +110 -109
  217. data/spec/integration/knife/cookbook_upload_spec.rb +27 -0
  218. data/spec/integration/knife/diff_spec.rb +3 -1
  219. data/spec/integration/knife/download_spec.rb +3 -1
  220. data/spec/integration/knife/serve_spec.rb +5 -5
  221. data/spec/integration/knife/upload_spec.rb +3 -1
  222. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  223. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  224. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  225. data/spec/integration/recipes/notifies_spec.rb +1 -1
  226. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  227. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
  228. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  229. data/spec/integration/recipes/resource_load_spec.rb +2 -0
  230. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  231. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  232. data/spec/scripts/ssl-serve.rb +1 -1
  233. data/spec/spec_helper.rb +16 -10
  234. data/spec/support/chef_helpers.rb +1 -20
  235. data/spec/support/platform_helpers.rb +9 -11
  236. data/spec/support/platforms/win32/spec_service.rb +1 -1
  237. data/spec/support/shared/functional/directory_resource.rb +1 -1
  238. data/spec/support/shared/functional/execute_resource.rb +1 -1
  239. data/spec/support/shared/functional/file_resource.rb +20 -21
  240. data/spec/support/shared/functional/win32_service.rb +1 -1
  241. data/spec/support/shared/functional/windows_script.rb +3 -3
  242. data/spec/support/shared/integration/integration_helper.rb +22 -52
  243. data/spec/support/shared/integration/knife_support.rb +2 -9
  244. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  245. data/spec/support/shared/unit/script_resource.rb +6 -20
  246. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  247. data/spec/unit/application_spec.rb +4 -2
  248. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  249. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  250. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  251. data/spec/unit/data_collector_spec.rb +29 -1
  252. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  253. data/spec/unit/environment_spec.rb +7 -7
  254. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  255. data/spec/unit/http/api_versions_spec.rb +19 -1
  256. data/spec/unit/json_compat_spec.rb +1 -1
  257. data/spec/unit/knife/bootstrap_spec.rb +16 -20
  258. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  259. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  260. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  261. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  262. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  263. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  264. data/spec/unit/log/syslog_spec.rb +6 -10
  265. data/spec/unit/log/winevt_spec.rb +21 -13
  266. data/spec/unit/lwrp_spec.rb +4 -4
  267. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  268. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  269. data/spec/unit/mixin/securable_spec.rb +0 -1
  270. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  271. data/spec/unit/mixin/template_spec.rb +30 -30
  272. data/spec/unit/mixin/which.rb +8 -0
  273. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  274. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  275. data/spec/unit/node_spec.rb +103 -16
  276. data/spec/unit/property_spec.rb +5 -5
  277. data/spec/unit/provider/execute_spec.rb +0 -7
  278. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  279. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  280. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  281. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  282. data/spec/unit/provider/package/windows_spec.rb +30 -53
  283. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  284. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  285. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  286. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  287. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  288. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  289. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  290. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  291. data/spec/unit/provider/service/windows_spec.rb +2 -6
  292. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  293. data/spec/unit/provider_resolver_spec.rb +6 -6
  294. data/spec/unit/provider_spec.rb +1 -0
  295. data/spec/unit/resource/batch_spec.rb +6 -6
  296. data/spec/unit/resource/execute_spec.rb +123 -118
  297. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  298. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  299. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  300. data/spec/unit/resource/script_spec.rb +6 -1
  301. data/spec/unit/resource/timezone_spec.rb +63 -0
  302. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  303. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  304. data/spec/unit/resource/windows_package_spec.rb +1 -0
  305. data/spec/unit/resource_reporter_spec.rb +1 -1
  306. data/spec/unit/role_spec.rb +11 -11
  307. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  308. data/spec/unit/run_lock_spec.rb +1 -1
  309. data/spec/unit/scan_access_control_spec.rb +1 -1
  310. data/spec/unit/server_api_spec.rb +43 -16
  311. data/spec/unit/util/diff_spec.rb +1 -15
  312. data/spec/unit/win32/security_spec.rb +4 -3
  313. data/tasks/rspec.rb +1 -1
  314. metadata +39 -31
  315. data/lib/chef/provider/osx_profile.rb +0 -255
  316. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -34,7 +34,7 @@ class Chef
34
34
 
35
35
  property :url, String,
36
36
  description: "The url to the package source.",
37
- required: true
37
+ required: [:register]
38
38
 
39
39
  property :trusted, [TrueClass, FalseClass],
40
40
  description: "Whether or not to trust packages from this source.",
@@ -25,19 +25,31 @@ class Chef
25
25
  provides :powershell_script, os: "windows"
26
26
 
27
27
  property :flags, String,
28
- description: "A string that is passed to the Windows PowerShell command",
29
- default: lazy { default_flags },
30
- coerce: proc { |input|
31
- if input == default_flags
32
- # Means there was no input provided,
33
- # and should use defaults in this case
34
- input
35
- else
36
- # The last occurrence of a flag would override its
37
- # previous one at the time of command execution.
38
- [default_flags, input].join(" ")
28
+ description: "A string that is passed to the Windows PowerShell command"
29
+
30
+ property :convert_boolean_return, [true, false],
31
+ default: false,
32
+ description: <<~DESC
33
+ Return `0` if the last line of a command is evaluated to be true or to return `1` if the last line is evaluated to be false.
34
+
35
+ When the `guard_interpreter` common attribute is set to `:powershell_script`, a string command will be evaluated as if this value were set to `true`. This is because the behavior of this attribute is similar to the value of the `"$?"` expression common in UNIX interpreters. For example, this:
36
+
37
+ ```ruby
38
+ powershell_script 'make_safe_backup' do
39
+ guard_interpreter :powershell_script
40
+ code 'cp ~/data/nodes.json ~/data/nodes.bak'
41
+ not_if 'test-path ~/data/nodes.bak'
42
+ end
43
+ ```
44
+
45
+ is similar to:
46
+ ```ruby
47
+ bash 'make_safe_backup' do
48
+ code 'cp ~/data/nodes.json ~/data/nodes.bak'
49
+ not_if 'test -e ~/data/nodes.bak'
39
50
  end
40
- }
51
+ ```
52
+ DESC
41
53
 
42
54
  description "Use the **powershell_script** resource to execute a script using the Windows PowerShell"\
43
55
  " interpreter, much like how the script and script-based resources—bash, csh, perl, python,"\
@@ -52,15 +64,6 @@ class Chef
52
64
  super
53
65
  @interpreter = "powershell.exe"
54
66
  @default_guard_interpreter = resource_name
55
- @convert_boolean_return = false
56
- end
57
-
58
- def convert_boolean_return(arg = nil)
59
- set_or_return(
60
- :convert_boolean_return,
61
- arg,
62
- kind_of: [ FalseClass, TrueClass ]
63
- )
64
67
  end
65
68
 
66
69
  # Allow callers evaluating guards to request default
@@ -73,15 +76,6 @@ class Chef
73
76
  def self.get_default_attributes(opts)
74
77
  { convert_boolean_return: true }
75
78
  end
76
-
77
- # Options that will be passed to Windows PowerShell command
78
- #
79
- # @returns [String]
80
- def default_flags
81
- # Set InputFormat to None as PowerShell will hang if STDIN is redirected
82
- # http://connect.microsoft.com/PowerShell/feedback/details/572313/powershell-exe-can-hang-if-stdin-is-redirected
83
- "-NoLogo -NonInteractive -NoProfile -ExecutionPolicy Bypass -InputFormat None"
84
- end
85
79
  end
86
80
  end
87
81
  end
@@ -25,8 +25,8 @@ require_relative "../dist"
25
25
  class Chef
26
26
  class Resource
27
27
  class Service < Chef::Resource
28
- include ChefUtils::DSL::Service
29
- extend ChefUtils::DSL::Service
28
+ include Chef::Platform::ServiceHelpers
29
+ extend Chef::Platform::ServiceHelpers
30
30
  unified_mode true
31
31
 
32
32
  provides :service, target_mode: true
@@ -106,7 +106,7 @@ class Chef
106
106
 
107
107
  r = with_run_context :root do
108
108
  find_resource(:template, "update ssh known hosts file #{new_resource.file_location}") do
109
- source ::File.expand_path("../support/ssh_known_hosts.erb", __FILE__)
109
+ source ::File.expand_path("support/ssh_known_hosts.erb", __dir__)
110
110
  local true
111
111
  path new_resource.file_location
112
112
  owner new_resource.owner
@@ -199,7 +199,7 @@ class Chef
199
199
  end
200
200
  else
201
201
  template file_path do
202
- source ::File.expand_path("../support/sudoer.erb", __FILE__)
202
+ source ::File.expand_path("support/sudoer.erb", __dir__)
203
203
  local true
204
204
  mode "0440"
205
205
  variables sudoer: (new_resource.groups + new_resource.users).join(","),
@@ -255,7 +255,7 @@ class Chef
255
255
  end
256
256
 
257
257
  def visudo_content(path)
258
- if ::File.exists?(path)
258
+ if ::File.exist?(path)
259
259
  "cat #{new_resource.config_prefix}/sudoers | #{new_resource.visudo_binary} -cf - && #{new_resource.visudo_binary} -cf %{path}"
260
260
  else
261
261
  "cat #{new_resource.config_prefix}/sudoers %{path} | #{new_resource.visudo_binary} -cf -"
@@ -128,11 +128,11 @@ class Chef
128
128
  end
129
129
 
130
130
  load_current_value do
131
- begin
132
- value get_sysctl_value(key)
133
- rescue
134
- current_value_does_not_exist!
135
- end
131
+
132
+ value get_sysctl_value(key)
133
+ rescue
134
+ current_value_does_not_exist!
135
+
136
136
  end
137
137
 
138
138
  action :apply do
@@ -26,7 +26,7 @@ class Chef
26
26
 
27
27
  provides :timezone
28
28
 
29
- description "Use the **timezone** resource to change the system timezone on Windows, Linux, and macOS hosts. Timezones are specified in tz database format, with a complete list of available TZ values for Linux and macOS here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones and for Windows here: https://ss64.com/nt/timezones.html."
29
+ description "Use the **timezone** resource to change the system timezone on Windows, Linux, and macOS hosts. Timezones are specified in tz database format, with a complete list of available TZ values for Linux and macOS here: <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>. On Windows systems run `tzutil /l` for a complete list of valid timezones."
30
30
  introduced "14.6"
31
31
  examples <<~DOC
32
32
  **Set the timezone to UTC**
@@ -35,11 +35,19 @@ class Chef
35
35
  timezone 'UTC'
36
36
  ```
37
37
 
38
- **Set the timezone to UTC with a friendly resource name**
38
+ **Set the timezone to America/Los_Angeles with a friendly resource name on Linux/macOS**
39
39
 
40
40
  ```ruby
41
- timezone 'Set the host's timezone to UTC' do
42
- timezone 'UTC'
41
+ timezone 'Set the host's timezone to America/Los_Angeles' do
42
+ timezone 'America/Los_Angeles'
43
+ end
44
+ ```
45
+
46
+ **Set the timezone to PST with a friendly resource name on Windows**
47
+
48
+ ```ruby
49
+ timezone 'Set the host's timezone to PST' do
50
+ timezone 'Pacific Standard time'
43
51
  end
44
52
  ```
45
53
  DOC
@@ -48,90 +56,121 @@ class Chef
48
56
  description: "An optional property to set the timezone value if it differs from the resource block's name.",
49
57
  name_property: true
50
58
 
51
- action :set do
52
- description "Set the timezone."
53
-
54
- # some linux systems may be missing the timezone data
55
- if linux?
56
- package "tzdata" do
57
- package_name suse? ? "timezone" : "tzdata"
58
- end
59
+ # detect the current TZ on darwin hosts
60
+ #
61
+ # @since 14.7
62
+ # @return [String] TZ database value
63
+ def current_macos_tz
64
+ tz_shellout = shell_out!(["systemsetup", "-gettimezone"])
65
+ if /You need administrator access/.match?(tz_shellout.stdout)
66
+ raise "The timezone resource requires administrative privileges to run on macOS hosts!"
67
+ else
68
+ /Time Zone: (.*)/.match(tz_shellout.stdout)[1]
59
69
  end
70
+ end
60
71
 
61
- # Modern SUSE, Amazon, Fedora, RHEL, Ubuntu & Debian
62
- if systemd?
63
- cmd_set_tz = "/usr/bin/timedatectl --no-ask-password set-timezone #{new_resource.timezone}"
72
+ # detect the current timezone on windows hosts
73
+ #
74
+ # @since 14.7
75
+ # @return [String] timezone id
76
+ def current_windows_tz
77
+ tz_shellout = shell_out("tzutil /g")
78
+ raise "There was an error running the tzutil command" if tz_shellout.error?
64
79
 
65
- cmd_check_if_set = "/usr/bin/timedatectl status"
66
- cmd_check_if_set += " | /usr/bin/awk '/Time.*zone/{print}'"
67
- cmd_check_if_set += " | grep -q #{new_resource.timezone}"
80
+ tz_shellout.stdout.strip
81
+ end
68
82
 
69
- execute cmd_set_tz do
70
- action :run
71
- not_if cmd_check_if_set
72
- end
83
+ # detect the current timezone on systemd hosts
84
+ #
85
+ # @since 16.5
86
+ # @return [String] timezone id
87
+ def current_systemd_tz
88
+ tz_shellout = shell_out(["/usr/bin/timedatectl", "status"])
89
+ raise "There was an error running the timedatectl command" if tz_shellout.error?
90
+
91
+ # https://rubular.com/r/eV68MX9XXbyG4k
92
+ /Time zone: (.*) \(.*/.match(tz_shellout.stdout)[1]
93
+ end
94
+
95
+ # detect the current timezone on non-systemd RHEL-ish hosts
96
+ #
97
+ # @since 16.5
98
+ # @return [String] timezone id
99
+ def current_rhel_tz
100
+ return nil unless ::File.exist?("/etc/sysconfig/clock")
101
+
102
+ # https://rubular.com/r/aoj01L3bKBM7wh
103
+ /ZONE="(.*)"/.match(::File.read("/etc/sysconfig/clock"))[1]
104
+ end
105
+
106
+ load_current_value do
107
+ if systemd?
108
+ timezone current_systemd_tz
73
109
  else
74
110
  case node["platform_family"]
75
111
  # Old version of RHEL < 7 and Amazon 201X
76
112
  when "rhel", "amazon"
77
- file "/etc/sysconfig/clock" do
78
- owner "root"
79
- group "root"
80
- mode "0644"
81
- action :create
82
- content %{ZONE="#{new_resource.timezone}"\nUTC="true"\n}
83
- end
84
-
85
- execute "tzdata-update" do
86
- command "/usr/sbin/tzdata-update"
87
- action :nothing
88
- only_if { ::File.executable?("/usr/sbin/tzdata-update") }
89
- subscribes :run, "file[/etc/sysconfig/clock]", :immediately
90
- end
91
-
92
- link "/etc/localtime" do
93
- to "/usr/share/zoneinfo/#{new_resource.timezone}"
94
- not_if { ::File.executable?("/usr/sbin/tzdata-update") }
95
- end
113
+ timezone current_rhel_tz
96
114
  when "mac_os_x"
97
- unless current_darwin_tz == new_resource.timezone
98
- converge_by("set timezone to #{new_resource.timezone}") do
99
- shell_out!("sudo systemsetup -settimezone #{new_resource.timezone}")
100
- end
101
- end
115
+ timezone current_macos_tz
102
116
  when "windows"
103
- unless current_windows_tz.casecmp?(new_resource.timezone)
104
- converge_by("setting timezone to \"#{new_resource.timezone}\"") do
105
- shell_out!("tzutil /s \"#{new_resource.timezone}\"")
106
- end
107
- end
117
+ timezone current_windows_tz
108
118
  end
109
119
  end
110
120
  end
111
121
 
112
- action_class do
113
- # detect the current TZ on darwin hosts
114
- #
115
- # @since 14.7
116
- # @return [String] TZ database value
117
- def current_darwin_tz
118
- tz_shellout = shell_out!("systemsetup -gettimezone")
119
- if /You need administrator access/.match?(tz_shellout.stdout)
120
- raise "The timezone resource requires administrative privileges to run on macOS hosts!"
121
- else
122
- /Time Zone: (.*)/.match(tz_shellout.stdout)[1]
123
- end
124
- end
125
-
126
- # detect the current timezone on windows hosts
127
- #
128
- # @since 14.7
129
- # @return [String] timezone id
130
- def current_windows_tz
131
- tz_shellout = shell_out("tzutil /g")
132
- raise "There was an error running the tzutil command" if tz_shellout.exitstatus == 1
122
+ action :set do
123
+ description "Set the timezone."
133
124
 
134
- tz_shellout.stdout.strip
125
+ # we have to check windows first since the value isn't case sensitive here
126
+ if windows?
127
+ unless current_windows_tz.casecmp?(new_resource.timezone)
128
+ converge_by("setting timezone to '#{new_resource.timezone}'") do
129
+ shell_out!(["tzutil", "/s", new_resource.timezone])
130
+ end
131
+ end
132
+ else # linux / macos
133
+ converge_if_changed(:timezone) do
134
+ # Modern SUSE, Amazon, Fedora, RHEL, Ubuntu & Debian
135
+ if systemd?
136
+ # make sure we have the tzdata files
137
+ package suse? ? "timezone" : "tzdata"
138
+
139
+ shell_out!(["/usr/bin/timedatectl", "--no-ask-password", "set-timezone", new_resource.timezone])
140
+ else
141
+ case node["platform_family"]
142
+ # Old version of RHEL < 7 and Amazon 201X
143
+ when "rhel", "amazon"
144
+ # make sure we have the tzdata files
145
+ package "tzdata"
146
+
147
+ file "/etc/sysconfig/clock" do
148
+ owner "root"
149
+ group "root"
150
+ mode "0644"
151
+ action :create
152
+ content <<~CONTENT
153
+ ZONE="#{new_resource.timezone}"
154
+ UTC="true"
155
+ CONTENT
156
+ end
157
+
158
+ execute "tzdata-update" do
159
+ command "/usr/sbin/tzdata-update"
160
+ action :nothing
161
+ only_if { ::File.executable?("/usr/sbin/tzdata-update") }
162
+ subscribes :run, "file[/etc/sysconfig/clock]", :immediately
163
+ end
164
+
165
+ link "/etc/localtime" do
166
+ to "/usr/share/zoneinfo/#{new_resource.timezone}"
167
+ not_if { ::File.executable?("/usr/sbin/tzdata-update") }
168
+ end
169
+ when "mac_os_x"
170
+ shell_out!(["sudo", "systemsetup", "-settimezone", new_resource.timezone])
171
+ end
172
+ end
173
+ end
135
174
  end
136
175
  end
137
176
  end
@@ -80,7 +80,7 @@ class Chef
80
80
 
81
81
  action :create do
82
82
  template "/etc/security/limits.d/#{new_resource.filename}" do
83
- source ::File.expand_path("../support/ulimit.erb", __FILE__)
83
+ source ::File.expand_path("support/ulimit.erb", __dir__)
84
84
  local true
85
85
  mode "0644"
86
86
  variables(
@@ -23,6 +23,8 @@ class Chef
23
23
  class WindowsAdJoin < Chef::Resource
24
24
  provides :windows_ad_join
25
25
 
26
+ unified_mode true
27
+
26
28
  description "Use the **windows_ad_join** resource to join a Windows Active Directory domain."
27
29
  introduced "14.0"
28
30
  examples <<~DOC
@@ -82,6 +82,9 @@ class Chef
82
82
  "User / Device Claims",
83
83
  "User Account Management",
84
84
  ].freeze
85
+
86
+ unified_mode true
87
+
85
88
  provides :windows_audit_policy
86
89
 
87
90
  description "Use the **windows_audit_policy** resource to configure system level and per-user Windows advanced audit policy settings."
@@ -21,6 +21,8 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsAutorun < Chef::Resource
24
+ unified_mode true
25
+
24
26
  provides(:windows_auto_run) { true }
25
27
 
26
28
  description "Use the **windows_auto_run** resource to set applications to run at login."
@@ -26,6 +26,8 @@ require_relative "../dist"
26
26
  class Chef
27
27
  class Resource
28
28
  class WindowsCertificate < Chef::Resource
29
+ unified_mode true
30
+
29
31
  provides :windows_certificate
30
32
 
31
33
  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."
@@ -21,6 +21,8 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDfsFolder < Chef::Resource
24
+ unified_mode true
25
+
24
26
  provides :windows_dfs_folder
25
27
 
26
28
  description "Use the **windows_dfs_folder** resource to creates a folder within DFS as many levels deep as required."
@@ -21,6 +21,8 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDfsNamespace < Chef::Resource
24
+ unified_mode true
25
+
24
26
  provides :windows_dfs_namespace
25
27
 
26
28
  description "Use the **windows_dfs_namespace** resource to creates a share and DFS namespace on a Windows server."
@@ -21,6 +21,8 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDfsServer < Chef::Resource
24
+ unified_mode true
25
+
24
26
  provides :windows_dfs_server
25
27
 
26
28
  description "Use the **windows_dfs_server** resource to set system-wide DFS settings."
@@ -21,6 +21,8 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDnsRecord < Chef::Resource
24
+ unified_mode true
25
+
24
26
  provides :windows_dns_record
25
27
 
26
28
  description "The windows_dns_record resource creates a DNS record for the given domain."
@@ -42,23 +44,40 @@ class Chef
42
44
  description: "The type of record to create, can be either ARecord, CNAME or PTR.",
43
45
  default: "ARecord", equal_to: %w{ARecord CNAME PTR}
44
46
 
47
+ property :dns_server, String,
48
+ description: "The name of the DNS server on which to create the record.",
49
+ default: "localhost",
50
+ introduced: "16.3"
51
+
45
52
  action :create do
46
53
  description "Creates and updates the DNS entry."
47
54
 
48
- powershell_package "xDnsServer" do
55
+ windows_feature "RSAT-DNS-Server" do
56
+ not_if new_resource.dns_server.casecmp?("localhost")
49
57
  end
50
- do_it "Present"
58
+
59
+ powershell_package "xDnsServer"
60
+
61
+ run_dsc_resource "Present"
51
62
  end
52
63
 
53
64
  action :delete do
54
65
  description "Deletes a DNS entry."
55
- powershell_package "xDnsServer" do
66
+
67
+ windows_feature "RSAT-DNS-Server" do
68
+ not_if new_resource.dns_server.casecmp?("localhost")
56
69
  end
57
- do_it "Absent"
70
+
71
+ powershell_package "xDnsServer"
72
+
73
+ run_dsc_resource "Absent"
58
74
  end
59
75
 
60
76
  action_class do
61
- def do_it(ensure_prop)
77
+ private
78
+
79
+ # @api private
80
+ def run_dsc_resource(ensure_prop)
62
81
  dsc_resource "xDnsRecord #{new_resource.record_name}.#{new_resource.zone} #{ensure_prop}" do
63
82
  module_name "xDnsServer"
64
83
  resource :xDnsRecord
@@ -67,6 +86,7 @@ class Chef
67
86
  property :Zone, new_resource.zone
68
87
  property :Type, new_resource.record_type
69
88
  property :Target, new_resource.target
89
+ property :DnsServer, new_resource.dns_server
70
90
  end
71
91
  end
72
92
  end