chef 17.10.0 → 18.0.169

Sign up to get free protection for your applications and to get access to all the features.
Files changed (304) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +16 -8
  3. data/README.md +7 -7
  4. data/Rakefile +5 -24
  5. data/{chef-universal-mingw32.gemspec → chef-universal-mingw-ucrt.gemspec} +7 -6
  6. data/chef.gemspec +13 -6
  7. data/lib/chef/api_client_v1.rb +9 -1
  8. data/lib/chef/application/exit_code.rb +3 -3
  9. data/lib/chef/client.rb +167 -0
  10. data/lib/chef/compliance/input.rb +1 -1
  11. data/lib/chef/compliance/input_collection.rb +1 -1
  12. data/lib/chef/compliance/profile.rb +1 -1
  13. data/lib/chef/compliance/profile_collection.rb +1 -2
  14. data/lib/chef/compliance/waiver.rb +1 -1
  15. data/lib/chef/compliance/waiver_collection.rb +1 -1
  16. data/lib/chef/cookbook/syntax_check.rb +2 -2
  17. data/lib/chef/dsl/reader_helpers.rb +1 -1
  18. data/lib/chef/dsl/rest_resource.rb +77 -0
  19. data/lib/chef/dsl/secret.rb +113 -5
  20. data/lib/chef/event_dispatch/base.rb +3 -0
  21. data/lib/chef/exceptions.rb +8 -0
  22. data/lib/chef/http/authenticator.rb +170 -3
  23. data/lib/chef/http/ssl_policies.rb +3 -3
  24. data/lib/chef/mixin/powershell_exec.rb +5 -28
  25. data/lib/chef/mixin/properties.rb +6 -0
  26. data/lib/chef/node/attribute.rb +20 -3
  27. data/lib/chef/node/mixin/deep_merge_cache.rb +4 -4
  28. data/lib/chef/node/mixin/immutablize_array.rb +1 -0
  29. data/lib/chef/property.rb +5 -3
  30. data/lib/chef/provider/group/windows.rb +1 -1
  31. data/lib/chef/provider/http_request.rb +11 -9
  32. data/lib/chef/provider/mount/linux.rb +5 -0
  33. data/lib/chef/provider/mount/mount.rb +8 -0
  34. data/lib/chef/provider/mount/windows.rb +1 -1
  35. data/lib/chef/provider/package/powershell.rb +1 -1
  36. data/lib/chef/provider/package/rubygems.rb +1 -1
  37. data/lib/chef/provider/package/windows/msi.rb +2 -2
  38. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  39. data/lib/chef/provider/package/zypper/version.rb +60 -0
  40. data/lib/chef/provider/package/zypper.rb +47 -3
  41. data/lib/chef/provider/service/windows.rb +1 -1
  42. data/lib/chef/provider/user/aix.rb +5 -0
  43. data/lib/chef/provider/user/linux.rb +29 -0
  44. data/lib/chef/provider/user/mac.rb +1 -1
  45. data/lib/chef/provider/user.rb +45 -9
  46. data/lib/chef/provider.rb +1 -1
  47. data/lib/chef/recipe.rb +1 -1
  48. data/lib/chef/resource/_rest_resource.rb +389 -0
  49. data/lib/chef/resource/alternatives.rb +0 -1
  50. data/lib/chef/resource/apt_package.rb +0 -1
  51. data/lib/chef/resource/apt_preference.rb +0 -1
  52. data/lib/chef/resource/apt_repository.rb +0 -1
  53. data/lib/chef/resource/apt_update.rb +0 -1
  54. data/lib/chef/resource/archive_file.rb +0 -1
  55. data/lib/chef/resource/bash.rb +0 -1
  56. data/lib/chef/resource/batch.rb +0 -1
  57. data/lib/chef/resource/bff_package.rb +0 -1
  58. data/lib/chef/resource/breakpoint.rb +0 -1
  59. data/lib/chef/resource/build_essential.rb +0 -1
  60. data/lib/chef/resource/cab_package.rb +0 -1
  61. data/lib/chef/resource/chef_client_config.rb +17 -14
  62. data/lib/chef/resource/chef_client_cron.rb +1 -2
  63. data/lib/chef/resource/chef_client_launchd.rb +2 -2
  64. data/lib/chef/resource/chef_client_scheduled_task.rb +3 -3
  65. data/lib/chef/resource/chef_client_systemd_timer.rb +0 -1
  66. data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
  67. data/lib/chef/resource/chef_gem.rb +0 -1
  68. data/lib/chef/resource/chef_handler.rb +0 -1
  69. data/lib/chef/resource/chef_sleep.rb +1 -3
  70. data/lib/chef/resource/chef_vault_secret.rb +0 -1
  71. data/lib/chef/resource/chocolatey_config.rb +0 -1
  72. data/lib/chef/resource/chocolatey_feature.rb +0 -1
  73. data/lib/chef/resource/chocolatey_package.rb +0 -1
  74. data/lib/chef/resource/chocolatey_source.rb +0 -1
  75. data/lib/chef/resource/cookbook_file.rb +0 -1
  76. data/lib/chef/resource/cron/_cron_shared.rb +0 -1
  77. data/lib/chef/resource/cron/cron.rb +0 -1
  78. data/lib/chef/resource/cron/cron_d.rb +15 -1
  79. data/lib/chef/resource/cron_access.rb +0 -1
  80. data/lib/chef/resource/csh.rb +0 -1
  81. data/lib/chef/resource/directory.rb +0 -1
  82. data/lib/chef/resource/dmg_package.rb +0 -1
  83. data/lib/chef/resource/dnf_package.rb +0 -1
  84. data/lib/chef/resource/dpkg_package.rb +0 -1
  85. data/lib/chef/resource/dsc_resource.rb +0 -1
  86. data/lib/chef/resource/dsc_script.rb +0 -1
  87. data/lib/chef/resource/execute.rb +0 -1
  88. data/lib/chef/resource/file.rb +0 -1
  89. data/lib/chef/resource/freebsd_package.rb +0 -1
  90. data/lib/chef/resource/gem_package.rb +0 -1
  91. data/lib/chef/resource/group.rb +25 -2
  92. data/lib/chef/resource/habitat/habitat_package.rb +0 -1
  93. data/lib/chef/resource/habitat/habitat_sup.rb +6 -7
  94. data/lib/chef/resource/habitat/habitat_sup_windows.rb +1 -1
  95. data/lib/chef/resource/habitat_config.rb +0 -1
  96. data/lib/chef/resource/habitat_install.rb +0 -1
  97. data/lib/chef/resource/habitat_service.rb +0 -1
  98. data/lib/chef/resource/habitat_user_toml.rb +0 -1
  99. data/lib/chef/resource/homebrew_cask.rb +0 -1
  100. data/lib/chef/resource/homebrew_package.rb +0 -1
  101. data/lib/chef/resource/homebrew_tap.rb +0 -1
  102. data/lib/chef/resource/homebrew_update.rb +0 -2
  103. data/lib/chef/resource/hostname.rb +0 -1
  104. data/lib/chef/resource/http_request.rb +0 -1
  105. data/lib/chef/resource/ifconfig.rb +0 -1
  106. data/lib/chef/resource/inspec_input.rb +0 -1
  107. data/lib/chef/resource/inspec_waiver.rb +0 -1
  108. data/lib/chef/resource/inspec_waiver_file_entry.rb +2 -3
  109. data/lib/chef/resource/ips_package.rb +0 -1
  110. data/lib/chef/resource/kernel_module.rb +0 -1
  111. data/lib/chef/resource/ksh.rb +0 -1
  112. data/lib/chef/resource/launchd.rb +0 -1
  113. data/lib/chef/resource/link.rb +0 -1
  114. data/lib/chef/resource/locale.rb +1 -2
  115. data/lib/chef/resource/log.rb +0 -1
  116. data/lib/chef/resource/lwrp_base.rb +0 -4
  117. data/lib/chef/resource/macos_userdefaults.rb +0 -1
  118. data/lib/chef/resource/macosx_service.rb +0 -1
  119. data/lib/chef/resource/macports_package.rb +0 -1
  120. data/lib/chef/resource/mdadm.rb +0 -1
  121. data/lib/chef/resource/mount.rb +0 -1
  122. data/lib/chef/resource/msu_package.rb +0 -1
  123. data/lib/chef/resource/notify_group.rb +0 -2
  124. data/lib/chef/resource/ohai.rb +0 -1
  125. data/lib/chef/resource/ohai_hint.rb +0 -1
  126. data/lib/chef/resource/openbsd_package.rb +0 -1
  127. data/lib/chef/resource/openssl_dhparam.rb +0 -2
  128. data/lib/chef/resource/openssl_ec_private_key.rb +0 -2
  129. data/lib/chef/resource/openssl_ec_public_key.rb +0 -2
  130. data/lib/chef/resource/openssl_rsa_private_key.rb +0 -2
  131. data/lib/chef/resource/openssl_rsa_public_key.rb +0 -2
  132. data/lib/chef/resource/openssl_x509_certificate.rb +0 -2
  133. data/lib/chef/resource/openssl_x509_crl.rb +0 -2
  134. data/lib/chef/resource/openssl_x509_request.rb +0 -2
  135. data/lib/chef/resource/osx_profile.rb +0 -1
  136. data/lib/chef/resource/package.rb +0 -1
  137. data/lib/chef/resource/pacman_package.rb +0 -1
  138. data/lib/chef/resource/paludis_package.rb +0 -1
  139. data/lib/chef/resource/perl.rb +0 -1
  140. data/lib/chef/resource/plist.rb +7 -3
  141. data/lib/chef/resource/portage_package.rb +0 -1
  142. data/lib/chef/resource/powershell_package.rb +0 -1
  143. data/lib/chef/resource/powershell_package_source.rb +0 -1
  144. data/lib/chef/resource/powershell_script.rb +0 -1
  145. data/lib/chef/resource/python.rb +0 -1
  146. data/lib/chef/resource/reboot.rb +0 -1
  147. data/lib/chef/resource/registry_key.rb +0 -1
  148. data/lib/chef/resource/remote_directory.rb +0 -1
  149. data/lib/chef/resource/remote_file.rb +0 -1
  150. data/lib/chef/resource/rhsm_errata.rb +0 -1
  151. data/lib/chef/resource/rhsm_errata_level.rb +0 -1
  152. data/lib/chef/resource/rhsm_register.rb +17 -1
  153. data/lib/chef/resource/rhsm_repo.rb +0 -1
  154. data/lib/chef/resource/rhsm_subscription.rb +0 -1
  155. data/lib/chef/resource/route.rb +0 -1
  156. data/lib/chef/resource/rpm_package.rb +0 -1
  157. data/lib/chef/resource/ruby.rb +0 -1
  158. data/lib/chef/resource/ruby_block.rb +0 -1
  159. data/lib/chef/resource/scm/_scm.rb +0 -2
  160. data/lib/chef/resource/scm/git.rb +0 -2
  161. data/lib/chef/resource/scm/subversion.rb +0 -2
  162. data/lib/chef/resource/script.rb +0 -1
  163. data/lib/chef/resource/selinux/common_helpers.rb +47 -0
  164. data/lib/chef/resource/selinux/selinux_debian.erb +18 -0
  165. data/lib/chef/resource/selinux/selinux_default.erb +15 -0
  166. data/lib/chef/resource/selinux_boolean.rb +101 -0
  167. data/lib/chef/resource/selinux_fcontext.rb +160 -0
  168. data/lib/chef/resource/selinux_install.rb +107 -0
  169. data/lib/chef/resource/selinux_module.rb +143 -0
  170. data/lib/chef/resource/selinux_permissive.rb +64 -0
  171. data/lib/chef/resource/selinux_port.rb +118 -0
  172. data/lib/chef/resource/selinux_state.rb +166 -0
  173. data/lib/chef/resource/service.rb +0 -1
  174. data/lib/chef/resource/smartos_package.rb +0 -1
  175. data/lib/chef/resource/snap_package.rb +0 -1
  176. data/lib/chef/resource/solaris_package.rb +0 -1
  177. data/lib/chef/resource/ssh_known_hosts_entry.rb +0 -1
  178. data/lib/chef/resource/sudo.rb +0 -1
  179. data/lib/chef/resource/support/client.erb +3 -4
  180. data/lib/chef/resource/swap_file.rb +0 -1
  181. data/lib/chef/resource/sysctl.rb +1 -2
  182. data/lib/chef/resource/systemd_unit.rb +0 -1
  183. data/lib/chef/resource/template.rb +0 -1
  184. data/lib/chef/resource/timezone.rb +0 -1
  185. data/lib/chef/resource/user/aix_user.rb +0 -1
  186. data/lib/chef/resource/user/linux_user.rb +0 -1
  187. data/lib/chef/resource/user/mac_user.rb +0 -1
  188. data/lib/chef/resource/user/pw_user.rb +0 -1
  189. data/lib/chef/resource/user/solaris_user.rb +0 -1
  190. data/lib/chef/resource/user/windows_user.rb +0 -1
  191. data/lib/chef/resource/user.rb +10 -1
  192. data/lib/chef/resource/user_ulimit.rb +0 -1
  193. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
  194. data/lib/chef/resource/windows_ad_join.rb +0 -2
  195. data/lib/chef/resource/windows_audit_policy.rb +0 -2
  196. data/lib/chef/resource/windows_auto_run.rb +0 -1
  197. data/lib/chef/resource/windows_certificate.rb +54 -43
  198. data/lib/chef/resource/windows_defender.rb +0 -1
  199. data/lib/chef/resource/windows_defender_exclusion.rb +0 -1
  200. data/lib/chef/resource/windows_dfs_folder.rb +0 -1
  201. data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
  202. data/lib/chef/resource/windows_dfs_server.rb +0 -1
  203. data/lib/chef/resource/windows_dns_record.rb +0 -1
  204. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  205. data/lib/chef/resource/windows_env.rb +0 -1
  206. data/lib/chef/resource/windows_feature.rb +0 -1
  207. data/lib/chef/resource/windows_feature_dism.rb +0 -1
  208. data/lib/chef/resource/windows_feature_powershell.rb +0 -1
  209. data/lib/chef/resource/windows_firewall_profile.rb +0 -2
  210. data/lib/chef/resource/windows_firewall_rule.rb +0 -1
  211. data/lib/chef/resource/windows_font.rb +2 -3
  212. data/lib/chef/resource/windows_package.rb +0 -1
  213. data/lib/chef/resource/windows_pagefile.rb +27 -22
  214. data/lib/chef/resource/windows_path.rb +0 -1
  215. data/lib/chef/resource/windows_printer.rb +0 -1
  216. data/lib/chef/resource/windows_printer_port.rb +0 -1
  217. data/lib/chef/resource/windows_script.rb +0 -2
  218. data/lib/chef/resource/windows_security_policy.rb +0 -1
  219. data/lib/chef/resource/windows_service.rb +0 -1
  220. data/lib/chef/resource/windows_share.rb +0 -1
  221. data/lib/chef/resource/windows_shortcut.rb +1 -2
  222. data/lib/chef/resource/windows_task.rb +0 -1
  223. data/lib/chef/resource/windows_uac.rb +0 -1
  224. data/lib/chef/resource/windows_update_settings.rb +0 -1
  225. data/lib/chef/resource/windows_user_privilege.rb +36 -27
  226. data/lib/chef/resource/windows_workgroup.rb +0 -1
  227. data/lib/chef/resource/yum_package.rb +0 -1
  228. data/lib/chef/resource/yum_repository.rb +0 -1
  229. data/lib/chef/resource/zypper_package.rb +0 -1
  230. data/lib/chef/resource/zypper_repository.rb +0 -1
  231. data/lib/chef/resource.rb +13 -5
  232. data/lib/chef/resources.rb +7 -0
  233. data/lib/chef/run_context.rb +19 -3
  234. data/lib/chef/secret_fetcher/azure_key_vault.rb +3 -3
  235. data/lib/chef/secret_fetcher/hashi_vault.rb +1 -1
  236. data/lib/chef/version.rb +1 -1
  237. data/lib/chef/win32/handle.rb +6 -7
  238. data/lib/chef/win32/registry.rb +7 -3
  239. data/lib/chef/win32/version.rb +2 -1
  240. data/spec/data/rubygems.org/sexp_processor-info +2 -1
  241. data/spec/functional/resource/dsc_script_spec.rb +1 -1
  242. data/spec/functional/resource/group_spec.rb +10 -6
  243. data/spec/functional/resource/link_spec.rb +8 -8
  244. data/spec/functional/resource/plist_spec.rb +25 -0
  245. data/spec/functional/resource/user/linux_user_spec.rb +127 -0
  246. data/spec/functional/resource/windows_certificate_spec.rb +15 -12
  247. data/spec/functional/resource/windows_font_spec.rb +11 -8
  248. data/spec/functional/resource/windows_pagefile_spec.rb +31 -4
  249. data/spec/functional/resource/zypper_package_spec.rb +12 -0
  250. data/spec/functional/shell_spec.rb +7 -2
  251. data/spec/functional/version_spec.rb +1 -1
  252. data/spec/integration/client/client_spec.rb +82 -3
  253. data/spec/integration/client/exit_code_spec.rb +1 -1
  254. data/spec/integration/client/ipv6_spec.rb +1 -1
  255. data/spec/integration/compliance/compliance_spec.rb +1 -1
  256. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  257. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  258. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  259. data/spec/integration/recipes/notifies_spec.rb +1 -1
  260. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  261. data/spec/integration/recipes/remote_directory.rb +1 -1
  262. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  263. data/spec/integration/recipes/use_partial_spec.rb +2 -1
  264. data/spec/integration/solo/solo_spec.rb +2 -2
  265. data/spec/spec_helper.rb +1 -0
  266. data/spec/support/platform_helpers.rb +4 -0
  267. data/spec/support/ruby_installer.rb +1 -1
  268. data/spec/support/shared/functional/windows_script.rb +2 -2
  269. data/spec/unit/application/client_spec.rb +0 -10
  270. data/spec/unit/client_spec.rb +54 -2
  271. data/spec/unit/cookbook/syntax_check_spec.rb +3 -0
  272. data/spec/unit/daemon_spec.rb +1 -5
  273. data/spec/unit/dsl/secret_spec.rb +127 -23
  274. data/spec/unit/http/authenticator_spec.rb +68 -0
  275. data/spec/unit/mixin/powershell_exec_spec.rb +5 -5
  276. data/spec/unit/platform/query_helpers_spec.rb +2 -17
  277. data/spec/unit/provider/http_request_spec.rb +60 -72
  278. data/spec/unit/provider/mount/linux_spec.rb +10 -0
  279. data/spec/unit/provider/package/rubygems_spec.rb +2 -2
  280. data/spec/unit/provider/package/zypper_spec.rb +32 -0
  281. data/spec/unit/provider/user/linux_spec.rb +96 -1
  282. data/spec/unit/provider/user_spec.rb +24 -6
  283. data/spec/unit/resource/archive_file_spec.rb +1 -1
  284. data/spec/unit/resource/chef_client_config_spec.rb +8 -0
  285. data/spec/unit/resource/chef_client_cron_spec.rb +5 -0
  286. data/spec/unit/resource/chef_client_launchd_spec.rb +5 -0
  287. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +5 -0
  288. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
  289. data/spec/unit/resource/cron_d_spec.rb +37 -1
  290. data/spec/unit/resource/rest_resource_spec.rb +381 -0
  291. data/spec/unit/resource/selinux_boolean_spec.rb +92 -0
  292. data/spec/unit/resource/selinux_fcontext_spec.rb +65 -0
  293. data/spec/unit/resource/selinux_install_spec.rb +60 -0
  294. data/spec/unit/resource/selinux_module_spec.rb +55 -0
  295. data/spec/unit/resource/selinux_permissive_spec.rb +39 -0
  296. data/spec/unit/resource/selinux_port_spec.rb +42 -0
  297. data/spec/unit/resource/selinux_state_spec.rb +46 -0
  298. data/spec/unit/resource/sysctl_spec.rb +2 -2
  299. data/spec/unit/resource/user/linux_user_spec.rb +42 -0
  300. data/spec/unit/resource_spec.rb +21 -1
  301. data/spec/unit/run_context_spec.rb +16 -0
  302. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +1 -1
  303. data/tasks/rspec.rb +1 -1
  304. metadata +85 -19
@@ -25,7 +25,6 @@ require_relative "../provider/package/openbsd"
25
25
  class Chef
26
26
  class Resource
27
27
  class OpenbsdPackage < Chef::Resource::Package
28
- unified_mode true
29
28
  provides :openbsd_package
30
29
  provides :package, os: "openbsd"
31
30
 
@@ -23,8 +23,6 @@ class Chef
23
23
  require_relative "../mixin/openssl_helper"
24
24
  include Chef::Mixin::OpenSSLHelper
25
25
 
26
- unified_mode true
27
-
28
26
  provides(:openssl_dhparam) { true }
29
27
 
30
28
  description "Use the **openssl_dhparam** resource to generate `dhparam.pem` files. If a valid `dhparam.pem` file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid `dhparam.pem` file, it will be overwritten."
@@ -24,8 +24,6 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
- unified_mode true
28
-
29
27
  provides :openssl_ec_private_key
30
28
 
31
29
  description "Use the **openssl_ec_private_key** resource to generate an elliptic curve (EC) private key file. If a valid EC key file can be opened at the specified location, no new file will be created. If the EC key file cannot be opened, either because it does not exist or because the password to the EC key file does not match the password in the recipe, then it will be overwritten."
@@ -24,8 +24,6 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
- unified_mode true
28
-
29
27
  provides :openssl_ec_public_key
30
28
 
31
29
  description "Use the **openssl_ec_public_key** resource to generate elliptic curve (EC) public key files from a given EC private key."
@@ -23,8 +23,6 @@ class Chef
23
23
  require_relative "../mixin/openssl_helper"
24
24
  include Chef::Mixin::OpenSSLHelper
25
25
 
26
- unified_mode true
27
-
28
26
  provides(:openssl_rsa_private_key) { true }
29
27
  provides(:openssl_rsa_key) { true } # legacy cookbook resource name
30
28
 
@@ -23,8 +23,6 @@ class Chef
23
23
  require_relative "../mixin/openssl_helper"
24
24
  include Chef::Mixin::OpenSSLHelper
25
25
 
26
- unified_mode true
27
-
28
26
  provides(:openssl_rsa_public_key) { true }
29
27
 
30
28
  examples <<~DOC
@@ -24,8 +24,6 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
- unified_mode true
28
-
29
27
  provides :openssl_x509_certificate
30
28
  provides(:openssl_x509) { true } # legacy cookbook name.
31
29
 
@@ -24,8 +24,6 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
- unified_mode true
28
-
29
27
  provides :openssl_x509_crl
30
28
 
31
29
  description "Use the **openssl_x509_crl** resource to generate PEM-formatted x509 certificate revocation list (CRL) files."
@@ -24,8 +24,6 @@ class Chef
24
24
  require_relative "../mixin/openssl_helper"
25
25
  include Chef::Mixin::OpenSSLHelper
26
26
 
27
- unified_mode true
28
-
29
27
  provides :openssl_x509_request
30
28
 
31
29
  description "Use the **openssl_x509_request** resource to generate PEM-formatted x509 certificates requests. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate."
@@ -25,7 +25,6 @@ autoload :Plist, "plist"
25
25
  class Chef
26
26
  class Resource
27
27
  class OsxProfile < Chef::Resource
28
- unified_mode true
29
28
 
30
29
  provides :osx_profile
31
30
  provides :osx_config_profile
@@ -22,7 +22,6 @@ require_relative "../resource"
22
22
  class Chef
23
23
  class Resource
24
24
  class Package < Chef::Resource
25
- unified_mode true
26
25
  provides :package
27
26
 
28
27
  description "Use the **package** resource to manage packages. When the package is"\
@@ -21,7 +21,6 @@ require_relative "package"
21
21
  class Chef
22
22
  class Resource
23
23
  class PacmanPackage < Chef::Resource::Package
24
- unified_mode true
25
24
 
26
25
  provides :pacman_package
27
26
 
@@ -22,7 +22,6 @@ require_relative "../provider/package/paludis"
22
22
  class Chef
23
23
  class Resource
24
24
  class PaludisPackage < Chef::Resource::Package
25
- unified_mode true
26
25
 
27
26
  provides :paludis_package
28
27
 
@@ -21,7 +21,6 @@ require_relative "script"
21
21
  class Chef
22
22
  class Resource
23
23
  class Perl < Chef::Resource::Script
24
- unified_mode true
25
24
 
26
25
  provides :perl
27
26
 
@@ -22,7 +22,6 @@ class Chef
22
22
  class Resource
23
23
 
24
24
  class PlistResource < Chef::Resource # we name this PlistResource to avoid confusion with Plist from the plist gem
25
- unified_mode true
26
25
 
27
26
  provides :plist
28
27
 
@@ -85,7 +84,7 @@ class Chef
85
84
  converge_if_changed :path do
86
85
  converge_by "create new plist: '#{new_resource.path}'" do
87
86
  file new_resource.path do
88
- content {}.to_plist
87
+ content({}.to_plist)
89
88
  owner new_resource.owner
90
89
  group new_resource.group
91
90
  mode new_resource.mode if property_is_set?(:mode)
@@ -189,7 +188,12 @@ class Chef
189
188
  sep = " "
190
189
  arg = case subcommand.to_s
191
190
  when "add"
192
- type_to_commandline_string(value)
191
+ if value.is_a?(Hash)
192
+ sep = ":"
193
+ value.map { |k, v| "#{k} #{type_to_commandline_string(v)}" }
194
+ else
195
+ type_to_commandline_string(value)
196
+ end
193
197
  when "set"
194
198
  if value.is_a?(Hash)
195
199
  sep = ":"
@@ -21,7 +21,6 @@ require_relative "package"
21
21
  class Chef
22
22
  class Resource
23
23
  class PortagePackage < Chef::Resource::Package
24
- unified_mode true
25
24
 
26
25
  provides :portage_package
27
26
 
@@ -20,7 +20,6 @@ require_relative "package"
20
20
  class Chef
21
21
  class Resource
22
22
  class PowershellPackage < Chef::Resource::Package
23
- unified_mode true
24
23
 
25
24
  provides :powershell_package
26
25
 
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class PowershellPackageSource < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides :powershell_package_source
27
26
 
@@ -20,7 +20,6 @@ require_relative "windows_script"
20
20
  class Chef
21
21
  class Resource
22
22
  class PowershellScript < Chef::Resource::WindowsScript
23
- unified_mode true
24
23
 
25
24
  set_guard_inherited_attributes(:interpreter)
26
25
 
@@ -20,7 +20,6 @@ require_relative "script"
20
20
  class Chef
21
21
  class Resource
22
22
  class Python < Chef::Resource::Script
23
- unified_mode true
24
23
 
25
24
  provides :python
26
25
 
@@ -22,7 +22,6 @@ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
22
22
  class Chef
23
23
  class Resource
24
24
  class Reboot < Chef::Resource
25
- unified_mode true
26
25
 
27
26
  provides :reboot
28
27
 
@@ -23,7 +23,6 @@ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
23
23
  class Chef
24
24
  class Resource
25
25
  class RegistryKey < Chef::Resource
26
- unified_mode true
27
26
 
28
27
  provides(:registry_key) { true }
29
28
 
@@ -25,7 +25,6 @@ class Chef
25
25
  class Resource
26
26
  class RemoteDirectory < Chef::Resource::Directory
27
27
  include Chef::Mixin::Securable
28
- unified_mode true
29
28
 
30
29
  provides :remote_directory
31
30
 
@@ -28,7 +28,6 @@ class Chef
28
28
  class Resource
29
29
  class RemoteFile < Chef::Resource::File
30
30
  include Chef::Mixin::Securable
31
- unified_mode true
32
31
 
33
32
  provides :remote_file
34
33
 
@@ -20,7 +20,6 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class RhsmErrata < Chef::Resource
23
- unified_mode true
24
23
  provides(:rhsm_errata) { true }
25
24
 
26
25
  description "Use the **rhsm_errata** resource to install packages associated with a given Red Hat Subscription Manager Errata ID. This is helpful if packages to mitigate a single vulnerability must be installed on your hosts."
@@ -20,7 +20,6 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class RhsmErrataLevel < Chef::Resource
23
- unified_mode true
24
23
  provides(:rhsm_errata_level) { true }
25
24
 
26
25
  description "Use the **rhsm_errata_level** resource to install all packages of a specified errata level from the Red Hat Subscription Manager. For example, you can ensure that all packages associated with errata marked at a 'Critical' security level are installed."
@@ -22,7 +22,6 @@ require "shellwords" unless defined?(Shellwords)
22
22
  class Chef
23
23
  class Resource
24
24
  class RhsmRegister < Chef::Resource
25
- unified_mode true
26
25
  provides(:rhsm_register) { true }
27
26
 
28
27
  description "Use the **rhsm_register** resource to register a node with the Red Hat Subscription Manager or a local Red Hat Satellite server."
@@ -118,12 +117,17 @@ class Chef
118
117
  end
119
118
  end
120
119
 
120
+ package flush_package_cache_name do
121
+ action :nothing
122
+ end
123
+
121
124
  execute "Register to RHSM" do
122
125
  sensitive new_resource.sensitive
123
126
  command register_command
124
127
  default_env true
125
128
  action :run
126
129
  not_if { registered_with_rhsm? } unless new_resource.force
130
+ notifies :flush_cache, "package[#{flush_package_cache_name}]", :immediately
127
131
  end
128
132
 
129
133
  if new_resource.install_katello_agent && !new_resource.satellite_host.nil?
@@ -132,11 +136,16 @@ class Chef
132
136
  end
133
137
 
134
138
  action :unregister, description: "Unregister the node from RHSM." do
139
+ package flush_package_cache_name do
140
+ action :nothing
141
+ end
142
+
135
143
  execute "Unregister from RHSM" do
136
144
  command "subscription-manager unregister"
137
145
  default_env true
138
146
  action :run
139
147
  only_if { registered_with_rhsm? }
148
+ notifies :flush_cache, "package[#{flush_package_cache_name}]", :immediately
140
149
  notifies :run, "execute[Clean RHSM Config]", :immediately
141
150
  end
142
151
 
@@ -148,6 +157,13 @@ class Chef
148
157
  end
149
158
 
150
159
  action_class do
160
+ #
161
+ # @return [String]
162
+ #
163
+ def flush_package_cache_name
164
+ "rhsm_register-#{new_resource.name}-flush_cache"
165
+ end
166
+
151
167
  #
152
168
  # @return [Symbol] dnf_package or yum_package depending on OS release
153
169
  #
@@ -20,7 +20,6 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class RhsmRepo < Chef::Resource
23
- unified_mode true
24
23
 
25
24
  provides(:rhsm_repo) { true }
26
25
 
@@ -20,7 +20,6 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class RhsmSubscription < Chef::Resource
23
- unified_mode true
24
23
 
25
24
  provides(:rhsm_subscription) { true }
26
25
 
@@ -22,7 +22,6 @@ require_relative "../resource"
22
22
  class Chef
23
23
  class Resource
24
24
  class Route < Chef::Resource
25
- unified_mode true
26
25
 
27
26
  provides :route
28
27
 
@@ -21,7 +21,6 @@ require_relative "package"
21
21
  class Chef
22
22
  class Resource
23
23
  class RpmPackage < Chef::Resource::Package
24
- unified_mode true
25
24
 
26
25
  provides :rpm_package
27
26
 
@@ -21,7 +21,6 @@ require_relative "script"
21
21
  class Chef
22
22
  class Resource
23
23
  class Ruby < Chef::Resource::Script
24
- unified_mode true
25
24
 
26
25
  provides :ruby
27
26
 
@@ -24,7 +24,6 @@ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
24
24
  class Chef
25
25
  class Resource
26
26
  class RubyBlock < Chef::Resource
27
- unified_mode true
28
27
 
29
28
  provides :ruby_block, target_mode: true
30
29
 
@@ -16,8 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- unified_mode true
20
-
21
19
  default_action :sync
22
20
  allowed_actions :checkout, :export, :sync, :diff, :log
23
21
 
@@ -23,8 +23,6 @@ class Chef
23
23
  class Git < Chef::Resource
24
24
  use "scm"
25
25
 
26
- unified_mode true
27
-
28
26
  provides :git
29
27
 
30
28
  description "Use the **git** resource to manage source control resources that exist in a git repository. git version 1.6.5 (or higher) is required to use all of the functionality in the git resource."
@@ -24,8 +24,6 @@ class Chef
24
24
  class Subversion < Chef::Resource
25
25
  use "scm"
26
26
 
27
- unified_mode true
28
-
29
27
  provides :subversion
30
28
 
31
29
  description "Use the **subversion** resource to manage source control resources that exist in a Subversion repository. Warning: The subversion resource has known bugs and may not work as expected. For more information see Chef GitHub issues, particularly [#4050](https://github.com/chef/chef/issues/4050) and [#4257](https://github.com/chef/chef/issues/4257)."
@@ -22,7 +22,6 @@ require_relative "execute"
22
22
  class Chef
23
23
  class Resource
24
24
  class Script < Chef::Resource::Execute
25
- unified_mode true
26
25
 
27
26
  provides :script
28
27
 
@@ -0,0 +1,47 @@
1
+ #
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ #
14
+ class Chef
15
+ module SELinux
16
+ module CommonHelpers
17
+ def selinux_disabled?
18
+ selinux_state.eql?(:disabled)
19
+ end
20
+
21
+ def selinux_enforcing?
22
+ selinux_state.eql?(:enforcing)
23
+ end
24
+
25
+ def selinux_permissive?
26
+ selinux_state.eql?(:permissive)
27
+ end
28
+
29
+ def state_change_reboot_required?
30
+ (selinux_disabled? && %i{enforcing permissive}.include?(action)) || ((selinux_enforcing? || selinux_permissive?) && action == :disabled)
31
+ end
32
+
33
+ def selinux_state
34
+ state = shell_out!("getenforce").stdout.strip.downcase.to_sym
35
+ raise "Got unknown SELinux state #{state}" unless %i{disabled enforcing permissive}.include?(state)
36
+
37
+ state
38
+ end
39
+
40
+ def selinux_activate_required?
41
+ return false unless platform_family?("debian")
42
+
43
+ !File.read("/etc/default/grub").match?("security=selinux")
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,18 @@
1
+ # Generated by Chef for <%= node['fqdn'] %>
2
+ # Do NOT modify this file by hand.
3
+ #
4
+
5
+ # This file controls the state of SELinux on the system.
6
+ # SELINUX= can take one of these three values:
7
+ # enforcing - SELinux security policy is enforced.
8
+ # permissive - SELinux prints warnings instead of enforcing.
9
+ # disabled - No SELinux policy is loaded.
10
+ SELINUX=<%= @selinux %>
11
+ # SELINUXTYPE= can take one of these three values:
12
+ # default - equivalent to the old strict and targeted policies
13
+ # mls - Multi-Level Security (for military and educational use)
14
+ # src - Custom policy built from source
15
+ SELINUXTYPE=<%= @selinuxtype %>
16
+
17
+ # SETLOCALDEFS= Check local definition changes
18
+ SETLOCALDEFS=0
@@ -0,0 +1,15 @@
1
+ # Generated by Chef for <%= node['fqdn'] %>
2
+ # Do NOT modify this file by hand.
3
+ #
4
+
5
+ # This file controls the state of SELinux on the system.
6
+ # SELINUX= can take one of these three values:
7
+ # enforcing - SELinux security policy is enforced.
8
+ # permissive - SELinux prints warnings instead of enforcing.
9
+ # disabled - No SELinux policy is loaded.
10
+ SELINUX=<%= @selinux %>
11
+ # SELINUXTYPE= can take one of these three values:
12
+ # targeted - Targeted processes are protected,
13
+ # minimum - Modification of targeted policy. Only selected processes are protected.
14
+ # mls - Multi Level Security protection.
15
+ SELINUXTYPE=<%= @selinuxtype %>
@@ -0,0 +1,101 @@
1
+ #
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+ #
14
+
15
+ require_relative "../resource"
16
+ require_relative "selinux/common_helpers"
17
+
18
+ class Chef
19
+ class Resource
20
+ class SelinuxBoolean < Chef::Resource
21
+ unified_mode true
22
+
23
+ provides :selinux_boolean
24
+
25
+ description "Use **selinux_boolean** resource to set SELinux boolean values."
26
+ introduced "18.0"
27
+ examples <<~DOC
28
+ **Set ssh_keysign to true**:
29
+
30
+ ```ruby
31
+ selinux_boolean 'ssh_keysign' do
32
+ value true
33
+ end
34
+ ```
35
+
36
+ **Set ssh_sysadm_login to 'on'**:
37
+
38
+ ```ruby
39
+ selinux_boolean 'ssh_sysadm_login' do
40
+ value 'on'
41
+ end
42
+ ```
43
+ DOC
44
+
45
+ property :boolean, String,
46
+ name_property: true,
47
+ description: "SELinux boolean to set."
48
+
49
+ property :value, [Integer, String, true, false],
50
+ required: true,
51
+ equal_to: %w{on off},
52
+ coerce: proc { |p| selinux_bool(p) },
53
+ description: "SELinux boolean value."
54
+
55
+ property :persistent, [true, false],
56
+ default: true,
57
+ desired_state: false,
58
+ description: "Set to true for value setting to survive reboot."
59
+
60
+ load_current_value do |new_resource|
61
+ value shell_out!("getsebool", new_resource.boolean).stdout.split("-->").map(&:strip).last
62
+ end
63
+
64
+ action_class do
65
+ include Chef::SELinux::CommonHelpers
66
+ end
67
+
68
+ action :set , description: "Set the state of the boolean." do
69
+ if selinux_disabled?
70
+ Chef::Log.warn("Unable to set SELinux boolean #{new_resource.name} as SELinux is disabled")
71
+ return
72
+ end
73
+
74
+ converge_if_changed do
75
+ cmd = "setsebool"
76
+ cmd += " -P" if new_resource.persistent
77
+ cmd += " #{new_resource.boolean} #{new_resource.value}"
78
+
79
+ shell_out!(cmd)
80
+ end
81
+ end
82
+
83
+ private
84
+
85
+ #
86
+ # Validate and return input boolean value in required format
87
+ # @param bool [String, Integer, Boolean] Input boolean value in allowed formats
88
+ #
89
+ # @return [String] [description] Boolean value in required format
90
+ def selinux_bool(bool)
91
+ if ["on", "true", "1", true, 1].include?(bool)
92
+ "on"
93
+ elsif ["off", "false", "0", false, 0].include?(bool)
94
+ "off"
95
+ else
96
+ raise ArgumentError, "selinux_bool: Invalid selinux boolean value #{bool}"
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end