chef 17.10.95 → 18.1.0

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 (329) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +16 -8
  3. data/README.md +7 -7
  4. data/Rakefile +3 -22
  5. data/{chef-universal-mingw32.gemspec → chef-universal-mingw-ucrt.gemspec} +8 -7
  6. data/chef.gemspec +12 -5
  7. data/lib/chef/api_client_v1.rb +9 -1
  8. data/lib/chef/application/exit_code.rb +3 -3
  9. data/lib/chef/chef_fs/file_system.rb +21 -7
  10. data/lib/chef/client.rb +169 -17
  11. data/lib/chef/compliance/input.rb +1 -1
  12. data/lib/chef/compliance/profile.rb +1 -1
  13. data/lib/chef/compliance/profile_collection.rb +0 -1
  14. data/lib/chef/compliance/waiver.rb +1 -1
  15. data/lib/chef/cookbook/syntax_check.rb +2 -2
  16. data/lib/chef/dsl/reader_helpers.rb +1 -1
  17. data/lib/chef/dsl/rest_resource.rb +77 -0
  18. data/lib/chef/event_dispatch/base.rb +3 -0
  19. data/lib/chef/exceptions.rb +8 -0
  20. data/lib/chef/http/authenticator.rb +170 -3
  21. data/lib/chef/http/ssl_policies.rb +3 -3
  22. data/lib/chef/mixin/powershell_exec.rb +5 -28
  23. data/lib/chef/node/mixin/immutablize_array.rb +1 -0
  24. data/lib/chef/property.rb +13 -6
  25. data/lib/chef/provider/cron.rb +5 -1
  26. data/lib/chef/provider/group/windows.rb +1 -1
  27. data/lib/chef/provider/http_request.rb +11 -9
  28. data/lib/chef/provider/launchd.rb +1 -0
  29. data/lib/chef/provider/mount/linux.rb +5 -0
  30. data/lib/chef/provider/mount/mount.rb +8 -0
  31. data/lib/chef/provider/mount/windows.rb +1 -1
  32. data/lib/chef/provider/package/chocolatey.rb +1 -18
  33. data/lib/chef/provider/package/rubygems.rb +1 -1
  34. data/lib/chef/provider/package/snap.rb +1 -1
  35. data/lib/chef/provider/package/windows/msi.rb +2 -2
  36. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  37. data/lib/chef/provider/package/yum/yum_helper.py +5 -17
  38. data/lib/chef/provider/package/zypper/version.rb +60 -0
  39. data/lib/chef/provider/package/zypper.rb +47 -3
  40. data/lib/chef/provider/service/windows.rb +1 -1
  41. data/lib/chef/provider/user/aix.rb +5 -0
  42. data/lib/chef/provider/user/linux.rb +29 -0
  43. data/lib/chef/provider/user/mac.rb +1 -1
  44. data/lib/chef/provider/user.rb +46 -14
  45. data/lib/chef/provider/yum_repository.rb +13 -1
  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 +2 -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 +12 -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 +2 -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 +2 -1
  90. data/lib/chef/resource/gem_package.rb +2 -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 +2 -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 +3 -1
  113. data/lib/chef/resource/link.rb +0 -1
  114. data/lib/chef/resource/locale.rb +2 -6
  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 +8 -13
  118. data/lib/chef/resource/macosx_service.rb +0 -1
  119. data/lib/chef/resource/macports_package.rb +2 -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 +2 -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 +2 -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 +2 -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 +2 -4
  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 +2 -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 +2 -1
  175. data/lib/chef/resource/snap_package.rb +2 -1
  176. data/lib/chef/resource/solaris_package.rb +2 -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 +2 -2
  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_defender.rb +0 -1
  198. data/lib/chef/resource/windows_defender_exclusion.rb +0 -1
  199. data/lib/chef/resource/windows_dfs_folder.rb +0 -1
  200. data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
  201. data/lib/chef/resource/windows_dfs_server.rb +0 -1
  202. data/lib/chef/resource/windows_dns_record.rb +0 -1
  203. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  204. data/lib/chef/resource/windows_env.rb +0 -1
  205. data/lib/chef/resource/windows_feature.rb +0 -1
  206. data/lib/chef/resource/windows_feature_dism.rb +0 -1
  207. data/lib/chef/resource/windows_feature_powershell.rb +0 -1
  208. data/lib/chef/resource/windows_firewall_profile.rb +0 -2
  209. data/lib/chef/resource/windows_firewall_rule.rb +0 -1
  210. data/lib/chef/resource/windows_font.rb +2 -3
  211. data/lib/chef/resource/windows_package.rb +3 -4
  212. data/lib/chef/resource/windows_pagefile.rb +0 -2
  213. data/lib/chef/resource/windows_path.rb +0 -1
  214. data/lib/chef/resource/windows_printer.rb +0 -1
  215. data/lib/chef/resource/windows_printer_port.rb +0 -1
  216. data/lib/chef/resource/windows_script.rb +0 -2
  217. data/lib/chef/resource/windows_security_policy.rb +0 -1
  218. data/lib/chef/resource/windows_service.rb +0 -1
  219. data/lib/chef/resource/windows_share.rb +0 -1
  220. data/lib/chef/resource/windows_shortcut.rb +1 -2
  221. data/lib/chef/resource/windows_task.rb +0 -1
  222. data/lib/chef/resource/windows_uac.rb +0 -1
  223. data/lib/chef/resource/windows_update_settings.rb +0 -1
  224. data/lib/chef/resource/windows_user_privilege.rb +0 -1
  225. data/lib/chef/resource/windows_workgroup.rb +0 -1
  226. data/lib/chef/resource/yum_package.rb +2 -1
  227. data/lib/chef/resource/yum_repository.rb +4 -1
  228. data/lib/chef/resource/zypper_package.rb +2 -1
  229. data/lib/chef/resource/zypper_repository.rb +0 -1
  230. data/lib/chef/resource.rb +12 -5
  231. data/lib/chef/resources.rb +7 -0
  232. data/lib/chef/run_context.rb +3 -3
  233. data/lib/chef/secret_fetcher/azure_key_vault.rb +3 -3
  234. data/lib/chef/version.rb +1 -1
  235. data/lib/chef/win32/handle.rb +6 -7
  236. data/lib/chef/win32/registry.rb +7 -3
  237. data/spec/data/chef_guid +1 -0
  238. data/spec/data/nodes/mcwfhpowell.json +3 -0
  239. data/spec/data/rubygems.org/sexp_processor-info +2 -1
  240. data/spec/data/trusted_certs/example.crt +20 -29
  241. data/spec/data/trusted_certs/example_no_cn.crt +34 -30
  242. data/spec/data/trusted_certs/opscode.pem +54 -33
  243. data/spec/functional/assets/yumrepo-empty/repodata/01a3b489a465bcac22a43492163df43451dc6ce47d27f66de289756b91635523-filelists.sqlite.bz2 +0 -0
  244. data/spec/functional/assets/yumrepo-empty/repodata/401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz +0 -0
  245. data/spec/functional/assets/yumrepo-empty/repodata/5dc1e6e73c84803f059bb3065e684e56adfc289a7e398946574d79dac6643945-primary.sqlite.bz2 +0 -0
  246. data/spec/functional/assets/yumrepo-empty/repodata/6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz +0 -0
  247. data/spec/functional/assets/yumrepo-empty/repodata/7c36572015e075add2b38b900837bcdbb8a504130ddff49b2351a7fc0affa3d4-other.sqlite.bz2 +0 -0
  248. data/spec/functional/assets/yumrepo-empty/repodata/dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz +0 -0
  249. data/spec/functional/assets/yumrepo-empty/repodata/repomd.xml +55 -0
  250. data/spec/functional/resource/chocolatey_package_spec.rb +20 -32
  251. data/spec/functional/resource/dsc_script_spec.rb +1 -1
  252. data/spec/functional/resource/group_spec.rb +10 -6
  253. data/spec/functional/resource/link_spec.rb +8 -8
  254. data/spec/functional/resource/macos_userdefaults_spec.rb +4 -4
  255. data/spec/functional/resource/plist_spec.rb +25 -0
  256. data/spec/functional/resource/user/linux_user_spec.rb +127 -0
  257. data/spec/functional/resource/windows_certificate_spec.rb +1 -26
  258. data/spec/functional/resource/windows_font_spec.rb +12 -9
  259. data/spec/functional/resource/yum_package_spec.rb +17 -1
  260. data/spec/functional/resource/zypper_package_spec.rb +12 -0
  261. data/spec/functional/shell_spec.rb +1 -2
  262. data/spec/functional/version_spec.rb +1 -1
  263. data/spec/integration/client/client_spec.rb +82 -3
  264. data/spec/integration/client/exit_code_spec.rb +1 -1
  265. data/spec/integration/client/fips_spec.rb +20 -0
  266. data/spec/integration/client/ipv6_spec.rb +1 -1
  267. data/spec/integration/compliance/compliance_spec.rb +1 -1
  268. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  269. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  270. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  271. data/spec/integration/recipes/notifies_spec.rb +1 -1
  272. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  273. data/spec/integration/recipes/remote_directory.rb +1 -1
  274. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  275. data/spec/integration/recipes/use_partial_spec.rb +2 -1
  276. data/spec/integration/solo/solo_spec.rb +2 -2
  277. data/spec/spec_helper.rb +5 -0
  278. data/spec/support/platform_helpers.rb +8 -0
  279. data/spec/support/ruby_installer.rb +1 -1
  280. data/spec/support/shared/functional/windows_script.rb +2 -2
  281. data/spec/unit/application/client_spec.rb +0 -10
  282. data/spec/unit/chef_fs/file_system_spec.rb +2 -0
  283. data/spec/unit/client_spec.rb +57 -8
  284. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +1 -1
  285. data/spec/unit/cookbook/syntax_check_spec.rb +3 -0
  286. data/spec/unit/http/authenticator_spec.rb +68 -0
  287. data/spec/unit/mixin/powershell_exec_spec.rb +5 -5
  288. data/spec/unit/platform/query_helpers_spec.rb +2 -17
  289. data/spec/unit/property/validation_spec.rb +30 -0
  290. data/spec/unit/provider/cron_spec.rb +36 -0
  291. data/spec/unit/provider/http_request_spec.rb +60 -72
  292. data/spec/unit/provider/mount/linux_spec.rb +10 -0
  293. data/spec/unit/provider/package/chocolatey_spec.rb +3 -19
  294. data/spec/unit/provider/package/rubygems_spec.rb +1 -1
  295. data/spec/unit/provider/package/zypper_spec.rb +32 -0
  296. data/spec/unit/provider/user/linux_spec.rb +51 -11
  297. data/spec/unit/provider/user_spec.rb +24 -6
  298. data/spec/unit/resource/archive_file_spec.rb +1 -1
  299. data/spec/unit/resource/chef_client_cron_spec.rb +5 -0
  300. data/spec/unit/resource/chef_client_launchd_spec.rb +5 -0
  301. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +5 -0
  302. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
  303. data/spec/unit/resource/cron_d_spec.rb +37 -1
  304. data/spec/unit/resource/macos_user_defaults_spec.rb +4 -4
  305. data/spec/unit/resource/rest_resource_spec.rb +381 -0
  306. data/spec/unit/resource/selinux_boolean_spec.rb +92 -0
  307. data/spec/unit/resource/selinux_fcontext_spec.rb +65 -0
  308. data/spec/unit/resource/selinux_install_spec.rb +60 -0
  309. data/spec/unit/resource/selinux_module_spec.rb +55 -0
  310. data/spec/unit/resource/selinux_permissive_spec.rb +39 -0
  311. data/spec/unit/resource/selinux_port_spec.rb +42 -0
  312. data/spec/unit/resource/selinux_state_spec.rb +46 -0
  313. data/spec/unit/resource/sysctl_spec.rb +2 -2
  314. data/spec/unit/resource/user/linux_user_spec.rb +42 -0
  315. data/spec/unit/resource/yum_repository_spec.rb +4 -0
  316. data/spec/unit/resource_spec.rb +0 -1
  317. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +1 -1
  318. data/tasks/rspec.rb +1 -1
  319. metadata +107 -31
  320. /data/spec/functional/assets/chocolatey_feed/{test-A.1.0.0.nupkg → test-A.1.0.nupkg} +0 -0
  321. /data/spec/functional/assets/chocolatey_feed/{test-A.1.5.0.nupkg → test-A.1.5.nupkg} +0 -0
  322. /data/spec/functional/assets/chocolatey_feed/{test-A.2.0.0.nupkg → test-A.2.0.nupkg} +0 -0
  323. /data/spec/functional/assets/chocolatey_feed/{test-B.1.0.0.nupkg → test-B.1.0.nupkg} +0 -0
  324. /data/spec/functional/assets/yumrepo/repodata/{01a3b-filelists.sqlite.bz2 → 4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2} +0 -0
  325. /data/spec/functional/assets/yumrepo/repodata/{6bf96-other.xml.gz → 74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz} +0 -0
  326. /data/spec/functional/assets/yumrepo/repodata/{5dc1e-primary.sqlite.bz2 → a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2} +0 -0
  327. /data/spec/functional/assets/yumrepo/repodata/{7c365-other.sqlite.bz2 → af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2} +0 -0
  328. /data/spec/functional/assets/yumrepo/repodata/{401dc-filelists.xml.gz → bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz} +0 -0
  329. /data/spec/functional/assets/yumrepo/repodata/{dabe2-primary.xml.gz → c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz} +0 -0
@@ -0,0 +1,118 @@
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
+ require_relative "../resource"
15
+ require_relative "selinux/common_helpers"
16
+
17
+ class Chef
18
+ class Resource
19
+ class SelinuxPort < Chef::Resource
20
+ unified_mode true
21
+
22
+ provides :selinux_port
23
+
24
+ description "Use **selinux_port** resource to allows assigning a network port to a certain SELinux context, e.g. for running a webserver on a non-standard port."
25
+ introduced "18.0"
26
+ examples <<~DOC
27
+ **Allow nginx/apache to bind to port 5678 by giving it the http_port_t context**:
28
+
29
+ ```ruby
30
+ selinux_port '5678' do
31
+ protocol 'tcp'
32
+ secontext 'http_port_t'
33
+ end
34
+ ```
35
+ DOC
36
+
37
+ property :port, [Integer, String],
38
+ name_property: true,
39
+ regex: /^\d+$/,
40
+ description: "Port to modify."
41
+
42
+ property :protocol, String,
43
+ equal_to: %w{tcp udp},
44
+ required: %i{manage add modify},
45
+ description: "Protocol to modify."
46
+
47
+ property :secontext, String,
48
+ required: %i{manage add modify},
49
+ description: "SELinux context to assign to the port."
50
+
51
+ action_class do
52
+ include Chef::SELinux::CommonHelpers
53
+ def current_port_context
54
+ # use awk to see if the given port is within a reported port range
55
+ shell_out!(
56
+ <<~CMD
57
+ seinfo --portcon=#{new_resource.port} | grep 'portcon #{new_resource.protocol}' | \
58
+ awk -F: '$(NF-1) !~ /reserved_port_t$/ && $(NF-3) !~ /[0-9]*-[0-9]*/ {print $(NF-1)}'
59
+ CMD
60
+ ).stdout.split
61
+ end
62
+ end
63
+
64
+ action :manage, description: "Assign the port to the right context regardless of previous state." do
65
+ run_action(:add)
66
+ run_action(:modify)
67
+ end
68
+
69
+ action :addormodify, description: "Assigns the port context if not set. Updates the port context if previously set." do
70
+ Chef::Log.warn("The :addormodify action for selinux_port is deprecated and will be removed in a future release. Use the :manage action instead.")
71
+ run_action(:manage)
72
+ end
73
+
74
+ # Create if doesn't exist, do not touch if port is already registered (even under different type)
75
+ action :add, description: "Assign the port context if not set." do
76
+ if selinux_disabled?
77
+ Chef::Log.warn("Unable to add SELinux port #{new_resource.name} as SELinux is disabled")
78
+ return
79
+ end
80
+
81
+ if current_port_context.empty?
82
+ converge_by "Adding context #{new_resource.secontext} to port #{new_resource.port}/#{new_resource.protocol}" do
83
+ shell_out!("semanage port -a -t '#{new_resource.secontext}' -p #{new_resource.protocol} #{new_resource.port}")
84
+ end
85
+ end
86
+ end
87
+
88
+ # Only modify port if it exists & doesn't have the correct context already
89
+ action :modify, description: "Update the port context if previously set." do
90
+ if selinux_disabled?
91
+ Chef::Log.warn("Unable to modify SELinux port #{new_resource.name} as SELinux is disabled")
92
+ return
93
+ end
94
+
95
+ if !current_port_context.empty? && !current_port_context.include?(new_resource.secontext)
96
+ converge_by "Modifying context #{new_resource.secontext} to port #{new_resource.port}/#{new_resource.protocol}" do
97
+ shell_out!("semanage port -m -t '#{new_resource.secontext}' -p #{new_resource.protocol} #{new_resource.port}")
98
+ end
99
+ end
100
+ end
101
+
102
+ # Delete if exists
103
+ action :delete, description: "Removes the port context if set." do
104
+ if selinux_disabled?
105
+ Chef::Log.warn("Unable to delete SELinux port #{new_resource.name} as SELinux is disabled")
106
+ return
107
+ end
108
+
109
+ unless current_port_context.empty?
110
+ converge_by "Deleting context from port #{new_resource.port}/#{new_resource.protocol}" do
111
+ shell_out!("semanage port -d -p #{new_resource.protocol} #{new_resource.port}")
112
+ end
113
+ end
114
+ end
115
+
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,166 @@
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
+ require_relative "../resource"
15
+ require_relative "selinux/common_helpers"
16
+
17
+ class Chef
18
+ class Resource
19
+ class SelinuxState < Chef::Resource
20
+ unified_mode true
21
+
22
+ provides :selinux_state
23
+
24
+ description "Use **selinux_state** resource to manages the SELinux state on the system. It does this by using the `setenforce` command and rendering the `/etc/selinux/config` file from a template."
25
+ introduced "18.0"
26
+ examples <<~DOC
27
+ **Set SELinux state to permissive**:
28
+
29
+ ```ruby
30
+ selinux_state 'permissive' do
31
+ action :permissive
32
+ end
33
+ ```
34
+
35
+ **Set SELinux state to enforcing**:
36
+
37
+ ```ruby
38
+ selinux_state 'enforcing' do
39
+ action :enforcing
40
+ end
41
+ ```
42
+
43
+ **Set SELinux state to disabled**:
44
+ ```ruby
45
+ selinux_state 'disabled' do
46
+ action :disabled
47
+ end
48
+ ```
49
+ DOC
50
+
51
+ default_action :nothing
52
+
53
+ property :config_file, String,
54
+ default: "/etc/selinux/config",
55
+ description: "Path to SELinux config file on disk."
56
+
57
+ property :persistent, [true, false],
58
+ default: true,
59
+ description: "Persist status update to the selinux configuration file."
60
+
61
+ property :policy, String,
62
+ default: lazy { default_policy_platform },
63
+ equal_to: %w{default minimum mls src strict targeted},
64
+ description: "SELinux policy type."
65
+
66
+ property :automatic_reboot, [true, false, Symbol],
67
+ default: false,
68
+ description: "Perform an automatic node reboot if required for state change."
69
+
70
+ deprecated_property_alias "temporary", "persistent", "The temporary property was renamed persistent in the 4.0 release of this cookbook. Please update your cookbooks to use the new property name."
71
+
72
+ action_class do
73
+ include Chef::SELinux::CommonHelpers
74
+ def render_selinux_template(action)
75
+ Chef::Log.warn("It is advised to set the configuration first to permissive to relabel the filesystem prior to enforcing.") if selinux_disabled? && action == :enforcing
76
+
77
+ unless new_resource.automatic_reboot
78
+ Chef::Log.warn("Changes from disabled require a reboot.") if selinux_disabled? && %i{enforcing permissive}.include?(action)
79
+ Chef::Log.warn("Disabling selinux requires a reboot.") if (selinux_enforcing? || selinux_permissive?) && action == :disabled
80
+ end
81
+
82
+ template "#{action} selinux config" do
83
+ path new_resource.config_file
84
+ source debian? ? ::File.expand_path("selinux/selinux_debian.erb", __dir__) : ::File.expand_path("selinux/selinux_default.erb", __dir__)
85
+ local true
86
+ variables(
87
+ selinux: action.to_s,
88
+ selinuxtype: new_resource.policy
89
+ )
90
+ end
91
+ end
92
+
93
+ def node_selinux_restart
94
+ unless new_resource.automatic_reboot
95
+ Chef::Log.warn("SELinux state change to #{action} requires a manual reboot as SELinux is currently #{selinux_state} and automatic reboots are disabled.")
96
+ return
97
+ end
98
+
99
+ outer_action = action
100
+ reboot "selinux_state_change" do
101
+ delay_mins 1
102
+ reason "SELinux state change to #{outer_action} from #{selinux_state}"
103
+
104
+ action new_resource.automatic_reboot.is_a?(Symbol) ? new_resource.automatic_reboot : :reboot_now
105
+ end
106
+ end
107
+ end
108
+
109
+ action :enforcing, description: "Set the SELinux state to enforcing." do
110
+ unless selinux_disabled? || selinux_enforcing?
111
+ execute "selinux-setenforce-enforcing" do
112
+ command "/usr/sbin/setenforce 1"
113
+ end
114
+ end
115
+
116
+ if selinux_activate_required?
117
+ execute "debian-selinux-activate" do
118
+ command "/usr/sbin/selinux-activate"
119
+ end
120
+ end
121
+
122
+ render_selinux_template(action) if new_resource.persistent
123
+ node_selinux_restart if state_change_reboot_required?
124
+ end
125
+
126
+ action :permissive, description: "Set the SELinux state to permissive." do
127
+ unless selinux_disabled? || selinux_permissive?
128
+ execute "selinux-setenforce-permissive" do
129
+ command "/usr/sbin/setenforce 0"
130
+ end
131
+ end
132
+
133
+ if selinux_activate_required?
134
+ execute "debian-selinux-activate" do
135
+ command "/usr/sbin/selinux-activate"
136
+ end
137
+ end
138
+
139
+ render_selinux_template(action) if new_resource.persistent
140
+ node_selinux_restart if state_change_reboot_required?
141
+ end
142
+
143
+ action :disabled, description: "Set the SELinux state to disabled. **NOTE**: Switching to or from disabled requires a reboot!" do
144
+ raise "A non-persistent change to the disabled SELinux status is not possible." unless new_resource.persistent
145
+
146
+ render_selinux_template(action)
147
+ node_selinux_restart if state_change_reboot_required?
148
+ end
149
+
150
+ private
151
+
152
+ #
153
+ # Decide default policy platform based upon platform_family
154
+ #
155
+ # @return [String] Policy platform name
156
+ def default_policy_platform
157
+ case node["platform_family"]
158
+ when "rhel", "fedora", "amazon"
159
+ "targeted"
160
+ when "debian"
161
+ "default"
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end
@@ -27,7 +27,6 @@ class Chef
27
27
  class Service < Chef::Resource
28
28
  include Chef::Platform::ServiceHelpers
29
29
  extend Chef::Platform::ServiceHelpers
30
- unified_mode true
31
30
 
32
31
  provides :service, target_mode: true
33
32
 
@@ -21,13 +21,14 @@ require_relative "package"
21
21
  class Chef
22
22
  class Resource
23
23
  class SmartosPackage < Chef::Resource::Package
24
- unified_mode true
25
24
 
26
25
  provides :smartos_package
27
26
  provides :package, platform_family: "smartos"
28
27
 
29
28
  description "Use the **smartos_package** resource to manage packages for the SmartOS platform."
30
29
 
30
+ allowed_actions :install, :upgrade, :remove
31
+
31
32
  property :package_name, String,
32
33
  description: "An optional property to set the package name if it differs from the resource block's name.",
33
34
  identity: true
@@ -21,13 +21,14 @@ require_relative "package"
21
21
  class Chef
22
22
  class Resource
23
23
  class SnapPackage < Chef::Resource::Package
24
- unified_mode true
25
24
 
26
25
  provides :snap_package
27
26
 
28
27
  description "Use the **snap_package** resource to manage snap packages on Debian and Ubuntu platforms."
29
28
  introduced "15.0"
30
29
 
30
+ allowed_actions :install, :upgrade, :remove, :purge
31
+
31
32
  property :channel, String,
32
33
  description: "The default channel. For example: stable.",
33
34
  default: "stable",
@@ -22,12 +22,13 @@ require_relative "package"
22
22
  class Chef
23
23
  class Resource
24
24
  class SolarisPackage < Chef::Resource::Package
25
- unified_mode true
26
25
 
27
26
  provides :solaris_package
28
27
 
29
28
  description "Use the **solaris_package** resource to manage packages on the Solaris platform."
30
29
 
30
+ allowed_actions :install, :upgrade, :remove
31
+
31
32
  property :package_name, String,
32
33
  description: "An optional property to set the package name if it differs from the resource block's name.",
33
34
  identity: true
@@ -23,7 +23,6 @@ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
23
23
  class Chef
24
24
  class Resource
25
25
  class SshKnownHostsEntry < Chef::Resource
26
- unified_mode true
27
26
 
28
27
  provides :ssh_known_hosts_entry
29
28
 
@@ -24,7 +24,6 @@ require_relative "../resource"
24
24
  class Chef
25
25
  class Resource
26
26
  class Sudo < Chef::Resource
27
- unified_mode true
28
27
 
29
28
  provides(:sudo) { true }
30
29
 
@@ -38,10 +38,10 @@ log_location <%= @log_location.inspect %>
38
38
  <% end -%>
39
39
  <%# These data_collector options are special as they have a '.' -%>
40
40
  <% unless @data_collector_server_url.nil? || @data_collector_server_url.empty? %>
41
- data_collector.server_url <%= @data_collector_server_url %>
41
+ data_collector.server_url <%= @data_collector_server_url.inspect %>
42
42
  <% end %>
43
43
  <% unless @data_collector_token.nil? || @data_collector_token.empty? %>
44
- data_collector.token <%= @data_collector_token %>
44
+ data_collector.token <%= @data_collector_token.inspect %>
45
45
  <% end %>
46
46
  <%# The code below is not DRY on purpose to improve readability -%>
47
47
  <% unless @start_handlers.empty? -%>
@@ -20,7 +20,6 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class SwapFile < Chef::Resource
23
- unified_mode true
24
23
 
25
24
  provides(:swap_file) { true }
26
25
 
@@ -20,7 +20,6 @@ require_relative "../resource"
20
20
  class Chef
21
21
  class Resource
22
22
  class Sysctl < Chef::Resource
23
- unified_mode true
24
23
 
25
24
  provides(:sysctl) { true }
26
25
  provides(:sysctl_param) { true }
@@ -188,7 +187,7 @@ class Chef
188
187
 
189
188
  sysctl_lines << "#{new_resource.key} = #{new_resource.value}"
190
189
 
191
- sysctl_lines.join("\n")
190
+ sysctl_lines.join("\n") + "\n"
192
191
  end
193
192
  end
194
193
 
@@ -23,7 +23,6 @@ require "iniparse"
23
23
  class Chef
24
24
  class Resource
25
25
  class SystemdUnit < Chef::Resource
26
- unified_mode true
27
26
 
28
27
  provides(:systemd_unit) { true }
29
28
 
@@ -34,7 +34,6 @@ class Chef
34
34
  # chef-client. This resource includes actions and properties from the file resource. Template files managed by the
35
35
  # template resource follow the same file specificity rules as the remote_file and file resources.
36
36
  class Template < Chef::Resource::File
37
- unified_mode true
38
37
 
39
38
  provides :template
40
39
 
@@ -22,7 +22,6 @@ require_relative "../resource"
22
22
  class Chef
23
23
  class Resource
24
24
  class Timezone < Chef::Resource
25
- unified_mode true
26
25
 
27
26
  provides :timezone
28
27
 
@@ -21,7 +21,6 @@ class Chef
21
21
  class Resource
22
22
  class User
23
23
  class AixUser < Chef::Resource::User
24
- unified_mode true
25
24
 
26
25
  provides :aix_user
27
26
  provides :user, os: "aix"
@@ -21,7 +21,6 @@ class Chef
21
21
  class Resource
22
22
  class User
23
23
  class LinuxUser < Chef::Resource::User
24
- unified_mode true
25
24
 
26
25
  provides :linux_user
27
26
  provides :user, os: "linux"
@@ -58,7 +58,6 @@ class Chef
58
58
  # the 'password' property corresponds to a plaintext password and will
59
59
  # attempt to use it in place of secure_token_password if it not set.
60
60
  class MacUser < Chef::Resource::User
61
- unified_mode true
62
61
 
63
62
  provides :mac_user
64
63
  provides :user, platform: "mac_os_x"
@@ -21,7 +21,6 @@ class Chef
21
21
  class Resource
22
22
  class User
23
23
  class PwUser < Chef::Resource::User
24
- unified_mode true
25
24
 
26
25
  provides :pw_user
27
26
  provides :user, os: "freebsd"
@@ -21,7 +21,6 @@ class Chef
21
21
  class Resource
22
22
  class User
23
23
  class SolarisUser < Chef::Resource::User
24
- unified_mode true
25
24
 
26
25
  provides :solaris_user
27
26
  provides :user, os: %w{omnios solaris2}
@@ -21,7 +21,6 @@ class Chef
21
21
  class Resource
22
22
  class User
23
23
  class WindowsUser < Chef::Resource::User
24
- unified_mode true
25
24
 
26
25
  provides :windows_user
27
26
  provides :user, os: "windows"
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class User < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  description "Use the **user** resource to add users, update existing users, remove users, and to lock/unlock user passwords."
27
26
 
@@ -73,6 +72,16 @@ class Chef
73
72
  description: "The numeric group identifier."
74
73
 
75
74
  alias_method :group, :gid
75
+
76
+ property :expire_date, [ String, NilClass ],
77
+ description: "(Linux) The date on which the user account will be disabled. The date is specified in the format YYYY-MM-DD.",
78
+ introduced: "18.0",
79
+ desired_state: false
80
+
81
+ property :inactive, [ String, Integer, NilClass ],
82
+ description: "(Linux) The number of days after a password expires until the account is permanently disabled. A value of 0 disables the account as soon as the password has expired, and a value of -1 disables the feature.",
83
+ introduced: "18.0",
84
+ desired_state: false
76
85
  end
77
86
  end
78
87
  end
@@ -22,7 +22,6 @@ require_relative "../resource"
22
22
  class Chef
23
23
  class Resource
24
24
  class UserUlimit < Chef::Resource
25
- unified_mode true
26
25
 
27
26
  provides :user_ulimit
28
27
 
@@ -20,7 +20,6 @@ class Chef
20
20
  class Resource
21
21
  class WhyrunSafeRubyBlock < Chef::Resource::RubyBlock
22
22
  provides :whyrun_safe_ruby_block
23
- unified_mode true
24
23
  end
25
24
  end
26
25
  end
@@ -23,8 +23,6 @@ class Chef
23
23
  class WindowsAdJoin < Chef::Resource
24
24
  provides :windows_ad_join
25
25
 
26
- unified_mode true
27
-
28
26
  description "Use the **windows_ad_join** resource to join a Windows Active Directory domain."
29
27
  introduced "14.0"
30
28
  examples <<~DOC
@@ -83,8 +83,6 @@ class Chef
83
83
  "User Account Management",
84
84
  ].freeze
85
85
 
86
- unified_mode true
87
-
88
86
  provides :windows_audit_policy
89
87
 
90
88
  description "Use the **windows_audit_policy** resource to configure system level and per-user Windows advanced audit policy settings."
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsAutorun < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides(:windows_auto_run) { true }
27
26
 
@@ -19,7 +19,6 @@ require_relative "../resource"
19
19
  class Chef
20
20
  class Resource
21
21
  class WindowsDefender < Chef::Resource
22
- unified_mode true
23
22
  provides :windows_defender
24
23
 
25
24
  description "Use the **windows_defender** resource to enable or disable the Microsoft Windows Defender service."
@@ -45,7 +45,6 @@ class Chef
45
45
  end
46
46
  ```
47
47
  DOC
48
- unified_mode true
49
48
 
50
49
  property :paths, [String, Array], default: [],
51
50
  coerce: proc { |x| to_consistent_path_array(x) },
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDfsFolder < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides :windows_dfs_folder
27
26
 
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDfsNamespace < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides :windows_dfs_namespace
27
26
 
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDfsServer < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides :windows_dfs_server
27
26
 
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDnsRecord < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides :windows_dns_record
27
26
 
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsDnsZone < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides :windows_dns_zone
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 WindowsEnv < Chef::Resource
27
- unified_mode true
28
27
 
29
28
  provides :windows_env
30
29
  provides :env # backwards compat with the pre-Chef 14 resource name
@@ -21,7 +21,6 @@ require_relative "../resource"
21
21
  class Chef
22
22
  class Resource
23
23
  class WindowsFeature < Chef::Resource
24
- unified_mode true
25
24
 
26
25
  provides(:windows_feature) { true }
27
26
 
@@ -22,7 +22,6 @@ require_relative "../platform/query_helpers"
22
22
  class Chef
23
23
  class Resource
24
24
  class WindowsFeatureDism < Chef::Resource
25
- unified_mode true
26
25
 
27
26
  provides(:windows_feature_dism) { true }
28
27
 
@@ -23,7 +23,6 @@ require_relative "../platform/query_helpers"
23
23
  class Chef
24
24
  class Resource
25
25
  class WindowsFeaturePowershell < Chef::Resource
26
- unified_mode true
27
26
 
28
27
  provides(:windows_feature_powershell) { true }
29
28
 
@@ -58,8 +58,6 @@ class Chef
58
58
  ```
59
59
  DOC
60
60
 
61
- unified_mode true
62
-
63
61
  property :profile, String,
64
62
  name_property: true,
65
63
  equal_to: %w{ Domain Public Private },