tylerrick-chef 0.10.8

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 (450) hide show
  1. data/LICENSE +201 -0
  2. data/README.rdoc +171 -0
  3. data/bin/chef-client +26 -0
  4. data/bin/chef-solo +25 -0
  5. data/bin/knife +26 -0
  6. data/bin/shef +34 -0
  7. data/distro/README +2 -0
  8. data/distro/arch/etc/conf.d/chef-client.conf +5 -0
  9. data/distro/arch/etc/conf.d/chef-expander.conf +8 -0
  10. data/distro/arch/etc/conf.d/chef-server-webui.conf +10 -0
  11. data/distro/arch/etc/conf.d/chef-server.conf +10 -0
  12. data/distro/arch/etc/conf.d/chef-solr.conf +8 -0
  13. data/distro/arch/etc/rc.d/chef-client +76 -0
  14. data/distro/arch/etc/rc.d/chef-expander +78 -0
  15. data/distro/arch/etc/rc.d/chef-server +78 -0
  16. data/distro/arch/etc/rc.d/chef-server-webui +78 -0
  17. data/distro/arch/etc/rc.d/chef-solr +78 -0
  18. data/distro/common/html/chef-client.8.html +146 -0
  19. data/distro/common/html/chef-expander.8.html +164 -0
  20. data/distro/common/html/chef-expanderctl.8.html +146 -0
  21. data/distro/common/html/chef-server-webui.8.html +185 -0
  22. data/distro/common/html/chef-server.8.html +182 -0
  23. data/distro/common/html/chef-solo.8.html +191 -0
  24. data/distro/common/html/chef-solr.8.html +165 -0
  25. data/distro/common/html/knife-bootstrap.1.html +243 -0
  26. data/distro/common/html/knife-client.1.html +219 -0
  27. data/distro/common/html/knife-configure.1.html +170 -0
  28. data/distro/common/html/knife-cookbook-site.1.html +241 -0
  29. data/distro/common/html/knife-cookbook.1.html +384 -0
  30. data/distro/common/html/knife-data-bag.1.html +234 -0
  31. data/distro/common/html/knife-environment.1.html +267 -0
  32. data/distro/common/html/knife-exec.1.html +134 -0
  33. data/distro/common/html/knife-index.1.html +125 -0
  34. data/distro/common/html/knife-node.1.html +250 -0
  35. data/distro/common/html/knife-recipe.1.html +92 -0
  36. data/distro/common/html/knife-role.1.html +200 -0
  37. data/distro/common/html/knife-search.1.html +288 -0
  38. data/distro/common/html/knife-ssh.1.html +157 -0
  39. data/distro/common/html/knife-status.1.html +128 -0
  40. data/distro/common/html/knife-tag.1.html +137 -0
  41. data/distro/common/html/knife.1.html +321 -0
  42. data/distro/common/html/shef.1.html +283 -0
  43. data/distro/common/man/man1/knife-bootstrap.1 +197 -0
  44. data/distro/common/man/man1/knife-client.1 +99 -0
  45. data/distro/common/man/man1/knife-configure.1 +88 -0
  46. data/distro/common/man/man1/knife-cookbook-site.1 +145 -0
  47. data/distro/common/man/man1/knife-cookbook.1 +345 -0
  48. data/distro/common/man/man1/knife-data-bag.1 +130 -0
  49. data/distro/common/man/man1/knife-environment.1 +178 -0
  50. data/distro/common/man/man1/knife-exec.1 +46 -0
  51. data/distro/common/man/man1/knife-index.1 +29 -0
  52. data/distro/common/man/man1/knife-node.1 +134 -0
  53. data/distro/common/man/man1/knife-role.1 +88 -0
  54. data/distro/common/man/man1/knife-search.1 +280 -0
  55. data/distro/common/man/man1/knife-ssh.1 +83 -0
  56. data/distro/common/man/man1/knife-status.1 +29 -0
  57. data/distro/common/man/man1/knife-tag.1 +43 -0
  58. data/distro/common/man/man1/knife.1 +292 -0
  59. data/distro/common/man/man1/shef.1 +256 -0
  60. data/distro/common/man/man8/chef-client.8 +104 -0
  61. data/distro/common/man/man8/chef-expander.8 +97 -0
  62. data/distro/common/man/man8/chef-expanderctl.8 +62 -0
  63. data/distro/common/man/man8/chef-server-webui.8 +155 -0
  64. data/distro/common/man/man8/chef-server.8 +147 -0
  65. data/distro/common/man/man8/chef-solo.8 +158 -0
  66. data/distro/common/man/man8/chef-solr.8 +122 -0
  67. data/distro/common/markdown/README +3 -0
  68. data/distro/common/markdown/man1/knife-bootstrap.mkd +142 -0
  69. data/distro/common/markdown/man1/knife-client.mkd +103 -0
  70. data/distro/common/markdown/man1/knife-configure.mkd +70 -0
  71. data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -0
  72. data/distro/common/markdown/man1/knife-cookbook.mkd +263 -0
  73. data/distro/common/markdown/man1/knife-data-bag.mkd +117 -0
  74. data/distro/common/markdown/man1/knife-environment.mkd +151 -0
  75. data/distro/common/markdown/man1/knife-exec.mkd +37 -0
  76. data/distro/common/markdown/man1/knife-index.mkd +30 -0
  77. data/distro/common/markdown/man1/knife-node.mkd +130 -0
  78. data/distro/common/markdown/man1/knife-role.mkd +85 -0
  79. data/distro/common/markdown/man1/knife-search.mkd +180 -0
  80. data/distro/common/markdown/man1/knife-ssh.mkd +72 -0
  81. data/distro/common/markdown/man1/knife-status.mkd +36 -0
  82. data/distro/common/markdown/man1/knife-tag.mkd +39 -0
  83. data/distro/common/markdown/man1/knife.mkd +220 -0
  84. data/distro/common/markdown/man1/shef.mkd +189 -0
  85. data/distro/common/markdown/man8/chef-client.mkd +75 -0
  86. data/distro/common/markdown/man8/chef-expander.mkd +82 -0
  87. data/distro/common/markdown/man8/chef-expanderctl.mkd +58 -0
  88. data/distro/common/markdown/man8/chef-server-webui.mkd +121 -0
  89. data/distro/common/markdown/man8/chef-server.mkd +121 -0
  90. data/distro/common/markdown/man8/chef-solo.mkd +107 -0
  91. data/distro/common/markdown/man8/chef-solr.mkd +89 -0
  92. data/distro/debian/etc/default/chef-client +4 -0
  93. data/distro/debian/etc/default/chef-expander +8 -0
  94. data/distro/debian/etc/default/chef-server +9 -0
  95. data/distro/debian/etc/default/chef-server-webui +9 -0
  96. data/distro/debian/etc/default/chef-solr +8 -0
  97. data/distro/debian/etc/init.d/chef-client +185 -0
  98. data/distro/debian/etc/init.d/chef-expander +176 -0
  99. data/distro/debian/etc/init.d/chef-server +122 -0
  100. data/distro/debian/etc/init.d/chef-server-webui +123 -0
  101. data/distro/debian/etc/init.d/chef-solr +176 -0
  102. data/distro/debian/etc/init/chef-client.conf +17 -0
  103. data/distro/debian/etc/init/chef-expander.conf +17 -0
  104. data/distro/debian/etc/init/chef-server-webui.conf +17 -0
  105. data/distro/debian/etc/init/chef-server.conf +17 -0
  106. data/distro/debian/etc/init/chef-solr.conf +17 -0
  107. data/distro/redhat/etc/init.d/chef-client +110 -0
  108. data/distro/redhat/etc/init.d/chef-expander +104 -0
  109. data/distro/redhat/etc/init.d/chef-server +112 -0
  110. data/distro/redhat/etc/init.d/chef-server-webui +112 -0
  111. data/distro/redhat/etc/init.d/chef-solr +104 -0
  112. data/distro/redhat/etc/logrotate.d/chef-client +8 -0
  113. data/distro/redhat/etc/logrotate.d/chef-expander +8 -0
  114. data/distro/redhat/etc/logrotate.d/chef-server +8 -0
  115. data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
  116. data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
  117. data/distro/redhat/etc/sysconfig/chef-client +15 -0
  118. data/distro/redhat/etc/sysconfig/chef-expander +7 -0
  119. data/distro/redhat/etc/sysconfig/chef-server +14 -0
  120. data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
  121. data/distro/redhat/etc/sysconfig/chef-solr +8 -0
  122. data/lib/chef.rb +41 -0
  123. data/lib/chef/api_client.rb +271 -0
  124. data/lib/chef/application.rb +152 -0
  125. data/lib/chef/application/agent.rb +18 -0
  126. data/lib/chef/application/client.rb +285 -0
  127. data/lib/chef/application/knife.rb +188 -0
  128. data/lib/chef/application/solo.rb +218 -0
  129. data/lib/chef/applications.rb +4 -0
  130. data/lib/chef/certificate.rb +194 -0
  131. data/lib/chef/checksum.rb +167 -0
  132. data/lib/chef/checksum/storage.rb +18 -0
  133. data/lib/chef/checksum/storage/filesystem.rb +56 -0
  134. data/lib/chef/checksum_cache.rb +189 -0
  135. data/lib/chef/client.rb +366 -0
  136. data/lib/chef/config.rb +248 -0
  137. data/lib/chef/cookbook/chefignore.rb +66 -0
  138. data/lib/chef/cookbook/cookbook_collection.rb +45 -0
  139. data/lib/chef/cookbook/cookbook_version_loader.rb +173 -0
  140. data/lib/chef/cookbook/file_system_file_vendor.rb +56 -0
  141. data/lib/chef/cookbook/file_vendor.rb +48 -0
  142. data/lib/chef/cookbook/metadata.rb +629 -0
  143. data/lib/chef/cookbook/remote_file_vendor.rb +88 -0
  144. data/lib/chef/cookbook/syntax_check.rb +136 -0
  145. data/lib/chef/cookbook_loader.rb +121 -0
  146. data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
  147. data/lib/chef/cookbook_uploader.rb +154 -0
  148. data/lib/chef/cookbook_version.rb +1096 -0
  149. data/lib/chef/cookbook_version_selector.rb +168 -0
  150. data/lib/chef/couchdb.rb +246 -0
  151. data/lib/chef/daemon.rb +172 -0
  152. data/lib/chef/data_bag.rb +235 -0
  153. data/lib/chef/data_bag_item.rb +273 -0
  154. data/lib/chef/encrypted_data_bag_item.rb +139 -0
  155. data/lib/chef/environment.rb +455 -0
  156. data/lib/chef/exceptions.rb +154 -0
  157. data/lib/chef/file_access_control.rb +144 -0
  158. data/lib/chef/file_cache.rb +218 -0
  159. data/lib/chef/handler.rb +227 -0
  160. data/lib/chef/handler/error_report.rb +33 -0
  161. data/lib/chef/handler/json_file.rb +58 -0
  162. data/lib/chef/index_queue.rb +29 -0
  163. data/lib/chef/index_queue/amqp_client.rb +116 -0
  164. data/lib/chef/index_queue/consumer.rb +76 -0
  165. data/lib/chef/index_queue/indexable.rb +109 -0
  166. data/lib/chef/json_compat.rb +52 -0
  167. data/lib/chef/knife.rb +520 -0
  168. data/lib/chef/knife/bootstrap.rb +207 -0
  169. data/lib/chef/knife/bootstrap/archlinux-gems.erb +60 -0
  170. data/lib/chef/knife/bootstrap/centos5-gems.erb +56 -0
  171. data/lib/chef/knife/bootstrap/fedora13-gems.erb +43 -0
  172. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +49 -0
  173. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +50 -0
  174. data/lib/chef/knife/client_bulk_delete.rb +65 -0
  175. data/lib/chef/knife/client_create.rb +79 -0
  176. data/lib/chef/knife/client_delete.rb +46 -0
  177. data/lib/chef/knife/client_edit.rb +45 -0
  178. data/lib/chef/knife/client_list.rb +42 -0
  179. data/lib/chef/knife/client_reregister.rb +58 -0
  180. data/lib/chef/knife/client_show.rb +52 -0
  181. data/lib/chef/knife/configure.rb +149 -0
  182. data/lib/chef/knife/configure_client.rb +50 -0
  183. data/lib/chef/knife/cookbook_bulk_delete.rb +72 -0
  184. data/lib/chef/knife/cookbook_create.rb +274 -0
  185. data/lib/chef/knife/cookbook_delete.rb +151 -0
  186. data/lib/chef/knife/cookbook_download.rb +137 -0
  187. data/lib/chef/knife/cookbook_list.rb +47 -0
  188. data/lib/chef/knife/cookbook_metadata.rb +107 -0
  189. data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
  190. data/lib/chef/knife/cookbook_show.rb +102 -0
  191. data/lib/chef/knife/cookbook_site_download.rb +70 -0
  192. data/lib/chef/knife/cookbook_site_install.rb +148 -0
  193. data/lib/chef/knife/cookbook_site_list.rb +62 -0
  194. data/lib/chef/knife/cookbook_site_search.rb +51 -0
  195. data/lib/chef/knife/cookbook_site_share.rb +114 -0
  196. data/lib/chef/knife/cookbook_site_show.rb +57 -0
  197. data/lib/chef/knife/cookbook_site_unshare.rb +56 -0
  198. data/lib/chef/knife/cookbook_site_vendor.rb +46 -0
  199. data/lib/chef/knife/cookbook_test.rb +93 -0
  200. data/lib/chef/knife/cookbook_upload.rb +240 -0
  201. data/lib/chef/knife/core/bootstrap_context.rb +100 -0
  202. data/lib/chef/knife/core/cookbook_scm_repo.rb +148 -0
  203. data/lib/chef/knife/core/generic_presenter.rb +191 -0
  204. data/lib/chef/knife/core/node_editor.rb +127 -0
  205. data/lib/chef/knife/core/node_presenter.rb +136 -0
  206. data/lib/chef/knife/core/object_loader.rb +75 -0
  207. data/lib/chef/knife/core/subcommand_loader.rb +112 -0
  208. data/lib/chef/knife/core/text_formatter.rb +100 -0
  209. data/lib/chef/knife/core/ui.rb +216 -0
  210. data/lib/chef/knife/data_bag_create.rb +93 -0
  211. data/lib/chef/knife/data_bag_delete.rb +51 -0
  212. data/lib/chef/knife/data_bag_edit.rb +94 -0
  213. data/lib/chef/knife/data_bag_from_file.rb +87 -0
  214. data/lib/chef/knife/data_bag_list.rb +46 -0
  215. data/lib/chef/knife/data_bag_show.rb +81 -0
  216. data/lib/chef/knife/environment_create.rb +53 -0
  217. data/lib/chef/knife/environment_delete.rb +45 -0
  218. data/lib/chef/knife/environment_edit.rb +45 -0
  219. data/lib/chef/knife/environment_from_file.rb +50 -0
  220. data/lib/chef/knife/environment_list.rb +42 -0
  221. data/lib/chef/knife/environment_show.rb +46 -0
  222. data/lib/chef/knife/exec.rb +51 -0
  223. data/lib/chef/knife/help.rb +103 -0
  224. data/lib/chef/knife/help_topics.rb +4 -0
  225. data/lib/chef/knife/index_rebuild.rb +50 -0
  226. data/lib/chef/knife/node_bulk_delete.rb +80 -0
  227. data/lib/chef/knife/node_create.rb +50 -0
  228. data/lib/chef/knife/node_delete.rb +47 -0
  229. data/lib/chef/knife/node_edit.rb +72 -0
  230. data/lib/chef/knife/node_from_file.rb +50 -0
  231. data/lib/chef/knife/node_list.rb +46 -0
  232. data/lib/chef/knife/node_run_list_add.rb +67 -0
  233. data/lib/chef/knife/node_run_list_remove.rb +48 -0
  234. data/lib/chef/knife/node_show.rb +73 -0
  235. data/lib/chef/knife/recipe_list.rb +32 -0
  236. data/lib/chef/knife/role_bulk_delete.rb +70 -0
  237. data/lib/chef/knife/role_create.rb +55 -0
  238. data/lib/chef/knife/role_delete.rb +47 -0
  239. data/lib/chef/knife/role_edit.rb +48 -0
  240. data/lib/chef/knife/role_from_file.rb +56 -0
  241. data/lib/chef/knife/role_list.rb +43 -0
  242. data/lib/chef/knife/role_show.rb +54 -0
  243. data/lib/chef/knife/search.rb +141 -0
  244. data/lib/chef/knife/ssh.rb +367 -0
  245. data/lib/chef/knife/status.rb +104 -0
  246. data/lib/chef/knife/tag_create.rb +52 -0
  247. data/lib/chef/knife/tag_delete.rb +60 -0
  248. data/lib/chef/knife/tag_list.rb +47 -0
  249. data/lib/chef/log.rb +39 -0
  250. data/lib/chef/mash.rb +211 -0
  251. data/lib/chef/mixin/check_helper.rb +31 -0
  252. data/lib/chef/mixin/checksum.rb +32 -0
  253. data/lib/chef/mixin/command.rb +163 -0
  254. data/lib/chef/mixin/command/unix.rb +215 -0
  255. data/lib/chef/mixin/command/windows.rb +76 -0
  256. data/lib/chef/mixin/convert_to_class_name.rb +63 -0
  257. data/lib/chef/mixin/create_path.rb +57 -0
  258. data/lib/chef/mixin/deep_merge.rb +225 -0
  259. data/lib/chef/mixin/deprecation.rb +65 -0
  260. data/lib/chef/mixin/from_file.rb +50 -0
  261. data/lib/chef/mixin/get_source_from_package.rb +42 -0
  262. data/lib/chef/mixin/language.rb +163 -0
  263. data/lib/chef/mixin/language_include_attribute.rb +61 -0
  264. data/lib/chef/mixin/language_include_recipe.rb +52 -0
  265. data/lib/chef/mixin/params_validate.rb +225 -0
  266. data/lib/chef/mixin/recipe_definition_dsl_core.rb +78 -0
  267. data/lib/chef/mixin/shell_out.rb +41 -0
  268. data/lib/chef/mixin/template.rb +95 -0
  269. data/lib/chef/mixin/xml_escape.rb +140 -0
  270. data/lib/chef/mixins.rb +15 -0
  271. data/lib/chef/monkey_patches/dir.rb +36 -0
  272. data/lib/chef/monkey_patches/numeric.rb +15 -0
  273. data/lib/chef/monkey_patches/object.rb +9 -0
  274. data/lib/chef/monkey_patches/regexp.rb +34 -0
  275. data/lib/chef/monkey_patches/string.rb +49 -0
  276. data/lib/chef/monkey_patches/tempfile.rb +64 -0
  277. data/lib/chef/nil_argument.rb +3 -0
  278. data/lib/chef/node.rb +677 -0
  279. data/lib/chef/node/attribute.rb +487 -0
  280. data/lib/chef/openid_registration.rb +187 -0
  281. data/lib/chef/platform.rb +434 -0
  282. data/lib/chef/provider.rb +124 -0
  283. data/lib/chef/provider/breakpoint.rb +36 -0
  284. data/lib/chef/provider/cookbook_file.rb +100 -0
  285. data/lib/chef/provider/cron.rb +186 -0
  286. data/lib/chef/provider/cron/solaris.rb +195 -0
  287. data/lib/chef/provider/deploy.rb +418 -0
  288. data/lib/chef/provider/deploy/revision.rb +80 -0
  289. data/lib/chef/provider/deploy/timestamped.rb +33 -0
  290. data/lib/chef/provider/directory.rb +72 -0
  291. data/lib/chef/provider/env.rb +152 -0
  292. data/lib/chef/provider/env/windows.rb +75 -0
  293. data/lib/chef/provider/erl_call.rb +101 -0
  294. data/lib/chef/provider/execute.rb +65 -0
  295. data/lib/chef/provider/file.rb +226 -0
  296. data/lib/chef/provider/git.rb +243 -0
  297. data/lib/chef/provider/group.rb +133 -0
  298. data/lib/chef/provider/group/aix.rb +70 -0
  299. data/lib/chef/provider/group/dscl.rb +121 -0
  300. data/lib/chef/provider/group/gpasswd.rb +53 -0
  301. data/lib/chef/provider/group/groupadd.rb +91 -0
  302. data/lib/chef/provider/group/pw.rb +84 -0
  303. data/lib/chef/provider/group/suse.rb +53 -0
  304. data/lib/chef/provider/group/usermod.rb +57 -0
  305. data/lib/chef/provider/group/windows.rb +79 -0
  306. data/lib/chef/provider/http_request.rb +122 -0
  307. data/lib/chef/provider/ifconfig.rb +195 -0
  308. data/lib/chef/provider/link.rb +164 -0
  309. data/lib/chef/provider/log.rb +54 -0
  310. data/lib/chef/provider/mdadm.rb +91 -0
  311. data/lib/chef/provider/mount.rb +114 -0
  312. data/lib/chef/provider/mount/mount.rb +240 -0
  313. data/lib/chef/provider/mount/windows.rb +81 -0
  314. data/lib/chef/provider/ohai.rb +42 -0
  315. data/lib/chef/provider/package.rb +200 -0
  316. data/lib/chef/provider/package/apt.rb +145 -0
  317. data/lib/chef/provider/package/dpkg.rb +115 -0
  318. data/lib/chef/provider/package/easy_install.rb +136 -0
  319. data/lib/chef/provider/package/freebsd.rb +125 -0
  320. data/lib/chef/provider/package/macports.rb +105 -0
  321. data/lib/chef/provider/package/pacman.rb +101 -0
  322. data/lib/chef/provider/package/portage.rb +135 -0
  323. data/lib/chef/provider/package/rpm.rb +104 -0
  324. data/lib/chef/provider/package/rubygems.rb +465 -0
  325. data/lib/chef/provider/package/solaris.rb +130 -0
  326. data/lib/chef/provider/package/yum-dump.py +286 -0
  327. data/lib/chef/provider/package/yum.rb +1173 -0
  328. data/lib/chef/provider/package/zypper.rb +144 -0
  329. data/lib/chef/provider/remote_directory.rb +137 -0
  330. data/lib/chef/provider/remote_file.rb +118 -0
  331. data/lib/chef/provider/route.rb +193 -0
  332. data/lib/chef/provider/ruby_block.rb +34 -0
  333. data/lib/chef/provider/script.rb +55 -0
  334. data/lib/chef/provider/service.rb +122 -0
  335. data/lib/chef/provider/service/arch.rb +116 -0
  336. data/lib/chef/provider/service/debian.rb +130 -0
  337. data/lib/chef/provider/service/freebsd.rb +154 -0
  338. data/lib/chef/provider/service/gentoo.rb +53 -0
  339. data/lib/chef/provider/service/init.rb +71 -0
  340. data/lib/chef/provider/service/insserv.rb +52 -0
  341. data/lib/chef/provider/service/invokercd.rb +35 -0
  342. data/lib/chef/provider/service/redhat.rb +60 -0
  343. data/lib/chef/provider/service/simple.rb +120 -0
  344. data/lib/chef/provider/service/solaris.rb +85 -0
  345. data/lib/chef/provider/service/systemd.rb +102 -0
  346. data/lib/chef/provider/service/upstart.rb +198 -0
  347. data/lib/chef/provider/service/windows.rb +155 -0
  348. data/lib/chef/provider/subversion.rb +197 -0
  349. data/lib/chef/provider/template.rb +104 -0
  350. data/lib/chef/provider/user.rb +186 -0
  351. data/lib/chef/provider/user/dscl.rb +280 -0
  352. data/lib/chef/provider/user/pw.rb +113 -0
  353. data/lib/chef/provider/user/useradd.rb +137 -0
  354. data/lib/chef/provider/user/windows.rb +124 -0
  355. data/lib/chef/providers.rb +95 -0
  356. data/lib/chef/recipe.rb +129 -0
  357. data/lib/chef/resource.rb +609 -0
  358. data/lib/chef/resource/apt_package.rb +34 -0
  359. data/lib/chef/resource/bash.rb +33 -0
  360. data/lib/chef/resource/breakpoint.rb +35 -0
  361. data/lib/chef/resource/conditional.rb +90 -0
  362. data/lib/chef/resource/cookbook_file.rb +45 -0
  363. data/lib/chef/resource/cron.rb +188 -0
  364. data/lib/chef/resource/csh.rb +33 -0
  365. data/lib/chef/resource/deploy.rb +389 -0
  366. data/lib/chef/resource/deploy_revision.rb +40 -0
  367. data/lib/chef/resource/directory.rb +76 -0
  368. data/lib/chef/resource/dpkg_package.rb +34 -0
  369. data/lib/chef/resource/easy_install_package.rb +57 -0
  370. data/lib/chef/resource/env.rb +58 -0
  371. data/lib/chef/resource/erl_call.rb +83 -0
  372. data/lib/chef/resource/execute.rb +127 -0
  373. data/lib/chef/resource/file.rb +99 -0
  374. data/lib/chef/resource/freebsd_package.rb +35 -0
  375. data/lib/chef/resource/gem_package.rb +53 -0
  376. data/lib/chef/resource/git.rb +46 -0
  377. data/lib/chef/resource/group.rb +78 -0
  378. data/lib/chef/resource/http_request.rb +61 -0
  379. data/lib/chef/resource/ifconfig.rb +144 -0
  380. data/lib/chef/resource/link.rb +78 -0
  381. data/lib/chef/resource/log.rb +62 -0
  382. data/lib/chef/resource/macports_package.rb +29 -0
  383. data/lib/chef/resource/mdadm.rb +82 -0
  384. data/lib/chef/resource/mount.rb +134 -0
  385. data/lib/chef/resource/ohai.rb +40 -0
  386. data/lib/chef/resource/package.rb +80 -0
  387. data/lib/chef/resource/pacman_package.rb +33 -0
  388. data/lib/chef/resource/perl.rb +33 -0
  389. data/lib/chef/resource/portage_package.rb +33 -0
  390. data/lib/chef/resource/python.rb +33 -0
  391. data/lib/chef/resource/remote_directory.rb +109 -0
  392. data/lib/chef/resource/remote_file.rb +83 -0
  393. data/lib/chef/resource/route.rb +135 -0
  394. data/lib/chef/resource/rpm_package.rb +34 -0
  395. data/lib/chef/resource/ruby.rb +33 -0
  396. data/lib/chef/resource/ruby_block.rb +40 -0
  397. data/lib/chef/resource/scm.rb +147 -0
  398. data/lib/chef/resource/script.rb +60 -0
  399. data/lib/chef/resource/service.rb +151 -0
  400. data/lib/chef/resource/solaris_package.rb +36 -0
  401. data/lib/chef/resource/subversion.rb +36 -0
  402. data/lib/chef/resource/template.rb +69 -0
  403. data/lib/chef/resource/timestamped_deploy.rb +31 -0
  404. data/lib/chef/resource/user.rb +130 -0
  405. data/lib/chef/resource/yum_package.rb +63 -0
  406. data/lib/chef/resource_collection.rb +217 -0
  407. data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
  408. data/lib/chef/resource_definition.rb +67 -0
  409. data/lib/chef/resource_definition_list.rb +38 -0
  410. data/lib/chef/resources.rb +64 -0
  411. data/lib/chef/rest.rb +400 -0
  412. data/lib/chef/rest/auth_credentials.rb +71 -0
  413. data/lib/chef/rest/cookie_jar.rb +31 -0
  414. data/lib/chef/rest/rest_request.rb +213 -0
  415. data/lib/chef/role.rb +343 -0
  416. data/lib/chef/run_context.rb +126 -0
  417. data/lib/chef/run_list.rb +165 -0
  418. data/lib/chef/run_list/run_list_expansion.rb +193 -0
  419. data/lib/chef/run_list/run_list_item.rb +92 -0
  420. data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
  421. data/lib/chef/run_status.rb +121 -0
  422. data/lib/chef/runner.rb +105 -0
  423. data/lib/chef/sandbox.rb +153 -0
  424. data/lib/chef/search/query.rb +65 -0
  425. data/lib/chef/shef.rb +327 -0
  426. data/lib/chef/shef/ext.rb +569 -0
  427. data/lib/chef/shef/model_wrapper.rb +120 -0
  428. data/lib/chef/shef/shef_rest.rb +28 -0
  429. data/lib/chef/shef/shef_session.rb +285 -0
  430. data/lib/chef/shell_out.rb +249 -0
  431. data/lib/chef/shell_out/unix.rb +223 -0
  432. data/lib/chef/shell_out/windows.rb +588 -0
  433. data/lib/chef/solr_query.rb +187 -0
  434. data/lib/chef/solr_query/lucene.treetop +150 -0
  435. data/lib/chef/solr_query/lucene_nodes.rb +285 -0
  436. data/lib/chef/solr_query/query_transform.rb +65 -0
  437. data/lib/chef/solr_query/solr_http_request.rb +132 -0
  438. data/lib/chef/streaming_cookbook_uploader.rb +201 -0
  439. data/lib/chef/tasks/chef_repo.rake +334 -0
  440. data/lib/chef/util/file_edit.rb +122 -0
  441. data/lib/chef/util/windows.rb +56 -0
  442. data/lib/chef/util/windows/net_group.rb +101 -0
  443. data/lib/chef/util/windows/net_use.rb +121 -0
  444. data/lib/chef/util/windows/net_user.rb +198 -0
  445. data/lib/chef/util/windows/volume.rb +59 -0
  446. data/lib/chef/version.rb +23 -0
  447. data/lib/chef/version_class.rb +70 -0
  448. data/lib/chef/version_constraint.rb +116 -0
  449. data/lib/chef/webui_user.rb +231 -0
  450. metadata +764 -0
@@ -0,0 +1,207 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2010 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/knife'
20
+ require 'erubis'
21
+
22
+ class Chef
23
+ class Knife
24
+ class Bootstrap < Knife
25
+
26
+ deps do
27
+ require 'chef/knife/core/bootstrap_context'
28
+ require 'chef/json_compat'
29
+ require 'tempfile'
30
+ require 'highline'
31
+ require 'net/ssh'
32
+ require 'net/ssh/multi'
33
+ Chef::Knife::Ssh.load_deps
34
+ end
35
+
36
+ banner "knife bootstrap FQDN (options)"
37
+
38
+ option :ssh_user,
39
+ :short => "-x USERNAME",
40
+ :long => "--ssh-user USERNAME",
41
+ :description => "The ssh username",
42
+ :default => "root"
43
+
44
+ option :ssh_password,
45
+ :short => "-P PASSWORD",
46
+ :long => "--ssh-password PASSWORD",
47
+ :description => "The ssh password"
48
+
49
+ option :ssh_port,
50
+ :short => "-p PORT",
51
+ :long => "--ssh-port PORT",
52
+ :description => "The ssh port",
53
+ :default => "22",
54
+ :proc => Proc.new { |key| Chef::Config[:knife][:ssh_port] = key }
55
+
56
+ option :identity_file,
57
+ :short => "-i IDENTITY_FILE",
58
+ :long => "--identity-file IDENTITY_FILE",
59
+ :description => "The SSH identity file used for authentication"
60
+
61
+ option :chef_node_name,
62
+ :short => "-N NAME",
63
+ :long => "--node-name NAME",
64
+ :description => "The Chef node name for your new node"
65
+
66
+ option :prerelease,
67
+ :long => "--prerelease",
68
+ :description => "Install the pre-release chef gems"
69
+
70
+ option :bootstrap_version,
71
+ :long => "--bootstrap-version VERSION",
72
+ :description => "The version of Chef to install",
73
+ :proc => lambda { |v| Chef::Config[:knife][:bootstrap_version] = v }
74
+
75
+ option :bootstrap_proxy,
76
+ :long => "--bootstrap-proxy PROXY_URL",
77
+ :description => "The proxy server for the node being bootstrapped",
78
+ :proc => Proc.new { |p| Chef::Config[:knife][:bootstrap_proxy] = p }
79
+
80
+ option :distro,
81
+ :short => "-d DISTRO",
82
+ :long => "--distro DISTRO",
83
+ :description => "Bootstrap a distro using a template",
84
+ :default => "ubuntu10.04-gems"
85
+
86
+ option :use_sudo,
87
+ :long => "--sudo",
88
+ :description => "Execute the bootstrap via sudo",
89
+ :boolean => true
90
+
91
+ option :template_file,
92
+ :long => "--template-file TEMPLATE",
93
+ :description => "Full path to location of template to use",
94
+ :default => false
95
+
96
+ option :run_list,
97
+ :short => "-r RUN_LIST",
98
+ :long => "--run-list RUN_LIST",
99
+ :description => "Comma separated list of roles/recipes to apply",
100
+ :proc => lambda { |o| o.split(/[\s,]+/) },
101
+ :default => []
102
+
103
+ option :no_host_key_verify,
104
+ :long => "--no-host-key-verify",
105
+ :description => "Disable host key verification",
106
+ :boolean => true,
107
+ :default => false
108
+
109
+ def load_template(template=nil)
110
+ # Are we bootstrapping using an already shipped template?
111
+ if config[:template_file]
112
+ bootstrap_files = config[:template_file]
113
+ else
114
+ bootstrap_files = []
115
+ bootstrap_files << File.join(File.dirname(__FILE__), 'bootstrap', "#{config[:distro]}.erb")
116
+ bootstrap_files << File.join(@@chef_config_dir, "bootstrap", "#{config[:distro]}.erb")
117
+ bootstrap_files << File.join(ENV['HOME'], '.chef', 'bootstrap', "#{config[:distro]}.erb")
118
+ bootstrap_files << Gem.find_files(File.join("chef","knife","bootstrap","#{config[:distro]}.erb"))
119
+ bootstrap_files.flatten!
120
+ end
121
+
122
+ template = Array(bootstrap_files).find do |bootstrap_template|
123
+ Chef::Log.debug("Looking for bootstrap template in #{File.dirname(bootstrap_template)}")
124
+ File.exists?(bootstrap_template)
125
+ end
126
+
127
+ unless template
128
+ ui.info("Can not find bootstrap definition for #{config[:distro]}")
129
+ raise Errno::ENOENT
130
+ end
131
+
132
+ Chef::Log.debug("Found bootstrap template in #{File.dirname(template)}")
133
+
134
+ IO.read(template).chomp
135
+ end
136
+
137
+ def render_template(template=nil)
138
+ context = Knife::Core::BootstrapContext.new(config, config[:run_list], Chef::Config)
139
+ Erubis::Eruby.new(template).evaluate(context)
140
+ end
141
+
142
+ def run
143
+
144
+ validate_name_args!
145
+ @node_name = Array(@name_args).first
146
+ # back compat--templates may use this setting:
147
+ config[:server_name] = @node_name
148
+
149
+ $stdout.sync = true
150
+
151
+ ui.info("Bootstrapping Chef on #{ui.color(@node_name, :bold)}")
152
+
153
+ begin
154
+ knife_ssh.run
155
+ rescue Net::SSH::AuthenticationFailed
156
+ unless config[:ssh_password]
157
+ puts "Failed to authenticate #{config[:ssh_user]} - trying password auth"
158
+ knife_ssh_with_password_auth.run
159
+ end
160
+ end
161
+ end
162
+
163
+ def validate_name_args!
164
+ if Array(@name_args).first.nil?
165
+ ui.error("Must pass an FQDN or ip to bootstrap")
166
+ exit 1
167
+ end
168
+ end
169
+
170
+ def server_name
171
+ Array(@name_args).first
172
+ end
173
+
174
+ def knife_ssh
175
+ ssh = Chef::Knife::Ssh.new
176
+ ssh.ui = ui
177
+ ssh.name_args = [ server_name, ssh_command ]
178
+ ssh.config[:ssh_user] = config[:ssh_user]
179
+ ssh.config[:ssh_password] = config[:ssh_password]
180
+ ssh.config[:ssh_port] = Chef::Config[:knife][:ssh_port] || config[:ssh_port]
181
+ ssh.config[:identity_file] = config[:identity_file]
182
+ ssh.config[:manual] = true
183
+ ssh.config[:no_host_key_verify] = config[:no_host_key_verify]
184
+ ssh.config[:on_error] = :raise
185
+ ssh
186
+ end
187
+
188
+ def knife_ssh_with_password_auth
189
+ ssh = knife_ssh
190
+ ssh.config[:identity_file] = nil
191
+ ssh.config[:ssh_password] = ssh.get_password
192
+ ssh
193
+ end
194
+
195
+ def ssh_command
196
+ command = render_template(load_template(config[:bootstrap_template]))
197
+
198
+ if config[:use_sudo]
199
+ command = "sudo #{command}"
200
+ end
201
+
202
+ command
203
+ end
204
+
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,60 @@
1
+ bash -c '
2
+ <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
3
+
4
+ if [ ! -f /usr/bin/chef-client ]; then
5
+ pacman -Syy
6
+ pacman -S --noconfirm ruby ntp base-devel
7
+ ntpdate -u pool.ntp.org
8
+ gem install ohai --no-rdoc --no-ri --verbose
9
+ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
10
+ fi
11
+
12
+ mkdir -p /etc/chef
13
+ (
14
+ cat <<'EOP'
15
+ <%= validation_key %>
16
+ EOP
17
+ ) > /tmp/validation.pem
18
+ awk NF /tmp/validation.pem > /etc/chef/validation.pem
19
+ rm /tmp/validation.pem
20
+
21
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
22
+ (
23
+ cat <<'EOP'
24
+ <%= encrypted_data_bag_secret %>
25
+ EOP
26
+ ) > /tmp/encrypted_data_bag_secret
27
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
28
+ rm /tmp/encrypted_data_bag_secret
29
+ <% end -%>
30
+
31
+ (
32
+ cat <<'EOP'
33
+ log_level :info
34
+ log_location STDOUT
35
+ chef_server_url "<%= @chef_config[:chef_server_url] %>"
36
+ validation_client_name "<%= @chef_config[:validation_client_name] %>"
37
+ <% if @config[:chef_node_name] -%>
38
+ node_name "<%= @config[:chef_node_name] %>"
39
+ <% else -%>
40
+ # Using default node name (fqdn)
41
+ <% end -%>
42
+ # ArchLinux follows the Filesystem Hierarchy Standard
43
+ file_cache_path "/var/cache/chef"
44
+ file_backup_path "/var/lib/chef/backup"
45
+ pid_file "/var/run/chef/client.pid"
46
+ cache_options({ :path => "/var/cache/chef/checksums", :skip_expires => true})
47
+ <% if knife_config[:bootstrap_proxy] %>
48
+ http_proxy "<%= knife_config[:bootstrap_proxy] %>"
49
+ https_proxy "<%= knife_config[:bootstrap_proxy] %>"
50
+ <% end -%>
51
+ EOP
52
+ ) > /etc/chef/client.rb
53
+
54
+ (
55
+ cat <<'EOP'
56
+ <%= { "run_list" => @run_list }.to_json %>
57
+ EOP
58
+ ) > /etc/chef/first-boot.json
59
+
60
+ <%= start_chef %>'
@@ -0,0 +1,56 @@
1
+ bash -c '
2
+ <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
3
+
4
+ if [ ! -f /usr/bin/chef-client ]; then
5
+ wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
6
+ rpm -Uvh epel-release-5-4.noarch.rpm
7
+ wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://rpm.aegisco.com/aegisco/rhel/aegisco-rhel.rpm
8
+ rpm -Uvh aegisco-rhel.rpm
9
+
10
+ yum install -y ruby ruby-devel gcc gcc-c++ automake autoconf make
11
+
12
+ cd /tmp
13
+ wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz
14
+ tar zxf rubygems-1.6.2.tgz
15
+ cd rubygems-1.6.2
16
+ ruby setup.rb --no-format-executable
17
+ fi
18
+
19
+ gem update --system
20
+ gem update
21
+ gem install ohai --no-rdoc --no-ri --verbose
22
+ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
23
+
24
+ mkdir -p /etc/chef
25
+
26
+ (
27
+ cat <<'EOP'
28
+ <%= validation_key %>
29
+ EOP
30
+ ) > /tmp/validation.pem
31
+ awk NF /tmp/validation.pem > /etc/chef/validation.pem
32
+ rm /tmp/validation.pem
33
+
34
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
35
+ (
36
+ cat <<'EOP'
37
+ <%= encrypted_data_bag_secret %>
38
+ EOP
39
+ ) > /tmp/encrypted_data_bag_secret
40
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
41
+ rm /tmp/encrypted_data_bag_secret
42
+ <% end -%>
43
+
44
+ (
45
+ cat <<'EOP'
46
+ <%= config_content %>
47
+ EOP
48
+ ) > /etc/chef/client.rb
49
+
50
+ (
51
+ cat <<'EOP'
52
+ <%= { "run_list" => @run_list }.to_json %>
53
+ EOP
54
+ ) > /etc/chef/first-boot.json
55
+
56
+ <%= start_chef %>'
@@ -0,0 +1,43 @@
1
+ bash -c '
2
+ <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
3
+
4
+ yum install -y ruby ruby-devel gcc gcc-c++ automake autoconf rubygems make
5
+
6
+ gem update --system
7
+ gem update
8
+ gem install ohai --no-rdoc --no-ri --verbose
9
+ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
10
+
11
+ mkdir -p /etc/chef
12
+
13
+ (
14
+ cat <<'EOP'
15
+ <%= validation_key %>
16
+ EOP
17
+ ) > /tmp/validation.pem
18
+ awk NF /tmp/validation.pem > /etc/chef/validation.pem
19
+ rm /tmp/validation.pem
20
+
21
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
22
+ (
23
+ cat <<'EOP'
24
+ <%= encrypted_data_bag_secret %>
25
+ EOP
26
+ ) > /tmp/encrypted_data_bag_secret
27
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
28
+ rm /tmp/encrypted_data_bag_secret
29
+ <% end -%>
30
+
31
+ (
32
+ cat <<'EOP'
33
+ <%= config_content %>
34
+ EOP
35
+ ) > /etc/chef/client.rb
36
+
37
+ (
38
+ cat <<'EOP'
39
+ <%= { "run_list" => @run_list }.to_json %>
40
+ EOP
41
+ ) > /etc/chef/first-boot.json
42
+
43
+ <%= start_chef %>'
@@ -0,0 +1,49 @@
1
+ bash -c '
2
+ <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
3
+
4
+ if [ ! -f /usr/bin/chef-client ]; then
5
+ echo "chef chef/chef_server_url string <%= @chef_config[:chef_server_url] %>" | debconf-set-selections
6
+ [ -f /etc/apt/sources.list.d/opscode.list ] || echo "deb http://apt.opscode.com <%= chef_version.to_f == 0.10 ? "lucid-0.10" : "lucid" %> main" > /etc/apt/sources.list.d/opscode.list
7
+ wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>-O- http://apt.opscode.com/packages@opscode.com.gpg.key | apt-key add -
8
+ fi
9
+ apt-get update
10
+ apt-get install -y chef
11
+
12
+ (
13
+ cat <<'EOP'
14
+ <%= validation_key %>
15
+ EOP
16
+ ) > /tmp/validation.pem
17
+ awk NF /tmp/validation.pem > /etc/chef/validation.pem
18
+ rm /tmp/validation.pem
19
+
20
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
21
+ (
22
+ cat <<'EOP'
23
+ <%= encrypted_data_bag_secret %>
24
+ EOP
25
+ ) > /tmp/encrypted_data_bag_secret
26
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
27
+ rm /tmp/encrypted_data_bag_secret
28
+ <% end -%>
29
+
30
+ <% unless @chef_config[:validation_client_name] == "chef-validator" -%>
31
+ [ `grep -qx "validation_client_name \"<%= @chef_config[:validation_client_name] %>\"" /etc/chef/client.rb` ] || echo "validation_client_name \"<%= @chef_config[:validation_client_name] %>\"" >> /etc/chef/client.rb
32
+ <% end -%>
33
+
34
+ <% if @config[:chef_node_name] %>
35
+ [ `grep -qx "node_name \"<%= @config[:chef_node_name] %>\"" /etc/chef/client.rb` ] || echo "node_name \"<%= @config[:chef_node_name] %>\"" >> /etc/chef/client.rb
36
+ <% end -%>
37
+
38
+ <% if knife_config[:bootstrap_proxy] %>
39
+ echo 'http_proxy "knife_config[:bootstrap_proxy]"' >> /etc/chef/client.rb
40
+ echo 'https_proxy "knife_config[:bootstrap_proxy]"' >> /etc/chef/client.rb
41
+ <% end -%>
42
+
43
+ (
44
+ cat <<'EOP'
45
+ <%= { "run_list" => @run_list }.to_json %>
46
+ EOP
47
+ ) > /etc/chef/first-boot.json
48
+
49
+ <%= start_chef %>'
@@ -0,0 +1,50 @@
1
+ bash -c '
2
+ <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
3
+
4
+ if [ ! -f /usr/bin/chef-client ]; then
5
+ apt-get update
6
+ apt-get install -y ruby ruby1.8-dev build-essential wget libruby-extras libruby1.8-extras
7
+ cd /tmp
8
+ wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz
9
+ tar zxf rubygems-1.6.2.tgz
10
+ cd rubygems-1.6.2
11
+ ruby setup.rb --no-format-executable
12
+ fi
13
+
14
+ gem update --no-rdoc --no-ri
15
+ gem install ohai --no-rdoc --no-ri --verbose
16
+ gem install chef --no-rdoc --no-ri --verbose <%= bootstrap_version_string %>
17
+
18
+ mkdir -p /etc/chef
19
+
20
+ (
21
+ cat <<'EOP'
22
+ <%= validation_key %>
23
+ EOP
24
+ ) > /tmp/validation.pem
25
+ awk NF /tmp/validation.pem > /etc/chef/validation.pem
26
+ rm /tmp/validation.pem
27
+
28
+ <% if @chef_config[:encrypted_data_bag_secret] -%>
29
+ (
30
+ cat <<'EOP'
31
+ <%= encrypted_data_bag_secret %>
32
+ EOP
33
+ ) > /tmp/encrypted_data_bag_secret
34
+ awk NF /tmp/encrypted_data_bag_secret > /etc/chef/encrypted_data_bag_secret
35
+ rm /tmp/encrypted_data_bag_secret
36
+ <% end -%>
37
+
38
+ (
39
+ cat <<'EOP'
40
+ <%= config_content %>
41
+ EOP
42
+ ) > /etc/chef/client.rb
43
+
44
+ (
45
+ cat <<'EOP'
46
+ <%= { "run_list" => @run_list }.to_json %>
47
+ EOP
48
+ ) > /etc/chef/first-boot.json
49
+
50
+ <%= start_chef %>'