chef-dk 0.11.2 → 0.12.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 (325) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +186 -190
  3. data/Gemfile +30 -26
  4. data/LICENSE +201 -201
  5. data/README.md +307 -307
  6. data/Rakefile +29 -27
  7. data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +27 -0
  8. data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +284 -0
  9. data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +52 -0
  10. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +51 -0
  11. data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -0
  12. data/acceptance/Gemfile +11 -0
  13. data/acceptance/README.md +132 -0
  14. data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -0
  15. data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -0
  16. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
  17. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
  18. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
  19. data/acceptance/trivial/.kitchen.yml +7 -0
  20. data/acceptance/trivial/test/integration/chefdk-current-install/inspec/chef_client_spec.rb +5 -0
  21. data/bin/chef +25 -25
  22. data/chef-dk.gemspec +64 -64
  23. data/lib/chef-dk.rb +19 -19
  24. data/lib/chef-dk/authenticated_http.rb +40 -40
  25. data/lib/chef-dk/builtin_commands.rb +60 -60
  26. data/lib/chef-dk/chef_runner.rb +107 -107
  27. data/lib/chef-dk/cli.rb +200 -200
  28. data/lib/chef-dk/command/base.rb +79 -79
  29. data/lib/chef-dk/command/clean_policy_cookbooks.rb +116 -116
  30. data/lib/chef-dk/command/clean_policy_revisions.rb +113 -113
  31. data/lib/chef-dk/command/delete_policy.rb +122 -122
  32. data/lib/chef-dk/command/delete_policy_group.rb +122 -122
  33. data/lib/chef-dk/command/diff.rb +316 -316
  34. data/lib/chef-dk/command/env.rb +90 -90
  35. data/lib/chef-dk/command/exec.rb +45 -45
  36. data/lib/chef-dk/command/export.rb +157 -157
  37. data/lib/chef-dk/command/gem.rb +47 -47
  38. data/lib/chef-dk/command/generate.rb +120 -120
  39. data/lib/chef-dk/command/generator_commands.rb +80 -80
  40. data/lib/chef-dk/command/generator_commands/app.rb +107 -107
  41. data/lib/chef-dk/command/generator_commands/attribute.rb +37 -37
  42. data/lib/chef-dk/command/generator_commands/base.rb +148 -148
  43. data/lib/chef-dk/command/generator_commands/cookbook.rb +153 -153
  44. data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +100 -100
  45. data/lib/chef-dk/command/generator_commands/cookbook_file.rb +45 -45
  46. data/lib/chef-dk/command/generator_commands/generator_generator.rb +177 -177
  47. data/lib/chef-dk/command/generator_commands/lwrp.rb +36 -36
  48. data/lib/chef-dk/command/generator_commands/policyfile.rb +127 -127
  49. data/lib/chef-dk/command/generator_commands/recipe.rb +36 -36
  50. data/lib/chef-dk/command/generator_commands/repo.rb +125 -125
  51. data/lib/chef-dk/command/generator_commands/template.rb +46 -46
  52. data/lib/chef-dk/command/install.rb +121 -121
  53. data/lib/chef-dk/command/provision.rb +438 -438
  54. data/lib/chef-dk/command/push.rb +118 -118
  55. data/lib/chef-dk/command/push_archive.rb +126 -126
  56. data/lib/chef-dk/command/shell_init.rb +180 -180
  57. data/lib/chef-dk/command/show_policy.rb +165 -165
  58. data/lib/chef-dk/command/undelete.rb +155 -155
  59. data/lib/chef-dk/command/update.rb +148 -148
  60. data/lib/chef-dk/command/verify.rb +534 -534
  61. data/lib/chef-dk/commands_map.rb +115 -115
  62. data/lib/chef-dk/completions/bash.sh.erb +5 -5
  63. data/lib/chef-dk/completions/chef.fish.erb +10 -10
  64. data/lib/chef-dk/completions/zsh.zsh.erb +21 -21
  65. data/lib/chef-dk/component_test.rb +194 -173
  66. data/lib/chef-dk/configurable.rb +69 -69
  67. data/lib/chef-dk/cookbook_metadata.rb +45 -45
  68. data/lib/chef-dk/cookbook_omnifetch.rb +32 -32
  69. data/lib/chef-dk/cookbook_profiler/git.rb +151 -151
  70. data/lib/chef-dk/cookbook_profiler/identifiers.rb +72 -72
  71. data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -32
  72. data/lib/chef-dk/exceptions.rb +129 -129
  73. data/lib/chef-dk/generator.rb +163 -163
  74. data/lib/chef-dk/helpers.rb +159 -159
  75. data/lib/chef-dk/pager.rb +106 -106
  76. data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +138 -138
  77. data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +54 -54
  78. data/lib/chef-dk/policyfile/community_cookbook_source.rb +97 -97
  79. data/lib/chef-dk/policyfile/comparison_base.rb +124 -124
  80. data/lib/chef-dk/policyfile/cookbook_location_specification.rb +154 -154
  81. data/lib/chef-dk/policyfile/cookbook_locks.rb +466 -466
  82. data/lib/chef-dk/policyfile/cookbook_sources.rb +22 -22
  83. data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +90 -90
  84. data/lib/chef-dk/policyfile/differ.rb +266 -266
  85. data/lib/chef-dk/policyfile/dsl.rb +261 -261
  86. data/lib/chef-dk/policyfile/lister.rb +232 -232
  87. data/lib/chef-dk/policyfile/null_cookbook_source.rb +45 -45
  88. data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +124 -124
  89. data/lib/chef-dk/policyfile/reports/install.rb +70 -70
  90. data/lib/chef-dk/policyfile/reports/table_printer.rb +58 -58
  91. data/lib/chef-dk/policyfile/reports/upload.rb +70 -70
  92. data/lib/chef-dk/policyfile/solution_dependencies.rb +298 -298
  93. data/lib/chef-dk/policyfile/storage_config.rb +100 -100
  94. data/lib/chef-dk/policyfile/undo_record.rb +142 -142
  95. data/lib/chef-dk/policyfile/undo_stack.rb +130 -130
  96. data/lib/chef-dk/policyfile/uploader.rb +213 -213
  97. data/lib/chef-dk/policyfile_compiler.rb +419 -419
  98. data/lib/chef-dk/policyfile_lock.rb +552 -552
  99. data/lib/chef-dk/policyfile_services/clean_policies.rb +95 -95
  100. data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +125 -125
  101. data/lib/chef-dk/policyfile_services/export_repo.rb +421 -414
  102. data/lib/chef-dk/policyfile_services/install.rb +126 -126
  103. data/lib/chef-dk/policyfile_services/push.rb +114 -114
  104. data/lib/chef-dk/policyfile_services/push_archive.rb +204 -204
  105. data/lib/chef-dk/policyfile_services/rm_policy.rb +142 -142
  106. data/lib/chef-dk/policyfile_services/rm_policy_group.rb +86 -86
  107. data/lib/chef-dk/policyfile_services/show_policy.rb +237 -237
  108. data/lib/chef-dk/policyfile_services/undelete.rb +108 -108
  109. data/lib/chef-dk/policyfile_services/update_attributes.rb +104 -104
  110. data/lib/chef-dk/service_exception_inspectors.rb +25 -25
  111. data/lib/chef-dk/service_exception_inspectors/base.rb +40 -40
  112. data/lib/chef-dk/service_exception_inspectors/http.rb +121 -121
  113. data/lib/chef-dk/service_exceptions.rb +143 -143
  114. data/lib/chef-dk/shell_out.rb +36 -36
  115. data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -3
  116. data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +102 -102
  117. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +9 -9
  118. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +54 -54
  119. data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -16
  120. data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +28 -28
  121. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +27 -27
  122. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -7
  123. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -3
  124. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -8
  125. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +58 -58
  126. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +3 -3
  127. data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +6 -6
  128. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +9 -9
  129. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +12 -12
  130. data/lib/chef-dk/skeletons/code_generator/files/default/repo/policies/README.md +24 -24
  131. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +9 -9
  132. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +12 -12
  133. data/lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb +8 -8
  134. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +2 -2
  135. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +2 -2
  136. data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -8
  137. data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +97 -97
  138. data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -12
  139. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +117 -117
  140. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -24
  141. data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -23
  142. data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +8 -8
  143. data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +27 -27
  144. data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +67 -67
  145. data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -32
  146. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +3 -3
  147. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apache2.erb +201 -201
  148. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +339 -339
  149. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +674 -674
  150. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +21 -21
  151. data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +25 -25
  152. data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -4
  153. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +21 -21
  154. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +32 -32
  155. data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +7 -7
  156. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +5 -5
  157. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +20 -20
  158. data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +11 -11
  159. data/lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb +9 -9
  160. data/lib/chef-dk/ui.rb +58 -58
  161. data/lib/chef-dk/version.rb +20 -20
  162. data/lib/kitchen/provisioner/policyfile_zero.rb +194 -194
  163. data/spec/shared/a_file_generator.rb +125 -125
  164. data/spec/shared/a_generated_file.rb +12 -12
  165. data/spec/shared/command_with_ui_object.rb +11 -11
  166. data/spec/shared/custom_generator_cookbook.rb +130 -130
  167. data/spec/shared/fixture_cookbook_checksums.rb +47 -47
  168. data/spec/shared/setup_git_cookbooks.rb +53 -53
  169. data/spec/spec_helper.rb +51 -50
  170. data/spec/test_helpers.rb +84 -84
  171. data/spec/unit/chef_runner_spec.rb +139 -139
  172. data/spec/unit/cli_spec.rb +357 -357
  173. data/spec/unit/command/base_spec.rb +169 -169
  174. data/spec/unit/command/clean_policy_cookbooks_spec.rb +181 -181
  175. data/spec/unit/command/clean_policy_revisions_spec.rb +181 -181
  176. data/spec/unit/command/delete_policy_group_spec.rb +207 -207
  177. data/spec/unit/command/delete_policy_spec.rb +207 -207
  178. data/spec/unit/command/diff_spec.rb +312 -312
  179. data/spec/unit/command/env_spec.rb +52 -52
  180. data/spec/unit/command/exec_spec.rb +179 -179
  181. data/spec/unit/command/export_spec.rb +200 -200
  182. data/spec/unit/command/generate_spec.rb +142 -142
  183. data/spec/unit/command/generator_commands/app_spec.rb +169 -169
  184. data/spec/unit/command/generator_commands/attribute_spec.rb +32 -32
  185. data/spec/unit/command/generator_commands/base_spec.rb +136 -136
  186. data/spec/unit/command/generator_commands/cookbook_file_spec.rb +32 -32
  187. data/spec/unit/command/generator_commands/cookbook_spec.rb +450 -450
  188. data/spec/unit/command/generator_commands/generator_generator_spec.rb +229 -229
  189. data/spec/unit/command/generator_commands/lwrp_spec.rb +32 -32
  190. data/spec/unit/command/generator_commands/policyfile_spec.rb +225 -225
  191. data/spec/unit/command/generator_commands/recipe_spec.rb +34 -34
  192. data/spec/unit/command/generator_commands/repo_spec.rb +367 -367
  193. data/spec/unit/command/generator_commands/template_spec.rb +32 -32
  194. data/spec/unit/command/install_spec.rb +179 -179
  195. data/spec/unit/command/provision_spec.rb +592 -592
  196. data/spec/unit/command/push_archive_spec.rb +153 -153
  197. data/spec/unit/command/push_spec.rb +199 -199
  198. data/spec/unit/command/shell_init_spec.rb +329 -329
  199. data/spec/unit/command/show_policy_spec.rb +235 -235
  200. data/spec/unit/command/undelete_spec.rb +246 -246
  201. data/spec/unit/command/update_spec.rb +275 -275
  202. data/spec/unit/command/verify_spec.rb +325 -325
  203. data/spec/unit/commands_map_spec.rb +57 -57
  204. data/spec/unit/component_test_spec.rb +126 -126
  205. data/spec/unit/configurable_spec.rb +41 -41
  206. data/spec/unit/cookbook_metadata_spec.rb +98 -98
  207. data/spec/unit/cookbook_profiler/git_spec.rb +176 -176
  208. data/spec/unit/cookbook_profiler/identifiers_spec.rb +83 -83
  209. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -9
  210. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -9
  211. data/spec/unit/fixtures/command/cli_test_command.rb +26 -26
  212. data/spec/unit/fixtures/command/explicit_path_example.rb +7 -7
  213. data/spec/unit/fixtures/configurable/test_config_loader.rb +5 -5
  214. data/spec/unit/fixtures/configurable/test_configurable.rb +10 -10
  215. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  216. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -3
  217. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  218. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -96
  219. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  220. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  221. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -16
  222. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -3
  223. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -4
  224. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -96
  225. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -8
  226. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -8
  227. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -16
  228. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -3
  229. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -4
  230. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -96
  231. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -8
  232. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -8
  233. data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1321 -1321
  234. data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -2987
  235. data/spec/unit/fixtures/cookbooks_api/universe.json +1 -1
  236. data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -36
  237. data/spec/unit/fixtures/dev_cookbooks/README.md +16 -16
  238. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -2
  239. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -5
  240. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -3
  241. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -2
  242. data/spec/unit/fixtures/example_cookbook/.gitignore +17 -17
  243. data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -16
  244. data/spec/unit/fixtures/example_cookbook/Berksfile +3 -3
  245. data/spec/unit/fixtures/example_cookbook/README.md +4 -4
  246. data/spec/unit/fixtures/example_cookbook/chefignore +96 -96
  247. data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -8
  248. data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -8
  249. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +17 -17
  250. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +16 -16
  251. data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +3 -3
  252. data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +4 -4
  253. data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +96 -96
  254. data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +5 -5
  255. data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +8 -8
  256. data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +17 -17
  257. data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +16 -16
  258. data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +3 -3
  259. data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +4 -4
  260. data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +96 -96
  261. data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +8 -8
  262. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +4 -4
  263. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +96 -96
  264. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +8 -8
  265. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +8 -8
  266. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +3 -3
  267. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +4 -4
  268. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +96 -96
  269. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +9 -9
  270. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +8 -8
  271. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -16
  272. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -3
  273. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -4
  274. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -96
  275. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/extra/extra_file.txt +0 -0
  276. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -8
  277. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -8
  278. data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -2
  279. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -16
  280. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -4
  281. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -8
  282. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -8
  283. data/spec/unit/generator_spec.rb +120 -120
  284. data/spec/unit/helpers_spec.rb +92 -92
  285. data/spec/unit/pager_spec.rb +119 -119
  286. data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +93 -93
  287. data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -34
  288. data/spec/unit/policyfile/community_cookbook_source_spec.rb +84 -84
  289. data/spec/unit/policyfile/comparison_base_spec.rb +343 -343
  290. data/spec/unit/policyfile/cookbook_location_specification_spec.rb +277 -277
  291. data/spec/unit/policyfile/cookbook_locks_spec.rb +529 -529
  292. data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +130 -130
  293. data/spec/unit/policyfile/differ_spec.rb +687 -687
  294. data/spec/unit/policyfile/lister_spec.rb +272 -272
  295. data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -35
  296. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +92 -92
  297. data/spec/unit/policyfile/reports/install_spec.rb +115 -115
  298. data/spec/unit/policyfile/reports/upload_spec.rb +96 -96
  299. data/spec/unit/policyfile/solution_dependencies_spec.rb +145 -145
  300. data/spec/unit/policyfile/storage_config_spec.rb +172 -172
  301. data/spec/unit/policyfile/undo_record_spec.rb +260 -260
  302. data/spec/unit/policyfile/undo_stack_spec.rb +266 -266
  303. data/spec/unit/policyfile/uploader_spec.rb +410 -410
  304. data/spec/unit/policyfile_demands_spec.rb +1203 -1203
  305. data/spec/unit/policyfile_evaluation_spec.rb +642 -642
  306. data/spec/unit/policyfile_lock_build_spec.rb +1056 -1056
  307. data/spec/unit/policyfile_lock_install_spec.rb +138 -138
  308. data/spec/unit/policyfile_lock_serialization_spec.rb +425 -425
  309. data/spec/unit/policyfile_lock_validation_spec.rb +611 -611
  310. data/spec/unit/policyfile_services/clean_policies_spec.rb +236 -236
  311. data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +275 -275
  312. data/spec/unit/policyfile_services/export_repo_spec.rb +481 -481
  313. data/spec/unit/policyfile_services/install_spec.rb +211 -211
  314. data/spec/unit/policyfile_services/push_archive_spec.rb +378 -378
  315. data/spec/unit/policyfile_services/push_spec.rb +233 -233
  316. data/spec/unit/policyfile_services/rm_policy_group_spec.rb +241 -241
  317. data/spec/unit/policyfile_services/rm_policy_spec.rb +266 -266
  318. data/spec/unit/policyfile_services/show_policy_spec.rb +889 -889
  319. data/spec/unit/policyfile_services/undelete_spec.rb +304 -304
  320. data/spec/unit/policyfile_services/update_attributes_spec.rb +217 -217
  321. data/spec/unit/service_exception_inspectors/base_spec.rb +43 -43
  322. data/spec/unit/service_exception_inspectors/http_spec.rb +140 -140
  323. data/spec/unit/shell_out_spec.rb +34 -34
  324. data/warning.txt +9 -9
  325. metadata +24 -19
data/README.md CHANGED
@@ -1,307 +1,307 @@
1
- # Chef Development Kit
2
-
3
- Chef Development Kit (ChefDK) brings Chef and the development tools developed by the Chef Community together and acts as the consistent interface to this awesomeness. This awesomeness is composed of:
4
-
5
- * [Chef][]
6
- * [Berkshelf][]
7
- * [Test Kitchen][]
8
- * [ChefSpec][]
9
- * [Foodcritic][]
10
-
11
- This repository contains the code for the `chef` command. The full
12
- package is built with omnibus. Project and component build definitions
13
- are in the omnibus directory in this repo.
14
-
15
- ## Installation
16
-
17
- You can get the [latest release of ChefDK from the downloads page][ChefDK].
18
-
19
- On Mac OS X, you can also use [homebrew-cask](http://caskroom.io)
20
- to `brew cask install chefdk`.
21
-
22
- Once you install the package, the `chef-client` suite, `berks`,
23
- `kitchen`, and this application (`chef`) will be symlinked into your
24
- system bin directory, ready to use.
25
-
26
- ### Pre-release Candidates
27
-
28
- The following commands will download the latest ChefDK package from the `current` channel. The `current` channel holds builds that have passed testing and are candidates for release.
29
-
30
- #### Linux and OS/X:
31
-
32
- In a terminal, run:
33
-
34
- `curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -c current -P chefdk`
35
-
36
- To download a specific version, append the `-v` flag. EG, `-v 0.9.0`.
37
-
38
- #### Windows
39
-
40
- Open up a Powershell command prompt as Administrator and run:
41
-
42
- `. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -channel current -project chefdk`
43
-
44
- To download a specific version, append the `-version` flag. EG, `-version 0.9.0`.
45
-
46
- ## Usage
47
-
48
- For help with [Berkshelf][], [Test Kitchen][], [ChefSpec][] or [Foodcritic][],
49
- visit those projects' homepages for documentation and guides. For help with
50
- `chef-client` and `knife`, visit the [Chef documentation][]
51
- and [Learn Chef][].
52
-
53
- ### The `chef` Command
54
-
55
- Our goal is for `chef` to become a workflow tool that builds on the
56
- ideas of Berkshelf to provide an awesome experience that encourages
57
- quick iteration and testing (and makes those things easy) and provides a
58
- way to easily, reliably, and repeatably roll out new automation code to
59
- your infrastructure.
60
-
61
- While we've got a long way to go before we reach that goal we do have
62
- some helpful bits of functionality already included in the `chef`
63
- command:
64
-
65
- #### `chef generate`
66
- The generate subcommand generates skeleton Chef code
67
- layouts so you can skip repetitive boilerplate and get down to
68
- automating your infrastructure quickly. Unlike other generators, it only
69
- generates the minimum required files when creating a cookbook so you can
70
- focus on the task at hand without getting overwhelmed by stuff you don't
71
- need.
72
-
73
- The following generators are built-in:
74
-
75
- * `chef generate app` Creates an "application" layout that supports
76
- multiple cookbooks. This is a somewhat experimental compromise between
77
- the one-repo-per-cookbook and monolithic-chef-repo styles of cookbook
78
- management.
79
-
80
- * `chef generate cookbook` Creates a single cookbook.
81
- * `chef generate recipe` Creates a new recipe file in an existing
82
- cookbook.
83
- * `chef generate attribute` Creates a new attributes file in an existing
84
- cookbook.
85
- * `chef generate template` Creates a new template file in an existing
86
- cookbook. Use the `-s SOURCE` option to copy a source file's content to
87
- populate the template.
88
- * `chef generate file` Creates a new cookbook file in an existing
89
- cookbook. Supports the `-s SOURCE` option similar to template.
90
- * `chef generate lwrp` Creates a new LWRP resource and provider in an
91
- existing cookbook.
92
-
93
- The `chef generate` command also accepts additional `--generator-arg key=value`
94
- pairs that can be used to supply ad-hoc data to a generator cookbook.
95
- For example, you might specify `--generator-arg database=mysql` and then only
96
- write a template for `recipes/mysql.rb` if `context.database == 'mysql'`.
97
-
98
- #### `chef gem`
99
- `chef gem` is a wrapper command that manages installation and updating
100
- of rubygems for the Ruby installation embedded in the ChefDK package.
101
- This allows you to install knife plugins, Test Kitchen drivers, and
102
- other Ruby applications that are not packaged with ChefDK.
103
-
104
- Gems are installed to a `.chefdk` directory in your home directory; any
105
- executables included with a gem you install will be created in
106
- `~/.chefdk/gem/ruby/2.1.0/bin`. You can run these executables with
107
- `chef exec`, or use `chef shell-init` to add ChefDK's paths to your
108
- environment. Those commands are documented below.
109
-
110
- ### `chef exec`
111
- `chef exec <command>` runs any arbitrary shell command with the PATH
112
- environment variable and the ruby environment variables (`GEM_HOME`,
113
- `GEM_PATH`, etc.) setup to point at the embedded ChefDK omnibus environment.
114
-
115
- ### `chef shell-init`
116
- `chef shell-init SHELL_NAME` emits shell commands that modify your
117
- environment to make ChefDK your primary ruby. It supports bash, zsh,
118
- fish and PowerShell (posh). For more information to help you decide if
119
- this is desirable and instructions, see "Using ChefDK as Your Primary
120
- Development Environment" below.
121
-
122
- ### `chef install`
123
- `chef install` reads a `Policyfile.rb` document, which contains a
124
- `run_list` and optional cookbook version constraints, finds a set of
125
- cookbooks that provide the desired recipes and meet dependency
126
- constraints, and emits a `Policyfile.lock.json` describing the expanded
127
- run list and locked cookbook set. The `Policyfile.lock.json` can be used
128
- to install the cookbooks on another machine. The policy lock can be
129
- uploaded to a Chef Server (via the `chef push` command) to apply the
130
- expanded run list and locked cookbook set to nodes in your
131
- infrastructure. See the POLICYFILE_README.md for further details.
132
-
133
- ### `chef push`
134
- `chef push POLICY_GROUP` uploads a Policyfile.lock.json along with the cookbooks it
135
- references to a Chef Server. The policy lock is applied to a
136
- `POLICY_GROUP`, which is a set of nodes that share the same run list and
137
- cookbook set. This command operates in compatibility mode and has the
138
- same caveats as `chef install`. See the POLICYFILE_README.md for further
139
- details.
140
-
141
- ### `chef update`
142
- `chef update` updates a Policyfile.lock.json with the latest cookbooks
143
- from upstream sources. It supports an `--attributes` flag which will
144
- cause only attributes from the Policyfile.rb to be updated.
145
-
146
- ### `chef diff`
147
- `chef diff` shows an itemized diff between Policyfile locks. It can
148
- compare Policyfile locks from local disk, git, and/or the Chef Server,
149
- based on the options given.
150
-
151
- #### `chef verify`
152
- `chef verify` tests the embedded applications. By default it runs a
153
- quick "smoke test" to verify that the embedded applications are
154
- installed correctly and can run basic commands. As an end user this is
155
- probably all you'll ever need, but `verify` can also optionally run unit
156
- and integration tests by supplying the `--unit` and `--integration`
157
- flags, respectively.
158
-
159
- *WARNING:* The integration tests will do dangerous things like start
160
- HTTP servers with access to your filesystem and even create users and
161
- groups if run with sufficient privileges. The tests may also be
162
- sensitive to your machine's configuration. If you choose to run these,
163
- we recommend to only run them on dedicated, isolated hosts (we do this
164
- in our build cluster to verify each build).
165
-
166
- ### Using ChefDK as Your Primary Development Environment
167
-
168
- By default, ChefDK only adds a few select applications to your `PATH`
169
- and packages them in such a way that they are isolated from any other
170
- Ruby development tools you have on your system. If you're happily using
171
- your system ruby, rvm, rbenv, chruby or any other development
172
- environment, you can continue to do so. Just ensure that the ChefDK
173
- provided applications appear first in your `PATH` before any
174
- gem-installed versions and you're good to go.
175
-
176
- If you'd like to use ChefDK as your primary Ruby/Chef development
177
- environment, however, you can do so by initializing your shell with
178
- ChefDK's environment.
179
-
180
- To try it temporarily, in a new terminal session, run:
181
-
182
- ```sh
183
- eval "$(chef shell-init SHELL_NAME)"
184
- ```
185
-
186
- where `SHELL_NAME` is the name of your shell (usually bash, but zsh is
187
- also common). This modifies your `PATH` and `GEM_*` environment
188
- variables to include ChefDK's paths (run without the `eval` to see the
189
- generated code). Now your default `ruby` and associated tools will be
190
- the ones from ChefDK:
191
-
192
- ```sh
193
- which ruby
194
- # => /opt/chefdk/embedded/bin/ruby
195
- ```
196
-
197
- To add ChefDK to your shell's environment permanently, add the
198
- initialization step to your shell's profile:
199
-
200
- ```sh
201
- echo 'eval "$(chef shell-init SHELL_NAME)"' >> ~/.YOUR_SHELL_PROFILE
202
- ```
203
-
204
- Where `YOUR_SHELL_PROFILE` is `~/.bash_profile` for most bash users,
205
- `~/.zshrc` for zsh, and `~/.bashrc` on Ubuntu.
206
-
207
- #### Powershell
208
-
209
- You can use `chef shell-init` with PowerShell on Windows.
210
-
211
- To try it in your current session:
212
-
213
- ```posh
214
- chef shell-init powershell | Invoke-Expression
215
- ```
216
-
217
- To enable it permanently:
218
-
219
- ```posh
220
- "chef shell-init powershell | Invoke-Expression" >> $PROFILE
221
- ```
222
-
223
- #### Fish
224
-
225
- `chef shell-init` also supports fish.
226
-
227
- To try it:
228
-
229
- ```fish
230
- eval (chef shell-init fish)
231
- ```
232
-
233
- To permanently enable:
234
-
235
- ```fish
236
- echo 'eval (chef shell-init SHELL_NAME)' >> ~/.config/fish/config.fish
237
- ```
238
-
239
- ## Uninstallation Instructions
240
-
241
- ### Mac OS X
242
-
243
- You can uninstall Chef Development Kit on Mac using the below commands.
244
-
245
- First, remove the main package files:
246
-
247
- ```sh
248
- # Remove the installed files
249
- sudo rm -rf /opt/chefdk
250
-
251
- # Remove the system installation entry
252
- sudo pkgutil --forget com.getchef.pkg.chefdk
253
- ```
254
-
255
- Next, remove the symlinks which the Chef Development Kit installs. The location for these differs based on your OS X version.
256
-
257
- Pre-El Capitan:
258
-
259
- ```sh
260
- # Symlinks are in /usr/bin
261
- ls -la /usr/bin | egrep '/opt/chefdk' | awk '{ print $9 }' | sudo xargs -I % rm -f /usr/bin/%
262
- ```
263
-
264
- Post-El Capitan:
265
-
266
- ```sh
267
- # Symlinks are in /usr/local/bin
268
- ls -la /usr/local/bin | egrep '/opt/chefdk' | awk '{ print $9 }' | sudo xargs -I % rm -f /usr/local/bin/%
269
- ```
270
-
271
- ### Windows
272
-
273
- You can use `Add / Remove Programs` on Windows to remove the Chef Development
274
- Kit from your system.
275
-
276
- ### RHEL
277
-
278
- You can use `rpm` to uninstall Chef Development Kit on RHEL based systems:
279
-
280
- ```sh
281
- rpm -qa *chefdk*
282
- yum remove <package>
283
- rm -rf /opt/chefdk
284
- rm -rf ~/.chefdk
285
- ```
286
-
287
- ### Ubuntu
288
-
289
- You can use `dpkg` to uninstall Chef Development Kit on Ubuntu based systems:
290
-
291
- ```sh
292
- dpkg --list | grep chefdk # or dpkg --status chefdk
293
-
294
- # Purge chefdk from the system.
295
- # see man dkpg for details
296
- dpkg -P chefdk
297
- ```
298
- - - -
299
-
300
- [Berkshelf]: http://berkshelf.com "Berkshelf"
301
- [Chef]: https://www.chef.io "Chef"
302
- [ChefDK]: https://downloads.chef.io/chef-dk "Chef Development Kit"
303
- [Chef Documentation]: https://docs.chef.io "Chef Documentation"
304
- [ChefSpec]: http://chefspec.org "ChefSpec"
305
- [Foodcritic]: http://foodcritic.io "Foodcritic"
306
- [Learn Chef]: https://learn.chef.io "Learn Chef"
307
- [Test Kitchen]: http://kitchen.ci "Test Kitchen"
1
+ # Chef Development Kit
2
+
3
+ Chef Development Kit (ChefDK) brings Chef and the development tools developed by the Chef Community together and acts as the consistent interface to this awesomeness. This awesomeness is composed of:
4
+
5
+ * [Chef][]
6
+ * [Berkshelf][]
7
+ * [Test Kitchen][]
8
+ * [ChefSpec][]
9
+ * [Foodcritic][]
10
+
11
+ This repository contains the code for the `chef` command. The full
12
+ package is built with omnibus. Project and component build definitions
13
+ are in the omnibus directory in this repo.
14
+
15
+ ## Installation
16
+
17
+ You can get the [latest release of ChefDK from the downloads page][ChefDK].
18
+
19
+ On Mac OS X, you can also use [homebrew-cask](http://caskroom.io)
20
+ to `brew cask install chefdk`.
21
+
22
+ Once you install the package, the `chef-client` suite, `berks`,
23
+ `kitchen`, and this application (`chef`) will be symlinked into your
24
+ system bin directory, ready to use.
25
+
26
+ ### Pre-release Candidates
27
+
28
+ The following commands will download the latest ChefDK package from the `current` channel. The `current` channel holds builds that have passed testing and are candidates for release.
29
+
30
+ #### Linux and OS/X:
31
+
32
+ In a terminal, run:
33
+
34
+ `curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -c current -P chefdk`
35
+
36
+ To download a specific version, append the `-v` flag. EG, `-v 0.9.0`.
37
+
38
+ #### Windows
39
+
40
+ Open up a Powershell command prompt as Administrator and run:
41
+
42
+ `. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -channel current -project chefdk`
43
+
44
+ To download a specific version, append the `-version` flag. EG, `-version 0.9.0`.
45
+
46
+ ## Usage
47
+
48
+ For help with [Berkshelf][], [Test Kitchen][], [ChefSpec][] or [Foodcritic][],
49
+ visit those projects' homepages for documentation and guides. For help with
50
+ `chef-client` and `knife`, visit the [Chef documentation][]
51
+ and [Learn Chef][].
52
+
53
+ ### The `chef` Command
54
+
55
+ Our goal is for `chef` to become a workflow tool that builds on the
56
+ ideas of Berkshelf to provide an awesome experience that encourages
57
+ quick iteration and testing (and makes those things easy) and provides a
58
+ way to easily, reliably, and repeatably roll out new automation code to
59
+ your infrastructure.
60
+
61
+ While we've got a long way to go before we reach that goal we do have
62
+ some helpful bits of functionality already included in the `chef`
63
+ command:
64
+
65
+ #### `chef generate`
66
+ The generate subcommand generates skeleton Chef code
67
+ layouts so you can skip repetitive boilerplate and get down to
68
+ automating your infrastructure quickly. Unlike other generators, it only
69
+ generates the minimum required files when creating a cookbook so you can
70
+ focus on the task at hand without getting overwhelmed by stuff you don't
71
+ need.
72
+
73
+ The following generators are built-in:
74
+
75
+ * `chef generate app` Creates an "application" layout that supports
76
+ multiple cookbooks. This is a somewhat experimental compromise between
77
+ the one-repo-per-cookbook and monolithic-chef-repo styles of cookbook
78
+ management.
79
+
80
+ * `chef generate cookbook` Creates a single cookbook.
81
+ * `chef generate recipe` Creates a new recipe file in an existing
82
+ cookbook.
83
+ * `chef generate attribute` Creates a new attributes file in an existing
84
+ cookbook.
85
+ * `chef generate template` Creates a new template file in an existing
86
+ cookbook. Use the `-s SOURCE` option to copy a source file's content to
87
+ populate the template.
88
+ * `chef generate file` Creates a new cookbook file in an existing
89
+ cookbook. Supports the `-s SOURCE` option similar to template.
90
+ * `chef generate lwrp` Creates a new LWRP resource and provider in an
91
+ existing cookbook.
92
+
93
+ The `chef generate` command also accepts additional `--generator-arg key=value`
94
+ pairs that can be used to supply ad-hoc data to a generator cookbook.
95
+ For example, you might specify `--generator-arg database=mysql` and then only
96
+ write a template for `recipes/mysql.rb` if `context.database == 'mysql'`.
97
+
98
+ #### `chef gem`
99
+ `chef gem` is a wrapper command that manages installation and updating
100
+ of rubygems for the Ruby installation embedded in the ChefDK package.
101
+ This allows you to install knife plugins, Test Kitchen drivers, and
102
+ other Ruby applications that are not packaged with ChefDK.
103
+
104
+ Gems are installed to a `.chefdk` directory in your home directory; any
105
+ executables included with a gem you install will be created in
106
+ `~/.chefdk/gem/ruby/2.1.0/bin`. You can run these executables with
107
+ `chef exec`, or use `chef shell-init` to add ChefDK's paths to your
108
+ environment. Those commands are documented below.
109
+
110
+ ### `chef exec`
111
+ `chef exec <command>` runs any arbitrary shell command with the PATH
112
+ environment variable and the ruby environment variables (`GEM_HOME`,
113
+ `GEM_PATH`, etc.) setup to point at the embedded ChefDK omnibus environment.
114
+
115
+ ### `chef shell-init`
116
+ `chef shell-init SHELL_NAME` emits shell commands that modify your
117
+ environment to make ChefDK your primary ruby. It supports bash, zsh,
118
+ fish and PowerShell (posh). For more information to help you decide if
119
+ this is desirable and instructions, see "Using ChefDK as Your Primary
120
+ Development Environment" below.
121
+
122
+ ### `chef install`
123
+ `chef install` reads a `Policyfile.rb` document, which contains a
124
+ `run_list` and optional cookbook version constraints, finds a set of
125
+ cookbooks that provide the desired recipes and meet dependency
126
+ constraints, and emits a `Policyfile.lock.json` describing the expanded
127
+ run list and locked cookbook set. The `Policyfile.lock.json` can be used
128
+ to install the cookbooks on another machine. The policy lock can be
129
+ uploaded to a Chef Server (via the `chef push` command) to apply the
130
+ expanded run list and locked cookbook set to nodes in your
131
+ infrastructure. See the POLICYFILE_README.md for further details.
132
+
133
+ ### `chef push`
134
+ `chef push POLICY_GROUP` uploads a Policyfile.lock.json along with the cookbooks it
135
+ references to a Chef Server. The policy lock is applied to a
136
+ `POLICY_GROUP`, which is a set of nodes that share the same run list and
137
+ cookbook set. This command operates in compatibility mode and has the
138
+ same caveats as `chef install`. See the POLICYFILE_README.md for further
139
+ details.
140
+
141
+ ### `chef update`
142
+ `chef update` updates a Policyfile.lock.json with the latest cookbooks
143
+ from upstream sources. It supports an `--attributes` flag which will
144
+ cause only attributes from the Policyfile.rb to be updated.
145
+
146
+ ### `chef diff`
147
+ `chef diff` shows an itemized diff between Policyfile locks. It can
148
+ compare Policyfile locks from local disk, git, and/or the Chef Server,
149
+ based on the options given.
150
+
151
+ #### `chef verify`
152
+ `chef verify` tests the embedded applications. By default it runs a
153
+ quick "smoke test" to verify that the embedded applications are
154
+ installed correctly and can run basic commands. As an end user this is
155
+ probably all you'll ever need, but `verify` can also optionally run unit
156
+ and integration tests by supplying the `--unit` and `--integration`
157
+ flags, respectively.
158
+
159
+ *WARNING:* The integration tests will do dangerous things like start
160
+ HTTP servers with access to your filesystem and even create users and
161
+ groups if run with sufficient privileges. The tests may also be
162
+ sensitive to your machine's configuration. If you choose to run these,
163
+ we recommend to only run them on dedicated, isolated hosts (we do this
164
+ in our build cluster to verify each build).
165
+
166
+ ### Using ChefDK as Your Primary Development Environment
167
+
168
+ By default, ChefDK only adds a few select applications to your `PATH`
169
+ and packages them in such a way that they are isolated from any other
170
+ Ruby development tools you have on your system. If you're happily using
171
+ your system ruby, rvm, rbenv, chruby or any other development
172
+ environment, you can continue to do so. Just ensure that the ChefDK
173
+ provided applications appear first in your `PATH` before any
174
+ gem-installed versions and you're good to go.
175
+
176
+ If you'd like to use ChefDK as your primary Ruby/Chef development
177
+ environment, however, you can do so by initializing your shell with
178
+ ChefDK's environment.
179
+
180
+ To try it temporarily, in a new terminal session, run:
181
+
182
+ ```sh
183
+ eval "$(chef shell-init SHELL_NAME)"
184
+ ```
185
+
186
+ where `SHELL_NAME` is the name of your shell (usually bash, but zsh is
187
+ also common). This modifies your `PATH` and `GEM_*` environment
188
+ variables to include ChefDK's paths (run without the `eval` to see the
189
+ generated code). Now your default `ruby` and associated tools will be
190
+ the ones from ChefDK:
191
+
192
+ ```sh
193
+ which ruby
194
+ # => /opt/chefdk/embedded/bin/ruby
195
+ ```
196
+
197
+ To add ChefDK to your shell's environment permanently, add the
198
+ initialization step to your shell's profile:
199
+
200
+ ```sh
201
+ echo 'eval "$(chef shell-init SHELL_NAME)"' >> ~/.YOUR_SHELL_PROFILE
202
+ ```
203
+
204
+ Where `YOUR_SHELL_PROFILE` is `~/.bash_profile` for most bash users,
205
+ `~/.zshrc` for zsh, and `~/.bashrc` on Ubuntu.
206
+
207
+ #### Powershell
208
+
209
+ You can use `chef shell-init` with PowerShell on Windows.
210
+
211
+ To try it in your current session:
212
+
213
+ ```posh
214
+ chef shell-init powershell | Invoke-Expression
215
+ ```
216
+
217
+ To enable it permanently:
218
+
219
+ ```posh
220
+ "chef shell-init powershell | Invoke-Expression" >> $PROFILE
221
+ ```
222
+
223
+ #### Fish
224
+
225
+ `chef shell-init` also supports fish.
226
+
227
+ To try it:
228
+
229
+ ```fish
230
+ eval (chef shell-init fish)
231
+ ```
232
+
233
+ To permanently enable:
234
+
235
+ ```fish
236
+ echo 'eval (chef shell-init SHELL_NAME)' >> ~/.config/fish/config.fish
237
+ ```
238
+
239
+ ## Uninstallation Instructions
240
+
241
+ ### Mac OS X
242
+
243
+ You can uninstall Chef Development Kit on Mac using the below commands.
244
+
245
+ First, remove the main package files:
246
+
247
+ ```sh
248
+ # Remove the installed files
249
+ sudo rm -rf /opt/chefdk
250
+
251
+ # Remove the system installation entry
252
+ sudo pkgutil --forget com.getchef.pkg.chefdk
253
+ ```
254
+
255
+ Next, remove the symlinks which the Chef Development Kit installs. The location for these differs based on your OS X version.
256
+
257
+ Pre-El Capitan:
258
+
259
+ ```sh
260
+ # Symlinks are in /usr/bin
261
+ ls -la /usr/bin | egrep '/opt/chefdk' | awk '{ print $9 }' | sudo xargs -I % rm -f /usr/bin/%
262
+ ```
263
+
264
+ Post-El Capitan:
265
+
266
+ ```sh
267
+ # Symlinks are in /usr/local/bin
268
+ ls -la /usr/local/bin | egrep '/opt/chefdk' | awk '{ print $9 }' | sudo xargs -I % rm -f /usr/local/bin/%
269
+ ```
270
+
271
+ ### Windows
272
+
273
+ You can use `Add / Remove Programs` on Windows to remove the Chef Development
274
+ Kit from your system.
275
+
276
+ ### RHEL
277
+
278
+ You can use `rpm` to uninstall Chef Development Kit on RHEL based systems:
279
+
280
+ ```sh
281
+ rpm -qa *chefdk*
282
+ yum remove <package>
283
+ rm -rf /opt/chefdk
284
+ rm -rf ~/.chefdk
285
+ ```
286
+
287
+ ### Ubuntu
288
+
289
+ You can use `dpkg` to uninstall Chef Development Kit on Ubuntu based systems:
290
+
291
+ ```sh
292
+ dpkg --list | grep chefdk # or dpkg --status chefdk
293
+
294
+ # Purge chefdk from the system.
295
+ # see man dkpg for details
296
+ dpkg -P chefdk
297
+ ```
298
+ - - -
299
+
300
+ [Berkshelf]: http://berkshelf.com "Berkshelf"
301
+ [Chef]: https://www.chef.io "Chef"
302
+ [ChefDK]: https://downloads.chef.io/chef-dk "Chef Development Kit"
303
+ [Chef Documentation]: https://docs.chef.io "Chef Documentation"
304
+ [ChefSpec]: http://chefspec.org "ChefSpec"
305
+ [Foodcritic]: http://foodcritic.io "Foodcritic"
306
+ [Learn Chef]: https://learn.chef.io "Learn Chef"
307
+ [Test Kitchen]: http://kitchen.ci "Test Kitchen"