chef 15.17.4-universal-mingw32 → 16.0.257-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 (571) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +14 -20
  3. data/README.md +6 -6
  4. data/Rakefile +18 -23
  5. data/chef-universal-mingw32.gemspec +4 -4
  6. data/chef.gemspec +10 -26
  7. data/distro/powershell/chef/chef.psm1 +3 -3
  8. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  9. data/lib/chef/action_collection.rb +16 -5
  10. data/lib/chef/api_client/registration.rb +2 -2
  11. data/lib/chef/application.rb +33 -54
  12. data/lib/chef/application/apply.rb +20 -3
  13. data/lib/chef/application/base.rb +8 -3
  14. data/lib/chef/application/exit_code.rb +2 -2
  15. data/lib/chef/application/knife.rb +1 -1
  16. data/lib/chef/chef_class.rb +4 -4
  17. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  21. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  22. data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +5 -5
  26. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  27. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  28. data/lib/chef/chef_fs/path_utils.rb +3 -3
  29. data/lib/chef/client.rb +16 -14
  30. data/lib/chef/config.rb +1 -1
  31. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  32. data/lib/chef/cookbook/gem_installer.rb +1 -1
  33. data/lib/chef/cookbook/metadata.rb +45 -22
  34. data/lib/chef/cookbook_version.rb +40 -5
  35. data/lib/chef/data_bag.rb +2 -2
  36. data/lib/chef/data_collector/error_handlers.rb +1 -1
  37. data/lib/chef/data_collector/run_end_message.rb +7 -1
  38. data/lib/chef/deprecated.rb +1 -9
  39. data/lib/chef/dist.rb +8 -0
  40. data/lib/chef/dsl/chef_vault.rb +84 -0
  41. data/lib/chef/dsl/declare_resource.rb +7 -5
  42. data/lib/chef/dsl/platform_introspection.rb +2 -3
  43. data/lib/chef/dsl/recipe.rb +7 -12
  44. data/lib/chef/dsl/universal.rb +3 -7
  45. data/lib/chef/environment.rb +2 -2
  46. data/lib/chef/event_dispatch/base.rb +3 -0
  47. data/lib/chef/exceptions.rb +0 -3
  48. data/lib/chef/formatters/doc.rb +1 -1
  49. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  50. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  51. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  52. data/lib/chef/http.rb +1 -2
  53. data/lib/chef/http/http_request.rb +3 -2
  54. data/lib/chef/knife.rb +1 -3
  55. data/lib/chef/knife/acl_add.rb +57 -0
  56. data/lib/chef/knife/acl_base.rb +183 -0
  57. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  58. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  59. data/lib/chef/knife/acl_remove.rb +62 -0
  60. data/lib/chef/knife/acl_show.rb +56 -0
  61. data/lib/chef/knife/bootstrap.rb +93 -97
  62. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  63. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  64. data/lib/chef/knife/bootstrap/templates/chef-full.erb +20 -20
  65. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
  66. data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
  67. data/lib/chef/knife/cookbook_download.rb +1 -1
  68. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  69. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  70. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  71. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  72. data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
  73. data/lib/chef/knife/core/node_presenter.rb +2 -2
  74. data/lib/chef/knife/core/status_presenter.rb +5 -5
  75. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  76. data/lib/chef/knife/core/ui.rb +17 -1
  77. data/lib/chef/knife/core/windows_bootstrap_context.rb +45 -58
  78. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  79. data/lib/chef/knife/environment_compare.rb +1 -1
  80. data/lib/chef/knife/exec.rb +2 -2
  81. data/lib/chef/knife/group_add.rb +55 -0
  82. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  83. data/lib/chef/knife/group_destroy.rb +53 -0
  84. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  85. data/lib/chef/knife/group_remove.rb +56 -0
  86. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  87. data/lib/chef/knife/list.rb +1 -1
  88. data/lib/chef/knife/ssh.rb +12 -50
  89. data/lib/chef/knife/status.rb +3 -3
  90. data/lib/chef/knife/supermarket_download.rb +1 -2
  91. data/lib/chef/knife/supermarket_install.rb +1 -2
  92. data/lib/chef/knife/supermarket_list.rb +1 -2
  93. data/lib/chef/knife/supermarket_search.rb +1 -2
  94. data/lib/chef/knife/supermarket_share.rb +1 -2
  95. data/lib/chef/knife/supermarket_show.rb +1 -2
  96. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  97. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  98. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  99. data/lib/chef/knife/user_invite_list.rb +34 -0
  100. data/lib/chef/knife/user_invite_recind.rb +63 -0
  101. data/lib/chef/knife/yaml_convert.rb +91 -0
  102. data/lib/chef/log.rb +1 -1
  103. data/lib/chef/mixin/create_path.rb +8 -8
  104. data/lib/chef/mixin/openssl_helper.rb +3 -26
  105. data/lib/chef/mixin/powershell_exec.rb +10 -1
  106. data/lib/chef/mixin/powershell_out.rb +1 -1
  107. data/lib/chef/mixin/properties.rb +13 -1
  108. data/lib/chef/mixin/shell_out.rb +0 -4
  109. data/lib/chef/mixin/template.rb +0 -1
  110. data/lib/chef/monkey_patches/net_http.rb +0 -4
  111. data/lib/chef/node.rb +18 -6
  112. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  113. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  114. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  115. data/lib/chef/node_map.rb +7 -36
  116. data/lib/chef/platform/priority_map.rb +4 -4
  117. data/lib/chef/platform/query_helpers.rb +6 -34
  118. data/lib/chef/powershell.rb +14 -0
  119. data/lib/chef/property.rb +22 -4
  120. data/lib/chef/provider.rb +40 -6
  121. data/lib/chef/provider/cron.rb +2 -2
  122. data/lib/chef/provider/directory.rb +2 -2
  123. data/lib/chef/provider/dsc_resource.rb +1 -1
  124. data/lib/chef/provider/dsc_script.rb +1 -1
  125. data/lib/chef/provider/execute.rb +2 -8
  126. data/lib/chef/provider/file.rb +5 -5
  127. data/lib/chef/provider/git.rb +84 -27
  128. data/lib/chef/provider/group.rb +4 -4
  129. data/lib/chef/provider/http_request.rb +6 -6
  130. data/lib/chef/provider/ifconfig.rb +4 -4
  131. data/lib/chef/provider/launchd.rb +36 -51
  132. data/lib/chef/provider/link.rb +2 -2
  133. data/lib/chef/provider/mount.rb +5 -5
  134. data/lib/chef/provider/mount/solaris.rb +1 -0
  135. data/lib/chef/provider/osx_profile.rb +7 -3
  136. data/lib/chef/provider/package.rb +2 -2
  137. data/lib/chef/provider/package/cab.rb +3 -4
  138. data/lib/chef/provider/package/chocolatey.rb +1 -3
  139. data/lib/chef/provider/package/dnf.rb +66 -10
  140. data/lib/chef/provider/package/dnf/dnf_helper.py +84 -30
  141. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  142. data/lib/chef/provider/package/dnf/version.rb +5 -1
  143. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -3
  144. data/lib/chef/provider/package/homebrew.rb +106 -42
  145. data/lib/chef/provider/package/msu.rb +3 -1
  146. data/lib/chef/provider/package/pacman.rb +25 -34
  147. data/lib/chef/provider/package/powershell.rb +2 -6
  148. data/lib/chef/provider/package/rubygems.rb +29 -2
  149. data/lib/chef/provider/package/snap.rb +27 -96
  150. data/lib/chef/provider/package/windows.rb +3 -2
  151. data/lib/chef/provider/package/windows/msi.rb +2 -2
  152. data/lib/chef/provider/package/yum.rb +0 -8
  153. data/lib/chef/provider/package/yum/yum_helper.py +0 -4
  154. data/lib/chef/provider/package/zypper.rb +1 -1
  155. data/lib/chef/provider/powershell_script.rb +4 -10
  156. data/lib/chef/provider/registry_key.rb +4 -4
  157. data/lib/chef/provider/remote_directory.rb +3 -3
  158. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  159. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  160. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  161. data/lib/chef/provider/route.rb +5 -3
  162. data/lib/chef/provider/ruby_block.rb +1 -1
  163. data/lib/chef/provider/script.rb +2 -2
  164. data/lib/chef/provider/service.rb +8 -8
  165. data/lib/chef/provider/service/aixinit.rb +1 -1
  166. data/lib/chef/provider/service/arch.rb +2 -2
  167. data/lib/chef/provider/service/debian.rb +31 -29
  168. data/lib/chef/provider/service/gentoo.rb +2 -2
  169. data/lib/chef/provider/service/macosx.rb +7 -12
  170. data/lib/chef/provider/service/openbsd.rb +1 -1
  171. data/lib/chef/provider/service/redhat.rb +2 -2
  172. data/lib/chef/provider/service/simple.rb +3 -3
  173. data/lib/chef/provider/service/systemd.rb +12 -12
  174. data/lib/chef/provider/service/upstart.rb +1 -1
  175. data/lib/chef/provider/service/windows.rb +5 -11
  176. data/lib/chef/provider/subversion.rb +25 -5
  177. data/lib/chef/provider/systemd_unit.rb +26 -25
  178. data/lib/chef/provider/user.rb +6 -6
  179. data/lib/chef/provider/user/dscl.rb +3 -3
  180. data/lib/chef/provider/user/mac.rb +10 -9
  181. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  182. data/lib/chef/provider/windows_env.rb +3 -3
  183. data/lib/chef/provider/windows_script.rb +2 -2
  184. data/lib/chef/provider/windows_task.rb +7 -9
  185. data/lib/chef/provider/yum_repository.rb +1 -1
  186. data/lib/chef/provider/zypper_repository.rb +11 -31
  187. data/lib/chef/providers.rb +0 -6
  188. data/lib/chef/recipe.rb +36 -0
  189. data/lib/chef/resource.rb +41 -56
  190. data/lib/chef/resource/action_class.rb +24 -22
  191. data/lib/chef/resource/alternatives.rb +149 -0
  192. data/lib/chef/resource/apt_package.rb +2 -1
  193. data/lib/chef/resource/apt_preference.rb +69 -2
  194. data/lib/chef/resource/apt_repository.rb +337 -5
  195. data/lib/chef/resource/apt_update.rb +52 -1
  196. data/lib/chef/resource/archive_file.rb +9 -29
  197. data/lib/chef/resource/bash.rb +2 -0
  198. data/lib/chef/resource/bff_package.rb +9 -1
  199. data/lib/chef/resource/breakpoint.rb +0 -1
  200. data/lib/chef/resource/build_essential.rb +42 -48
  201. data/lib/chef/resource/cab_package.rb +8 -1
  202. data/lib/chef/resource/chef_client_cron.rb +225 -0
  203. data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
  204. data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
  205. data/lib/chef/resource/chef_gem.rb +9 -16
  206. data/lib/chef/resource/chef_handler.rb +2 -1
  207. data/lib/chef/resource/chef_sleep.rb +0 -1
  208. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  209. data/lib/chef/resource/chocolatey_config.rb +3 -1
  210. data/lib/chef/resource/chocolatey_feature.rb +2 -1
  211. data/lib/chef/resource/chocolatey_package.rb +2 -1
  212. data/lib/chef/resource/chocolatey_source.rb +2 -1
  213. data/lib/chef/resource/cookbook_file.rb +1 -1
  214. data/lib/chef/resource/cron.rb +22 -68
  215. data/lib/chef/resource/cron_access.rb +8 -15
  216. data/lib/chef/resource/cron_d.rb +9 -75
  217. data/lib/chef/resource/csh.rb +2 -0
  218. data/lib/chef/resource/directory.rb +2 -2
  219. data/lib/chef/resource/dmg_package.rb +4 -4
  220. data/lib/chef/resource/dnf_package.rb +2 -3
  221. data/lib/chef/resource/dpkg_package.rb +2 -1
  222. data/lib/chef/resource/dsc_resource.rb +6 -4
  223. data/lib/chef/resource/dsc_script.rb +3 -2
  224. data/lib/chef/resource/execute.rb +13 -12
  225. data/lib/chef/resource/file.rb +3 -1
  226. data/lib/chef/resource/freebsd_package.rb +2 -1
  227. data/lib/chef/resource/gem_package.rb +14 -6
  228. data/lib/chef/resource/group.rb +4 -1
  229. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  230. data/lib/chef/resource/homebrew_cask.rb +5 -4
  231. data/lib/chef/resource/homebrew_package.rb +4 -2
  232. data/lib/chef/resource/homebrew_tap.rb +2 -1
  233. data/lib/chef/resource/hostname.rb +41 -36
  234. data/lib/chef/resource/http_request.rb +0 -1
  235. data/lib/chef/resource/ifconfig.rb +1 -1
  236. data/lib/chef/resource/ips_package.rb +10 -2
  237. data/lib/chef/resource/kernel_module.rb +29 -29
  238. data/lib/chef/resource/ksh.rb +2 -0
  239. data/lib/chef/resource/launchd.rb +6 -6
  240. data/lib/chef/resource/link.rb +1 -23
  241. data/lib/chef/resource/locale.rb +58 -24
  242. data/lib/chef/resource/log.rb +12 -1
  243. data/lib/chef/resource/lwrp_base.rb +1 -8
  244. data/lib/chef/resource/macos_userdefaults.rb +9 -6
  245. data/lib/chef/resource/macosx_service.rb +2 -1
  246. data/lib/chef/resource/macports_package.rb +10 -2
  247. data/lib/chef/resource/mdadm.rb +62 -2
  248. data/lib/chef/resource/mount.rb +3 -0
  249. data/lib/chef/resource/msu_package.rb +13 -1
  250. data/lib/chef/resource/notify_group.rb +8 -3
  251. data/lib/chef/resource/ohai.rb +19 -3
  252. data/lib/chef/resource/ohai_hint.rb +3 -12
  253. data/lib/chef/resource/openbsd_package.rb +9 -1
  254. data/lib/chef/resource/openssl_dhparam.rb +10 -1
  255. data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
  256. data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
  257. data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
  258. data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
  259. data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
  260. data/lib/chef/resource/openssl_x509_crl.rb +12 -1
  261. data/lib/chef/resource/openssl_x509_request.rb +37 -1
  262. data/lib/chef/resource/osx_profile.rb +3 -2
  263. data/lib/chef/resource/package.rb +2 -1
  264. data/lib/chef/resource/pacman_package.rb +2 -1
  265. data/lib/chef/resource/paludis_package.rb +12 -3
  266. data/lib/chef/resource/perl.rb +2 -0
  267. data/lib/chef/resource/plist.rb +207 -0
  268. data/lib/chef/resource/portage_package.rb +13 -3
  269. data/lib/chef/resource/powershell_package.rb +1 -3
  270. data/lib/chef/resource/powershell_package_source.rb +3 -1
  271. data/lib/chef/resource/powershell_script.rb +7 -17
  272. data/lib/chef/resource/python.rb +2 -0
  273. data/lib/chef/resource/reboot.rb +0 -1
  274. data/lib/chef/resource/registry_key.rb +1 -2
  275. data/lib/chef/resource/remote_directory.rb +2 -0
  276. data/lib/chef/resource/remote_file.rb +2 -0
  277. data/lib/chef/resource/rhsm_errata.rb +0 -1
  278. data/lib/chef/resource/rhsm_errata_level.rb +0 -1
  279. data/lib/chef/resource/rhsm_register.rb +2 -1
  280. data/lib/chef/resource/rhsm_repo.rb +3 -1
  281. data/lib/chef/resource/rhsm_subscription.rb +4 -1
  282. data/lib/chef/resource/route.rb +5 -1
  283. data/lib/chef/resource/rpm_package.rb +9 -2
  284. data/lib/chef/resource/ruby.rb +2 -0
  285. data/lib/chef/resource/ruby_block.rb +1 -1
  286. data/lib/chef/resource/scm/_scm.rb +48 -0
  287. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  288. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
  289. data/lib/chef/resource/script.rb +6 -3
  290. data/lib/chef/resource/service.rb +6 -7
  291. data/lib/chef/resource/smartos_package.rb +9 -1
  292. data/lib/chef/resource/snap_package.rb +3 -1
  293. data/lib/chef/resource/solaris_package.rb +9 -1
  294. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  295. data/lib/chef/resource/sudo.rb +9 -9
  296. data/lib/chef/resource/support/cron.d.erb +1 -1
  297. data/lib/chef/resource/support/cron_access.erb +1 -1
  298. data/lib/chef/resource/support/sudoer.erb +1 -2
  299. data/lib/chef/resource/support/ulimit.erb +41 -0
  300. data/lib/chef/resource/swap_file.rb +5 -3
  301. data/lib/chef/resource/sysctl.rb +2 -2
  302. data/lib/chef/resource/systemd_unit.rb +4 -2
  303. data/lib/chef/resource/template.rb +0 -1
  304. data/lib/chef/resource/timezone.rb +7 -18
  305. data/lib/chef/resource/user.rb +1 -3
  306. data/lib/chef/resource/user/aix_user.rb +0 -2
  307. data/lib/chef/resource/user/dscl_user.rb +1 -1
  308. data/lib/chef/resource/user/linux_user.rb +0 -2
  309. data/lib/chef/resource/user/mac_user.rb +1 -1
  310. data/lib/chef/resource/user/pw_user.rb +0 -2
  311. data/lib/chef/resource/user/solaris_user.rb +0 -2
  312. data/lib/chef/resource/user/windows_user.rb +0 -2
  313. data/lib/chef/resource/user_ulimit.rb +114 -0
  314. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  315. data/lib/chef/resource/windows_ad_join.rb +19 -6
  316. data/lib/chef/resource/windows_auto_run.rb +0 -1
  317. data/lib/chef/resource/windows_certificate.rb +1 -1
  318. data/lib/chef/resource/windows_dfs_folder.rb +0 -1
  319. data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
  320. data/lib/chef/resource/windows_dfs_server.rb +0 -1
  321. data/lib/chef/resource/windows_dns_record.rb +0 -1
  322. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  323. data/lib/chef/resource/windows_env.rb +2 -3
  324. data/lib/chef/resource/windows_feature.rb +2 -2
  325. data/lib/chef/resource/windows_feature_dism.rb +9 -22
  326. data/lib/chef/resource/windows_feature_powershell.rb +17 -82
  327. data/lib/chef/resource/windows_firewall_rule.rb +119 -10
  328. data/lib/chef/resource/windows_font.rb +1 -3
  329. data/lib/chef/resource/windows_package.rb +13 -4
  330. data/lib/chef/resource/windows_pagefile.rb +0 -1
  331. data/lib/chef/resource/windows_path.rb +0 -1
  332. data/lib/chef/resource/windows_printer.rb +0 -1
  333. data/lib/chef/resource/windows_printer_port.rb +0 -1
  334. data/lib/chef/resource/windows_script.rb +3 -4
  335. data/lib/chef/resource/windows_security_policy.rb +90 -0
  336. data/lib/chef/resource/windows_service.rb +45 -31
  337. data/lib/chef/resource/windows_share.rb +3 -7
  338. data/lib/chef/resource/windows_shortcut.rb +0 -1
  339. data/lib/chef/resource/windows_task.rb +14 -15
  340. data/lib/chef/resource/windows_uac.rb +0 -1
  341. data/lib/chef/resource/windows_user_privilege.rb +157 -0
  342. data/lib/chef/resource/windows_workgroup.rb +0 -1
  343. data/lib/chef/resource/yum_package.rb +3 -1
  344. data/lib/chef/resource/yum_repository.rb +2 -1
  345. data/lib/chef/resource/zypper_package.rb +3 -2
  346. data/lib/chef/resource/zypper_repository.rb +2 -1
  347. data/lib/chef/resource_builder.rb +8 -0
  348. data/lib/chef/resource_inspector.rb +6 -6
  349. data/lib/chef/resource_resolver.rb +7 -14
  350. data/lib/chef/resources.rb +11 -3
  351. data/lib/chef/role.rb +2 -2
  352. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  353. data/lib/chef/shell.rb +23 -32
  354. data/lib/chef/shell/shell_session.rb +0 -2
  355. data/lib/chef/util/diff.rb +1 -1
  356. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  357. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  358. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  359. data/lib/chef/version.rb +2 -2
  360. data/lib/chef/version_string.rb +1 -1
  361. data/lib/chef/win32/api/file.rb +18 -18
  362. data/lib/chef/win32/api/security.rb +6 -0
  363. data/lib/chef/win32/file.rb +3 -11
  364. data/lib/chef/win32/process.rb +2 -2
  365. data/lib/chef/win32/security.rb +40 -2
  366. data/spec/functional/assets/inittest +8 -7
  367. data/spec/functional/knife/ssh_spec.rb +27 -23
  368. data/spec/functional/resource/aix_service_spec.rb +1 -0
  369. data/spec/functional/resource/aixinit_service_spec.rb +8 -7
  370. data/spec/functional/resource/apt_package_spec.rb +1 -0
  371. data/spec/functional/resource/bff_spec.rb +2 -2
  372. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  373. data/spec/functional/resource/cron_spec.rb +11 -29
  374. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  375. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  376. data/spec/functional/resource/git_spec.rb +184 -134
  377. data/spec/functional/resource/insserv_spec.rb +6 -5
  378. data/spec/functional/resource/link_spec.rb +17 -17
  379. data/spec/functional/resource/locale_spec.rb +13 -2
  380. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  381. data/spec/functional/resource/rpm_spec.rb +2 -2
  382. data/spec/functional/resource/user/dscl_spec.rb +2 -2
  383. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  384. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  385. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  386. data/spec/functional/resource/windows_task_spec.rb +8 -8
  387. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  388. data/spec/functional/run_lock_spec.rb +1 -2
  389. data/spec/functional/shell_spec.rb +6 -6
  390. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  391. data/spec/functional/version_spec.rb +1 -1
  392. data/spec/functional/win32/registry_spec.rb +0 -6
  393. data/spec/functional/win32/security_spec.rb +22 -0
  394. data/spec/functional/win32/service_manager_spec.rb +1 -1
  395. data/spec/integration/client/client_spec.rb +123 -2
  396. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  397. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  398. data/spec/integration/knife/raw_spec.rb +30 -2
  399. data/spec/integration/knife/show_spec.rb +32 -3
  400. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  401. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
  402. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  403. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  404. data/spec/integration/recipes/notifies_spec.rb +50 -21
  405. data/spec/integration/recipes/notifying_block_spec.rb +9 -6
  406. data/spec/integration/recipes/provider_choice.rb +2 -0
  407. data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
  408. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  409. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
  410. data/spec/integration/recipes/resource_load_spec.rb +133 -13
  411. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  412. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  413. data/spec/integration/solo/solo_spec.rb +3 -3
  414. data/spec/scripts/ssl-serve.rb +1 -1
  415. data/spec/spec_helper.rb +11 -14
  416. data/spec/support/chef_helpers.rb +2 -2
  417. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  418. data/spec/support/platform_helpers.rb +44 -19
  419. data/spec/support/platforms/win32/spec_service.rb +1 -1
  420. data/spec/support/recipe_dsl_helper.rb +83 -0
  421. data/spec/support/shared/functional/directory_resource.rb +1 -1
  422. data/spec/support/shared/functional/execute_resource.rb +1 -1
  423. data/spec/support/shared/functional/file_resource.rb +3 -3
  424. data/spec/support/shared/functional/win32_service.rb +1 -1
  425. data/spec/support/shared/functional/windows_script.rb +5 -18
  426. data/spec/support/shared/integration/knife_support.rb +14 -8
  427. data/spec/unit/application/apply_spec.rb +3 -0
  428. data/spec/unit/application/client_spec.rb +5 -1
  429. data/spec/unit/application_spec.rb +1 -9
  430. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
  431. data/spec/unit/client_spec.rb +7 -5
  432. data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
  433. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  434. data/spec/unit/data_bag_spec.rb +1 -1
  435. data/spec/unit/data_collector_spec.rb +38 -17
  436. data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
  437. data/spec/unit/environment_spec.rb +7 -7
  438. data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
  439. data/spec/unit/file_access_control_spec.rb +1 -1
  440. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  441. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  442. data/spec/unit/knife/bootstrap_spec.rb +36 -54
  443. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  444. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  445. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  446. data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
  447. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  448. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  449. data/spec/unit/knife/core/ui_spec.rb +16 -0
  450. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
  451. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  452. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  453. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  454. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  455. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  456. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  457. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  458. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  459. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  460. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  461. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  462. data/spec/unit/knife/ssh_spec.rb +10 -113
  463. data/spec/unit/knife/status_spec.rb +1 -1
  464. data/spec/unit/knife/supermarket_share_spec.rb +3 -5
  465. data/spec/unit/knife_spec.rb +18 -0
  466. data/spec/unit/lwrp_spec.rb +4 -4
  467. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  468. data/spec/unit/mixin/securable_spec.rb +1 -0
  469. data/spec/unit/mixin/user_context_spec.rb +9 -1
  470. data/spec/unit/node/attribute_spec.rb +2 -2
  471. data/spec/unit/node_spec.rb +24 -0
  472. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  473. data/spec/unit/property/state_spec.rb +12 -7
  474. data/spec/unit/property/validation_spec.rb +25 -1
  475. data/spec/unit/property_spec.rb +18 -15
  476. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  477. data/spec/unit/provider/apt_repository_spec.rb +9 -11
  478. data/spec/unit/provider/apt_update_spec.rb +12 -11
  479. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  480. data/spec/unit/provider/cron_spec.rb +2 -2
  481. data/spec/unit/provider/directory_spec.rb +4 -15
  482. data/spec/unit/provider/file_spec.rb +4 -4
  483. data/spec/unit/provider/git_spec.rb +44 -4
  484. data/spec/unit/provider/link_spec.rb +0 -1
  485. data/spec/unit/provider/log_spec.rb +3 -3
  486. data/spec/unit/provider/mdadm_spec.rb +3 -3
  487. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  488. data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
  489. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  490. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  491. data/spec/unit/provider/package/msu_spec.rb +3 -3
  492. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  493. data/spec/unit/provider/package/powershell_spec.rb +88 -96
  494. data/spec/unit/provider/package/rubygems_spec.rb +221 -31
  495. data/spec/unit/provider/package/snap_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  497. data/spec/unit/provider/package/windows_spec.rb +53 -30
  498. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  499. data/spec/unit/provider/remote_file_spec.rb +3 -4
  500. data/spec/unit/provider/service/arch_service_spec.rb +2 -3
  501. data/spec/unit/provider/service/debian_service_spec.rb +35 -14
  502. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  503. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  504. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  505. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  506. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  507. data/spec/unit/provider/service/windows_spec.rb +6 -2
  508. data/spec/unit/provider/subversion_spec.rb +4 -2
  509. data/spec/unit/provider/systemd_unit_spec.rb +24 -28
  510. data/spec/unit/provider/template_spec.rb +3 -4
  511. data/spec/unit/provider/zypper_repository_spec.rb +25 -75
  512. data/spec/unit/provider_resolver_spec.rb +11 -11
  513. data/spec/unit/provider_spec.rb +0 -1
  514. data/spec/unit/recipe_spec.rb +68 -0
  515. data/spec/unit/resource/alternatives_spec.rb +120 -0
  516. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  517. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  518. data/spec/unit/resource/apt_update_spec.rb +0 -18
  519. data/spec/unit/resource/archive_file_spec.rb +2 -11
  520. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  521. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  522. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  523. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  524. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  525. data/spec/unit/resource/cron_d_spec.rb +6 -48
  526. data/spec/unit/resource/cron_spec.rb +4 -10
  527. data/spec/unit/resource/gem_package_spec.rb +3 -3
  528. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  529. data/spec/unit/resource/link_spec.rb +0 -4
  530. data/spec/unit/resource/locale_spec.rb +0 -34
  531. data/spec/unit/resource/ohai_spec.rb +56 -2
  532. data/spec/unit/resource/plist_spec.rb +130 -0
  533. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  534. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  535. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  536. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  537. data/spec/unit/resource/service_spec.rb +4 -0
  538. data/spec/unit/resource/user_spec.rb +2 -2
  539. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  540. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  541. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  542. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  543. data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
  544. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  545. data/spec/unit/resource/windows_package_spec.rb +4 -1
  546. data/spec/unit/resource/windows_service_spec.rb +9 -0
  547. data/spec/unit/resource/windows_task_spec.rb +1 -1
  548. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  549. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  550. data/spec/unit/resource_reporter_spec.rb +1 -5
  551. data/spec/unit/resource_spec.rb +11 -4
  552. data/spec/unit/role_spec.rb +11 -11
  553. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  554. data/spec/unit/run_context_spec.rb +1 -1
  555. data/spec/unit/search/query_spec.rb +1 -1
  556. data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
  557. data/spec/unit/win32/security_spec.rb +3 -4
  558. data/tasks/rspec.rb +1 -1
  559. metadata +116 -87
  560. data/lib/chef/dsl/core.rb +0 -52
  561. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  562. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  563. data/lib/chef/provider/apt_preference.rb +0 -93
  564. data/lib/chef/provider/apt_repository.rb +0 -358
  565. data/lib/chef/provider/apt_update.rb +0 -79
  566. data/lib/chef/provider/log.rb +0 -43
  567. data/lib/chef/provider/mdadm.rb +0 -85
  568. data/lib/chef/provider/ohai.rb +0 -45
  569. data/lib/chef/resource/git.rb +0 -37
  570. data/spec/functional/resource/windows_font_spec.rb +0 -49
  571. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -34,8 +34,8 @@ class Chef
34
34
  def initialize(config: {}, knife_config: nil, ui: nil)
35
35
  @config = config
36
36
  unless knife_config.nil?
37
- # the knife_config argument becomes deprecated in Chef-16, don't use it
38
37
  @config = knife_config
38
+ Chef.deprecated(:knife_bootstrap_apis, "The knife_config option to the Bootstrap::ClientBuilder object is deprecated and has been renamed to just 'config'")
39
39
  end
40
40
  @ui = ui
41
41
  end
@@ -42,8 +42,8 @@ class Chef
42
42
  def initialize(config: {}, knife_config: nil, chef_config: {}, ui: nil)
43
43
  @config = config
44
44
  unless knife_config.nil?
45
- # the knife_config argument becomes deprecated in Chef-16, don't use it
46
45
  @config = knife_config
46
+ Chef.deprecated(:knife_bootstrap_apis, "The knife_config option to the Bootstrap::ClientBuilder object is deprecated and has been renamed to just 'config'")
47
47
  end
48
48
  @chef_config = chef_config
49
49
  @ui = ui
@@ -1,5 +1,5 @@
1
- <%= "https_proxy=\"#{knife_config[:bootstrap_proxy]}\" export https_proxy" if knife_config[:bootstrap_proxy] %>
2
- <%= "no_proxy=\"#{knife_config[:bootstrap_no_proxy]}\" export no_proxy" if knife_config[:bootstrap_no_proxy] %>
1
+ <%= "https_proxy=\"#{@config[:bootstrap_proxy]}\" export https_proxy" if @config[:bootstrap_proxy] %>
2
+ <%= "no_proxy=\"#{@config[:bootstrap_no_proxy]}\" export no_proxy" if @config[:bootstrap_no_proxy] %>
3
3
 
4
4
  if test "x$TMPDIR" = "x"; then
5
5
  tmp="/tmp"
@@ -37,7 +37,7 @@ capture_tmp_stderr() {
37
37
  # do_wget URL FILENAME
38
38
  do_wget() {
39
39
  echo "trying wget..."
40
- wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %> <%= knife_config[:bootstrap_wget_options] %> -O "$2" "$1" 2>$tmp_dir/stderr
40
+ wget <%= "--proxy=on " if @config[:bootstrap_proxy] %> <%= @config[:bootstrap_wget_options] %> -O "$2" "$1" 2>$tmp_dir/stderr
41
41
  rc=$?
42
42
  # check for 404
43
43
  grep "ERROR 404" $tmp_dir/stderr 2>&1 >/dev/null
@@ -57,7 +57,7 @@ do_wget() {
57
57
  # do_curl URL FILENAME
58
58
  do_curl() {
59
59
  echo "trying curl..."
60
- curl -sL <%= "--proxy \"#{knife_config[:bootstrap_proxy]}\" " if knife_config[:bootstrap_proxy] %> <%= knife_config[:bootstrap_curl_options] %> -D $tmp_dir/stderr -o "$2" "$1" 2>$tmp_dir/stderr
60
+ curl -sL <%= "--proxy \"#{@config[:bootstrap_proxy]}\" " if @config[:bootstrap_proxy] %> <%= @config[:bootstrap_curl_options] %> -D $tmp_dir/stderr -o "$2" "$1" 2>$tmp_dir/stderr
61
61
  rc=$?
62
62
  # check for 404
63
63
  grep "404 Not Found" $tmp_dir/stderr 2>&1 >/dev/null
@@ -164,14 +164,14 @@ do_download() {
164
164
 
165
165
  <%# Run any custom commands before installing chef-client -%>
166
166
  <%# Ex. wait for cloud-init to complete -%>
167
- <% if knife_config[:bootstrap_preinstall_command] %>
168
- <%= knife_config[:bootstrap_preinstall_command] %>
167
+ <% if @config[:bootstrap_preinstall_command] %>
168
+ <%= @config[:bootstrap_preinstall_command] %>
169
169
  <% end %>
170
170
 
171
- <% if knife_config[:bootstrap_install_command] %>
172
- <%= knife_config[:bootstrap_install_command] %>
171
+ <% if @config[:bootstrap_install_command] %>
172
+ <%= @config[:bootstrap_install_command] %>
173
173
  <% else %>
174
- install_sh="<%= knife_config[:bootstrap_url] ? knife_config[:bootstrap_url] : "https://omnitruck.chef.io/chef/install.sh" %>"
174
+ install_sh="<%= @config[:bootstrap_url] ? @config[:bootstrap_url] : "https://omnitruck.chef.io/chef/install.sh" %>"
175
175
  if test -f /usr/bin/<%= Chef::Dist::CLIENT %>; then
176
176
  echo "-----> Existing <%= Chef::Dist::PRODUCT %> installation detected"
177
177
  else
@@ -185,50 +185,50 @@ if test "x$tmp_dir" != "x"; then
185
185
  rm -r "$tmp_dir"
186
186
  fi
187
187
 
188
- mkdir -p /etc/chef
188
+ mkdir -p <%= ChefConfig::Config.etc_chef_dir(false) %>
189
189
 
190
190
  <% if client_pem -%>
191
- (umask 077 && (cat > /etc/chef/client.pem <<'EOP'
191
+ (umask 077 && (cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/client.pem <<'EOP'
192
192
  <%= ::File.read(::File.expand_path(client_pem)) %>
193
193
  EOP
194
194
  )) || exit 1
195
195
  <% end -%>
196
196
 
197
197
  <% if validation_key -%>
198
- (umask 077 && (cat > /etc/chef/validation.pem <<'EOP'
198
+ (umask 077 && (cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/validation.pem <<'EOP'
199
199
  <%= validation_key %>
200
200
  EOP
201
201
  )) || exit 1
202
202
  <% end -%>
203
203
 
204
204
  <% if encrypted_data_bag_secret -%>
205
- (umask 077 && (cat > /etc/chef/encrypted_data_bag_secret <<'EOP'
205
+ (umask 077 && (cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/encrypted_data_bag_secret <<'EOP'
206
206
  <%= encrypted_data_bag_secret %>
207
207
  EOP
208
208
  )) || exit 1
209
209
  <% end -%>
210
210
 
211
211
  <% unless trusted_certs.empty? -%>
212
- mkdir -p /etc/chef/trusted_certs
212
+ mkdir -p <%= ChefConfig::Config.etc_chef_dir(false) %>/trusted_certs
213
213
  <%= trusted_certs %>
214
214
  <% end -%>
215
215
 
216
216
  <%# Generate Ohai Hints -%>
217
- <% unless @chef_config[:knife][:hints].nil? || @chef_config[:knife][:hints].empty? -%>
218
- mkdir -p /etc/chef/ohai/hints
217
+ <% unless @config[:hints].nil? || @config[:hints].empty? -%>
218
+ mkdir -p <%= ChefConfig::Config.etc_chef_dir(false) %>/ohai/hints
219
219
 
220
- <% @chef_config[:knife][:hints].each do |name, hash| -%>
221
- cat > /etc/chef/ohai/hints/<%= name %>.json <<'EOP'
220
+ <% @config[:hints].each do |name, hash| -%>
221
+ cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/ohai/hints/<%= name %>.json <<'EOP'
222
222
  <%= Chef::JSONCompat.to_json(hash) %>
223
223
  EOP
224
224
  <% end -%>
225
225
  <% end -%>
226
226
 
227
- cat > /etc/chef/client.rb <<'EOP'
227
+ cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/client.rb <<'EOP'
228
228
  <%= config_content %>
229
229
  EOP
230
230
 
231
- cat > /etc/chef/first-boot.json <<'EOP'
231
+ cat > <%= ChefConfig::Config.etc_chef_dir(false) %>/first-boot.json <<'EOP'
232
232
  <%= Chef::JSONCompat.to_json(first_boot) %>
233
233
  EOP
234
234
 
@@ -21,7 +21,7 @@
21
21
  @rem the line is read. See help for the /E switch from cmd.exe /? .
22
22
  @setlocal ENABLEDELAYEDEXPANSION
23
23
 
24
- <%= "SETX HTTP_PROXY \"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] %>
24
+ <%= "SETX HTTP_PROXY \"#{@config[:bootstrap_proxy]}\"" if @config[:bootstrap_proxy] %>
25
25
 
26
26
  @set BOOTSTRAP_DIRECTORY=<%= bootstrap_directory %>
27
27
  @echo Checking for existing directory "%BOOTSTRAP_DIRECTORY%"...
@@ -92,10 +92,10 @@ goto architecture_select
92
92
  goto Version10.0
93
93
 
94
94
  :architecture_select
95
- <% if knife_config[:architecture] %>
96
- @set MACHINE_ARCH=<%= knife_config[:architecture] %>
95
+ <% if @config[:architecture] %>
96
+ @set MACHINE_ARCH=<%= @config[:architecture] %>
97
97
 
98
- <% if knife_config[:architecture] == "x86_64" %>
98
+ <% if @config[:architecture] == "x86_64" %>
99
99
  IF "%PROCESSOR_ARCHITECTURE%"=="x86" IF not defined PROCESSOR_ARCHITEW6432 (
100
100
  echo You specified bootstrap_architecture as x86_64 but the target machine is i386. A 64 bit program cannot run on a 32 bit machine. > "&2"
101
101
  echo Exiting without bootstrapping. > "&2"
@@ -109,20 +109,20 @@ goto Version10.0
109
109
  goto chef_installed
110
110
 
111
111
  :chef_installed
112
- @echo Checking for existing chef installation
112
+ @echo Checking for existing <%= Chef::Dist::PRODUCT %> installation
113
113
  WHERE <%= Chef::Dist::CLIENT %> >nul 2>nul
114
114
  If !ERRORLEVEL!==0 (
115
- @echo Existing Chef installation detected, skipping download
115
+ @echo Existing <%= Chef::Dist::PRODUCT %> installation detected, skipping download
116
116
  goto key_create
117
117
  ) else (
118
- @echo No existing installation of chef detected
118
+ @echo No existing installation of <%= Chef::Dist::PRODUCT %> detected
119
119
  goto install
120
120
  )
121
121
 
122
122
  :install
123
123
  @rem If user has provided the custom installation command, execute it
124
- <% if @chef_config[:knife][:bootstrap_install_command] %>
125
- <%= @chef_config[:knife][:bootstrap_install_command] %>
124
+ <% if @config[:bootstrap_install_command] %>
125
+ <%= @config[:bootstrap_install_command] %>
126
126
  <% else %>
127
127
  @rem Install Chef using the MSI installer
128
128
 
@@ -202,12 +202,10 @@ If !ERRORLEVEL!==0 (
202
202
  ) else (
203
203
  @echo Installation completed successfully
204
204
  del /f /q "%CHEF_CLIENT_MSI_LOG_PATH%"
205
- )
205
+ )
206
206
 
207
207
  <% end %>
208
208
 
209
- @rem This line is required to separate the key_create label from the "block boundary"
210
- @rem Removing these lines will cause the error "The system cannot find the batch label specified - key_create"
211
209
  :key_create
212
210
  @endlocal
213
211
 
@@ -246,12 +244,12 @@ echo Validation key written.
246
244
  <% end -%>
247
245
 
248
246
  <%# Generate Ohai Hints -%>
249
- <% unless @chef_config[:knife][:hints].nil? || @chef_config[:knife][:hints].empty? -%>
247
+ <% unless @config[:hints].nil? || @config[:hints].empty? -%>
250
248
  @if NOT EXIST <%= bootstrap_directory %>\ohai\hints (
251
249
  mkdir <%= bootstrap_directory %>\ohai\hints
252
250
  )
253
251
 
254
- <% @chef_config[:knife][:hints].each do |name, hash| -%>
252
+ <% @config[:hints].each do |name, hash| -%>
255
253
  > <%= bootstrap_directory %>\ohai\hints\<%= name %>.json (
256
254
  <%= escape_and_echo(hash.to_json) %>
257
255
  )
@@ -274,5 +272,5 @@ echo Validation key written.
274
272
  <%= client_d %>
275
273
  <% end -%>
276
274
 
277
- @echo Starting chef to bootstrap the node...
275
+ @echo Starting <%= Chef::Dist::CLIENT %> to bootstrap the node...
278
276
  <%= start_chef %>
@@ -322,7 +322,6 @@ class Chef
322
322
 
323
323
  class RemoteExecutionFailed < StandardError
324
324
  attr_reader :exit_status, :command, :hostname, :stdout, :stderr
325
-
326
325
  def initialize(hostname, command, result)
327
326
  @hostname = hostname
328
327
  @exit_status = result.exit_status
@@ -73,7 +73,7 @@ class Chef
73
73
  manifest = cookbook.cookbook_manifest
74
74
 
75
75
  basedir = File.join(config[:download_directory], "#{@cookbook_name}-#{cookbook.version}")
76
- if File.exist?(basedir)
76
+ if File.exists?(basedir)
77
77
  if config[:force]
78
78
  Chef::Log.trace("Deleting #{basedir}")
79
79
  FileUtils.rm_rf(basedir)
@@ -62,7 +62,7 @@ class Chef
62
62
  def generate_metadata(cookbook)
63
63
  Array(config[:cookbook_path]).reverse_each do |path|
64
64
  file = File.expand_path(File.join(path, cookbook, "metadata.rb"))
65
- if File.exist?(file)
65
+ if File.exists?(file)
66
66
  generate_metadata_from_file(cookbook, file)
67
67
  else
68
68
  validate_metadata_json(path, cookbook)
@@ -33,6 +33,8 @@ class Chef
33
33
  class BootstrapContext
34
34
 
35
35
  attr_accessor :client_pem
36
+ attr_accessor :config
37
+ attr_accessor :chef_config
36
38
 
37
39
  def initialize(config, run_list, chef_config, secret = nil)
38
40
  @config = config
@@ -42,13 +44,13 @@ class Chef
42
44
  end
43
45
 
44
46
  def bootstrap_environment
45
- @config[:environment]
47
+ config[:environment]
46
48
  end
47
49
 
48
50
  def validation_key
49
- if @chef_config[:validation_key] &&
50
- File.exist?(File.expand_path(@chef_config[:validation_key]))
51
- IO.read(File.expand_path(@chef_config[:validation_key]))
51
+ if chef_config[:validation_key] &&
52
+ File.exist?(File.expand_path(chef_config[:validation_key]))
53
+ IO.read(File.expand_path(chef_config[:validation_key]))
52
54
  else
53
55
  false
54
56
  end
@@ -69,18 +71,18 @@ class Chef
69
71
  end
70
72
 
71
73
  def get_log_location
72
- if !(@chef_config[:config_log_location].class == IO ) && (@chef_config[:config_log_location].nil? || @chef_config[:config_log_location].to_s.empty?)
74
+ if !(chef_config[:config_log_location].class == IO ) && (chef_config[:config_log_location].nil? || chef_config[:config_log_location].to_s.empty?)
73
75
  "STDOUT"
74
- elsif @chef_config[:config_log_location].equal?(:win_evt)
76
+ elsif chef_config[:config_log_location].equal?(:win_evt)
75
77
  raise "The value :win_evt is not supported for config_log_location on Linux Platforms \n"
76
- elsif @chef_config[:config_log_location].equal?(:syslog)
78
+ elsif chef_config[:config_log_location].equal?(:syslog)
77
79
  ":syslog"
78
- elsif @chef_config[:config_log_location].equal?(STDOUT)
80
+ elsif chef_config[:config_log_location].equal?(STDOUT)
79
81
  "STDOUT"
80
- elsif @chef_config[:config_log_location].equal?(STDERR)
82
+ elsif chef_config[:config_log_location].equal?(STDERR)
81
83
  "STDERR"
82
- elsif @chef_config[:config_log_location]
83
- %Q{"#{@chef_config[:config_log_location]}"}
84
+ elsif chef_config[:config_log_location]
85
+ %Q{"#{chef_config[:config_log_location]}"}
84
86
  else
85
87
  "STDOUT"
86
88
  end
@@ -88,43 +90,43 @@ class Chef
88
90
 
89
91
  def config_content
90
92
  client_rb = <<~CONFIG
91
- chef_server_url "#{@chef_config[:chef_server_url]}"
92
- validation_client_name "#{@chef_config[:validation_client_name]}"
93
+ chef_server_url "#{chef_config[:chef_server_url]}"
94
+ validation_client_name "#{chef_config[:validation_client_name]}"
93
95
  CONFIG
94
96
 
95
- unless @chef_config[:chef_license].nil?
96
- client_rb << "chef_license \"#{@chef_config[:chef_license]}\"\n"
97
+ unless chef_config[:chef_license].nil?
98
+ client_rb << "chef_license \"#{chef_config[:chef_license]}\"\n"
97
99
  end
98
100
 
99
- unless @chef_config[:config_log_level].nil? || @chef_config[:config_log_level].empty?
100
- client_rb << %Q{log_level :#{@chef_config[:config_log_level]}\n}
101
+ unless chef_config[:config_log_level].nil? || chef_config[:config_log_level].empty?
102
+ client_rb << %Q{log_level :#{chef_config[:config_log_level]}\n}
101
103
  end
102
104
 
103
105
  client_rb << "log_location #{get_log_location}\n"
104
106
 
105
- if @config[:chef_node_name]
106
- client_rb << %Q{node_name "#{@config[:chef_node_name]}"\n}
107
+ if config[:chef_node_name]
108
+ client_rb << %Q{node_name "#{config[:chef_node_name]}"\n}
107
109
  else
108
110
  client_rb << "# Using default node name (fqdn)\n"
109
111
  end
110
112
 
111
113
  # We configure :verify_api_cert only when it's overridden on the CLI
112
114
  # or when specified in the knife config.
113
- if !@config[:node_verify_api_cert].nil? || knife_config.key?(:verify_api_cert)
114
- value = @config[:node_verify_api_cert].nil? ? knife_config[:verify_api_cert] : @config[:node_verify_api_cert]
115
+ if !config[:node_verify_api_cert].nil? || config.key?(:verify_api_cert)
116
+ value = config[:node_verify_api_cert].nil? ? config[:verify_api_cert] : config[:node_verify_api_cert]
115
117
  client_rb << %Q{verify_api_cert #{value}\n}
116
118
  end
117
119
 
118
120
  # We configure :ssl_verify_mode only when it's overridden on the CLI
119
121
  # or when specified in the knife config.
120
- if @config[:node_ssl_verify_mode] || knife_config.key?(:ssl_verify_mode)
121
- value = case @config[:node_ssl_verify_mode]
122
+ if config[:node_ssl_verify_mode] || config.key?(:ssl_verify_mode)
123
+ value = case config[:node_ssl_verify_mode]
122
124
  when "peer"
123
125
  :verify_peer
124
126
  when "none"
125
127
  :verify_none
126
128
  when nil
127
- knife_config[:ssl_verify_mode]
129
+ config[:ssl_verify_mode]
128
130
  else
129
131
  nil
130
132
  end
@@ -134,27 +136,27 @@ class Chef
134
136
  end
135
137
  end
136
138
 
137
- if @config[:ssl_verify_mode]
138
- client_rb << %Q{ssl_verify_mode :#{knife_config[:ssl_verify_mode]}\n}
139
+ if config[:ssl_verify_mode]
140
+ client_rb << %Q{ssl_verify_mode :#{config[:ssl_verify_mode]}\n}
139
141
  end
140
142
 
141
- if knife_config[:bootstrap_proxy]
142
- client_rb << %Q{http_proxy "#{knife_config[:bootstrap_proxy]}"\n}
143
- client_rb << %Q{https_proxy "#{knife_config[:bootstrap_proxy]}"\n}
143
+ if config[:bootstrap_proxy]
144
+ client_rb << %Q{http_proxy "#{config[:bootstrap_proxy]}"\n}
145
+ client_rb << %Q{https_proxy "#{config[:bootstrap_proxy]}"\n}
144
146
  end
145
147
 
146
- if knife_config[:bootstrap_proxy_user]
147
- client_rb << %Q{http_proxy_user "#{knife_config[:bootstrap_proxy_user]}"\n}
148
- client_rb << %Q{https_proxy_user "#{knife_config[:bootstrap_proxy_user]}"\n}
148
+ if config[:bootstrap_proxy_user]
149
+ client_rb << %Q{http_proxy_user "#{config[:bootstrap_proxy_user]}"\n}
150
+ client_rb << %Q{https_proxy_user "#{config[:bootstrap_proxy_user]}"\n}
149
151
  end
150
152
 
151
- if knife_config[:bootstrap_proxy_pass]
152
- client_rb << %Q{http_proxy_pass "#{knife_config[:bootstrap_proxy_pass]}"\n}
153
- client_rb << %Q{https_proxy_pass "#{knife_config[:bootstrap_proxy_pass]}"\n}
153
+ if config[:bootstrap_proxy_pass]
154
+ client_rb << %Q{http_proxy_pass "#{config[:bootstrap_proxy_pass]}"\n}
155
+ client_rb << %Q{https_proxy_pass "#{config[:bootstrap_proxy_pass]}"\n}
154
156
  end
155
157
 
156
- if knife_config[:bootstrap_no_proxy]
157
- client_rb << %Q{no_proxy "#{knife_config[:bootstrap_no_proxy]}"\n}
158
+ if config[:bootstrap_no_proxy]
159
+ client_rb << %Q{no_proxy "#{config[:bootstrap_no_proxy]}"\n}
158
160
  end
159
161
 
160
162
  if encrypted_data_bag_secret
@@ -165,41 +167,43 @@ class Chef
165
167
  client_rb << %Q{trusted_certs_dir "/etc/chef/trusted_certs"\n}
166
168
  end
167
169
 
168
- if Chef::Config[:fips]
170
+ if chef_config[:fips]
169
171
  client_rb << "fips true\n"
170
172
  end
171
173
 
174
+ unless chef_config[:file_cache_path].nil?
175
+ client_rb << "file_cache_path \"#{chef_config[:file_cache_path]}\"\n"
176
+ end
177
+
178
+ unless chef_config[:file_backup_path].nil?
179
+ client_rb << "file_backup_path \"#{chef_config[:file_backup_path]}\"\n"
180
+ end
181
+
172
182
  client_rb
173
183
  end
174
184
 
175
185
  def start_chef
176
186
  # If the user doesn't have a client path configure, let bash use the PATH for what it was designed for
177
- client_path = @chef_config[:chef_client_path] || "#{Chef::Dist::CLIENT}"
187
+ client_path = chef_config[:chef_client_path] || "#{Chef::Dist::CLIENT}"
178
188
  s = "#{client_path} -j /etc/chef/first-boot.json"
179
- if @config[:verbosity] && @config[:verbosity] >= 3
189
+ if config[:verbosity] && config[:verbosity] >= 3
180
190
  s << " -l trace"
181
- elsif @config[:verbosity] && @config[:verbosity] >= 2
191
+ elsif config[:verbosity] && config[:verbosity] >= 2
182
192
  s << " -l debug"
183
193
  end
184
194
  s << " -E #{bootstrap_environment}" unless bootstrap_environment.nil?
185
- s << " --no-color" unless @config[:color]
195
+ s << " --no-color" unless config[:color]
186
196
  s
187
197
  end
188
198
 
189
- # XXX: this reads values only out of the config file and is NOT merged with the CLI options, and it is most likely
190
- # a bug to be using this accessor and we should be using config and not knife_config.
191
- def knife_config
192
- @chef_config.key?(:knife) ? @chef_config[:knife] : {}
193
- end
194
-
195
199
  #
196
200
  # Returns the version of Chef to install (as recognized by the Omnitruck API)
197
201
  #
198
202
  # @return [String] download version string
199
203
  def version_to_install
200
- return @config[:bootstrap_version] if @config[:bootstrap_version]
204
+ return config[:bootstrap_version] if config[:bootstrap_version]
201
205
 
202
- if @config[:channel] == "stable"
206
+ if config[:channel] == "stable"
203
207
  Chef::VERSION.split(".").first
204
208
  else
205
209
  "latest"
@@ -207,16 +211,15 @@ class Chef
207
211
  end
208
212
 
209
213
  def first_boot
210
- (@config[:first_boot_attributes] || {}).tap do |attributes|
211
- if @config[:policy_name] && @config[:policy_group]
212
- attributes[:policy_name] = @config[:policy_name]
213
- attributes[:policy_group] = @config[:policy_group]
214
+ (config[:first_boot_attributes] = Mash.new(config[:first_boot_attributes]) || Mash.new).tap do |attributes|
215
+ if config[:policy_name] && config[:policy_group]
216
+ attributes[:policy_name] = config[:policy_name]
217
+ attributes[:policy_group] = config[:policy_group]
214
218
  else
215
219
  attributes[:run_list] = @run_list
216
220
  end
217
-
218
221
  attributes.delete(:run_list) if attributes[:policy_name] && !attributes[:policy_name].empty?
219
- attributes.merge!(tags: @config[:tags]) if @config[:tags] && !@config[:tags].empty?
222
+ attributes.merge!(tags: config[:tags]) if config[:tags] && !config[:tags].empty?
220
223
  end
221
224
  end
222
225
 
@@ -226,8 +229,8 @@ class Chef
226
229
  # This string should contain both the commands necessary to both create the files, as well as their content
227
230
  def trusted_certs_content
228
231
  content = ""
229
- if @chef_config[:trusted_certs_dir]
230
- Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(@chef_config[:trusted_certs_dir]), "*.{crt,pem}")).each do |cert|
232
+ if chef_config[:trusted_certs_dir]
233
+ Dir.glob(File.join(Chef::Util::PathHelper.escape_glob_dir(chef_config[:trusted_certs_dir]), "*.{crt,pem}")).each do |cert|
231
234
  content << "cat > /etc/chef/trusted_certs/#{File.basename(cert)} <<'EOP'\n" +
232
235
  IO.read(File.expand_path(cert)) + "\nEOP\n"
233
236
  end
@@ -237,8 +240,8 @@ class Chef
237
240
 
238
241
  def client_d_content
239
242
  content = ""
240
- if @chef_config[:client_d_dir] && File.exist?(@chef_config[:client_d_dir])
241
- root = Pathname(@chef_config[:client_d_dir])
243
+ if chef_config[:client_d_dir] && File.exist?(chef_config[:client_d_dir])
244
+ root = Pathname(chef_config[:client_d_dir])
242
245
  root.find do |f|
243
246
  relative = f.relative_path_from(root)
244
247
  if f != root