mbailey-chef 0.9.12.1

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 (345) hide show
  1. data/LICENSE +201 -0
  2. data/README.rdoc +172 -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/common/man/man1/chef-indexer.1 +42 -0
  9. data/distro/common/man/man1/chef-server-webui.1 +106 -0
  10. data/distro/common/man/man1/chef-server.1 +107 -0
  11. data/distro/common/man/man1/chef-solr-indexer.1 +55 -0
  12. data/distro/common/man/man1/chef-solr.1 +55 -0
  13. data/distro/common/man/man8/chef-client.8 +63 -0
  14. data/distro/common/man/man8/chef-solo.8 +57 -0
  15. data/distro/common/man/man8/chef-solr-rebuild.8 +37 -0
  16. data/distro/common/man/man8/knife.8 +1349 -0
  17. data/distro/common/man/man8/shef.8 +45 -0
  18. data/distro/common/markdown/README +3 -0
  19. data/distro/common/markdown/knife.mkd +832 -0
  20. data/distro/debian/etc/default/chef-client +4 -0
  21. data/distro/debian/etc/default/chef-server +9 -0
  22. data/distro/debian/etc/default/chef-server-webui +9 -0
  23. data/distro/debian/etc/default/chef-solr +7 -0
  24. data/distro/debian/etc/default/chef-solr-indexer +7 -0
  25. data/distro/debian/etc/init/chef-client.conf +17 -0
  26. data/distro/debian/etc/init/chef-server-webui.conf +17 -0
  27. data/distro/debian/etc/init/chef-server.conf +17 -0
  28. data/distro/debian/etc/init/chef-solr-indexer.conf +17 -0
  29. data/distro/debian/etc/init/chef-solr.conf +17 -0
  30. data/distro/debian/etc/init.d/chef-client +175 -0
  31. data/distro/debian/etc/init.d/chef-server +122 -0
  32. data/distro/debian/etc/init.d/chef-server-webui +123 -0
  33. data/distro/debian/etc/init.d/chef-solr +177 -0
  34. data/distro/debian/etc/init.d/chef-solr-indexer +176 -0
  35. data/distro/redhat/etc/init.d/chef-client +106 -0
  36. data/distro/redhat/etc/init.d/chef-server +112 -0
  37. data/distro/redhat/etc/init.d/chef-server-webui +112 -0
  38. data/distro/redhat/etc/init.d/chef-solr +104 -0
  39. data/distro/redhat/etc/init.d/chef-solr-indexer +104 -0
  40. data/distro/redhat/etc/logrotate.d/chef-client +8 -0
  41. data/distro/redhat/etc/logrotate.d/chef-server +8 -0
  42. data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
  43. data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
  44. data/distro/redhat/etc/logrotate.d/chef-solr-indexer +8 -0
  45. data/distro/redhat/etc/sysconfig/chef-client +15 -0
  46. data/distro/redhat/etc/sysconfig/chef-server +14 -0
  47. data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
  48. data/distro/redhat/etc/sysconfig/chef-solr +8 -0
  49. data/distro/redhat/etc/sysconfig/chef-solr-indexer +7 -0
  50. data/lib/chef/api_client.rb +264 -0
  51. data/lib/chef/application/agent.rb +18 -0
  52. data/lib/chef/application/client.rb +246 -0
  53. data/lib/chef/application/knife.rb +171 -0
  54. data/lib/chef/application/solo.rb +215 -0
  55. data/lib/chef/application.rb +127 -0
  56. data/lib/chef/applications.rb +4 -0
  57. data/lib/chef/certificate.rb +194 -0
  58. data/lib/chef/checksum.rb +182 -0
  59. data/lib/chef/checksum_cache.rb +173 -0
  60. data/lib/chef/client.rb +304 -0
  61. data/lib/chef/config.rb +240 -0
  62. data/lib/chef/cookbook/cookbook_collection.rb +44 -0
  63. data/lib/chef/cookbook/file_system_file_vendor.rb +54 -0
  64. data/lib/chef/cookbook/file_vendor.rb +48 -0
  65. data/lib/chef/cookbook/metadata/version.rb +87 -0
  66. data/lib/chef/cookbook/metadata.rb +500 -0
  67. data/lib/chef/cookbook/remote_file_vendor.rb +87 -0
  68. data/lib/chef/cookbook/syntax_check.rb +136 -0
  69. data/lib/chef/cookbook_loader.rb +227 -0
  70. data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
  71. data/lib/chef/cookbook_uploader.rb +103 -0
  72. data/lib/chef/cookbook_version.rb +930 -0
  73. data/lib/chef/couchdb.rb +239 -0
  74. data/lib/chef/daemon.rb +172 -0
  75. data/lib/chef/data_bag.rb +215 -0
  76. data/lib/chef/data_bag_item.rb +228 -0
  77. data/lib/chef/exceptions.rb +66 -0
  78. data/lib/chef/file_access_control.rb +140 -0
  79. data/lib/chef/file_cache.rb +218 -0
  80. data/lib/chef/handler/json_file.rb +58 -0
  81. data/lib/chef/handler.rb +206 -0
  82. data/lib/chef/index_queue/amqp_client.rb +113 -0
  83. data/lib/chef/index_queue/consumer.rb +76 -0
  84. data/lib/chef/index_queue/indexable.rb +76 -0
  85. data/lib/chef/index_queue.rb +29 -0
  86. data/lib/chef/knife/bootstrap/archlinux-gems.erb +44 -0
  87. data/lib/chef/knife/bootstrap/centos5-gems.erb +41 -0
  88. data/lib/chef/knife/bootstrap/client-install.vbs +80 -0
  89. data/lib/chef/knife/bootstrap/fedora13-gems.erb +38 -0
  90. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +32 -0
  91. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +43 -0
  92. data/lib/chef/knife/bootstrap/windows-gems.erb +34 -0
  93. data/lib/chef/knife/bootstrap.rb +181 -0
  94. data/lib/chef/knife/client_bulk_delete.rb +40 -0
  95. data/lib/chef/knife/client_create.rb +70 -0
  96. data/lib/chef/knife/client_delete.rb +45 -0
  97. data/lib/chef/knife/client_edit.rb +45 -0
  98. data/lib/chef/knife/client_list.rb +40 -0
  99. data/lib/chef/knife/client_reregister.rb +56 -0
  100. data/lib/chef/knife/client_show.rb +50 -0
  101. data/lib/chef/knife/configure.rb +140 -0
  102. data/lib/chef/knife/configure_client.rb +52 -0
  103. data/lib/chef/knife/cookbook_bulk_delete.rb +58 -0
  104. data/lib/chef/knife/cookbook_create.rb +209 -0
  105. data/lib/chef/knife/cookbook_delete.rb +143 -0
  106. data/lib/chef/knife/cookbook_download.rb +130 -0
  107. data/lib/chef/knife/cookbook_list.rb +41 -0
  108. data/lib/chef/knife/cookbook_metadata.rb +82 -0
  109. data/lib/chef/knife/cookbook_metadata_from_file.rb +40 -0
  110. data/lib/chef/knife/cookbook_show.rb +98 -0
  111. data/lib/chef/knife/cookbook_site_download.rb +58 -0
  112. data/lib/chef/knife/cookbook_site_list.rb +56 -0
  113. data/lib/chef/knife/cookbook_site_search.rb +51 -0
  114. data/lib/chef/knife/cookbook_site_share.rb +109 -0
  115. data/lib/chef/knife/cookbook_site_show.rb +57 -0
  116. data/lib/chef/knife/cookbook_site_unshare.rb +52 -0
  117. data/lib/chef/knife/cookbook_site_vendor.rb +133 -0
  118. data/lib/chef/knife/cookbook_test.rb +82 -0
  119. data/lib/chef/knife/cookbook_upload.rb +95 -0
  120. data/lib/chef/knife/data_bag_create.rb +59 -0
  121. data/lib/chef/knife/data_bag_delete.rb +48 -0
  122. data/lib/chef/knife/data_bag_edit.rb +50 -0
  123. data/lib/chef/knife/data_bag_from_file.rb +44 -0
  124. data/lib/chef/knife/data_bag_list.rb +43 -0
  125. data/lib/chef/knife/data_bag_show.rb +41 -0
  126. data/lib/chef/knife/ec2_instance_data.rb +46 -0
  127. data/lib/chef/knife/ec2_server_create.rb +216 -0
  128. data/lib/chef/knife/ec2_server_delete.rb +90 -0
  129. data/lib/chef/knife/ec2_server_list.rb +88 -0
  130. data/lib/chef/knife/exec.rb +52 -0
  131. data/lib/chef/knife/index_rebuild.rb +51 -0
  132. data/lib/chef/knife/node_bulk_delete.rb +43 -0
  133. data/lib/chef/knife/node_create.rb +47 -0
  134. data/lib/chef/knife/node_delete.rb +44 -0
  135. data/lib/chef/knife/node_edit.rb +44 -0
  136. data/lib/chef/knife/node_from_file.rb +42 -0
  137. data/lib/chef/knife/node_list.rb +41 -0
  138. data/lib/chef/knife/node_run_list_add.rb +64 -0
  139. data/lib/chef/knife/node_run_list_remove.rb +45 -0
  140. data/lib/chef/knife/node_show.rb +54 -0
  141. data/lib/chef/knife/rackspace_server_create.rb +156 -0
  142. data/lib/chef/knife/rackspace_server_delete.rb +57 -0
  143. data/lib/chef/knife/rackspace_server_list.rb +59 -0
  144. data/lib/chef/knife/recipe_list.rb +32 -0
  145. data/lib/chef/knife/role_bulk_delete.rb +44 -0
  146. data/lib/chef/knife/role_create.rb +52 -0
  147. data/lib/chef/knife/role_delete.rb +44 -0
  148. data/lib/chef/knife/role_edit.rb +45 -0
  149. data/lib/chef/knife/role_from_file.rb +46 -0
  150. data/lib/chef/knife/role_list.rb +40 -0
  151. data/lib/chef/knife/role_show.rb +51 -0
  152. data/lib/chef/knife/search.rb +94 -0
  153. data/lib/chef/knife/slicehost_images_list.rb +53 -0
  154. data/lib/chef/knife/slicehost_server_create.rb +103 -0
  155. data/lib/chef/knife/slicehost_server_delete.rb +61 -0
  156. data/lib/chef/knife/slicehost_server_list.rb +64 -0
  157. data/lib/chef/knife/ssh.rb +328 -0
  158. data/lib/chef/knife/status.rb +87 -0
  159. data/lib/chef/knife/terremark_server_create.rb +152 -0
  160. data/lib/chef/knife/terremark_server_delete.rb +87 -0
  161. data/lib/chef/knife/terremark_server_list.rb +77 -0
  162. data/lib/chef/knife/windows_bootstrap.rb +154 -0
  163. data/lib/chef/knife.rb +522 -0
  164. data/lib/chef/log.rb +61 -0
  165. data/lib/chef/mixin/check_helper.rb +31 -0
  166. data/lib/chef/mixin/checksum.rb +32 -0
  167. data/lib/chef/mixin/command/unix.rb +215 -0
  168. data/lib/chef/mixin/command/windows.rb +72 -0
  169. data/lib/chef/mixin/command.rb +220 -0
  170. data/lib/chef/mixin/convert_to_class_name.rb +63 -0
  171. data/lib/chef/mixin/create_path.rb +56 -0
  172. data/lib/chef/mixin/deep_merge.rb +225 -0
  173. data/lib/chef/mixin/deprecation.rb +65 -0
  174. data/lib/chef/mixin/find_preferred_file.rb +92 -0
  175. data/lib/chef/mixin/from_file.rb +50 -0
  176. data/lib/chef/mixin/language.rb +156 -0
  177. data/lib/chef/mixin/language_include_attribute.rb +61 -0
  178. data/lib/chef/mixin/language_include_recipe.rb +52 -0
  179. data/lib/chef/mixin/params_validate.rb +225 -0
  180. data/lib/chef/mixin/recipe_definition_dsl_core.rb +81 -0
  181. data/lib/chef/mixin/shell_out.rb +38 -0
  182. data/lib/chef/mixin/template.rb +95 -0
  183. data/lib/chef/mixin/xml_escape.rb +140 -0
  184. data/lib/chef/mixins.rb +16 -0
  185. data/lib/chef/monkey_patches/dir.rb +36 -0
  186. data/lib/chef/monkey_patches/string.rb +28 -0
  187. data/lib/chef/monkey_patches/tempfile.rb +64 -0
  188. data/lib/chef/node/attribute.rb +465 -0
  189. data/lib/chef/node.rb +601 -0
  190. data/lib/chef/openid_registration.rb +187 -0
  191. data/lib/chef/platform.rb +371 -0
  192. data/lib/chef/provider/breakpoint.rb +36 -0
  193. data/lib/chef/provider/cookbook_file.rb +100 -0
  194. data/lib/chef/provider/cron/solaris.rb +195 -0
  195. data/lib/chef/provider/cron.rb +186 -0
  196. data/lib/chef/provider/deploy/revision.rb +73 -0
  197. data/lib/chef/provider/deploy/timestamped.rb +33 -0
  198. data/lib/chef/provider/deploy.rb +319 -0
  199. data/lib/chef/provider/directory.rb +72 -0
  200. data/lib/chef/provider/env/windows.rb +75 -0
  201. data/lib/chef/provider/env.rb +152 -0
  202. data/lib/chef/provider/erl_call.rb +72 -0
  203. data/lib/chef/provider/execute.rb +58 -0
  204. data/lib/chef/provider/file.rb +213 -0
  205. data/lib/chef/provider/git.rb +211 -0
  206. data/lib/chef/provider/group/dscl.rb +121 -0
  207. data/lib/chef/provider/group/gpasswd.rb +53 -0
  208. data/lib/chef/provider/group/groupadd.rb +78 -0
  209. data/lib/chef/provider/group/pw.rb +84 -0
  210. data/lib/chef/provider/group/usermod.rb +57 -0
  211. data/lib/chef/provider/group/windows.rb +79 -0
  212. data/lib/chef/provider/group.rb +133 -0
  213. data/lib/chef/provider/http_request.rb +122 -0
  214. data/lib/chef/provider/ifconfig.rb +132 -0
  215. data/lib/chef/provider/link.rb +161 -0
  216. data/lib/chef/provider/log.rb +54 -0
  217. data/lib/chef/provider/mdadm.rb +91 -0
  218. data/lib/chef/provider/mount/mount.rb +232 -0
  219. data/lib/chef/provider/mount/windows.rb +80 -0
  220. data/lib/chef/provider/mount.rb +117 -0
  221. data/lib/chef/provider/ohai.rb +41 -0
  222. data/lib/chef/provider/package/apt.rb +110 -0
  223. data/lib/chef/provider/package/dpkg.rb +112 -0
  224. data/lib/chef/provider/package/easy_install.rb +114 -0
  225. data/lib/chef/provider/package/freebsd.rb +123 -0
  226. data/lib/chef/provider/package/macports.rb +105 -0
  227. data/lib/chef/provider/package/pacman.rb +101 -0
  228. data/lib/chef/provider/package/portage.rb +124 -0
  229. data/lib/chef/provider/package/rpm.rb +101 -0
  230. data/lib/chef/provider/package/rubygems.rb +462 -0
  231. data/lib/chef/provider/package/solaris.rb +127 -0
  232. data/lib/chef/provider/package/yum-dump.py +128 -0
  233. data/lib/chef/provider/package/yum.rb +222 -0
  234. data/lib/chef/provider/package/zypper.rb +133 -0
  235. data/lib/chef/provider/package.rb +160 -0
  236. data/lib/chef/provider/remote_directory.rb +140 -0
  237. data/lib/chef/provider/remote_file.rb +120 -0
  238. data/lib/chef/provider/route.rb +195 -0
  239. data/lib/chef/provider/ruby_block.rb +33 -0
  240. data/lib/chef/provider/script.rb +55 -0
  241. data/lib/chef/provider/service/arch.rb +109 -0
  242. data/lib/chef/provider/service/debian.rb +105 -0
  243. data/lib/chef/provider/service/freebsd.rb +156 -0
  244. data/lib/chef/provider/service/gentoo.rb +54 -0
  245. data/lib/chef/provider/service/init.rb +71 -0
  246. data/lib/chef/provider/service/redhat.rb +60 -0
  247. data/lib/chef/provider/service/simple.rb +118 -0
  248. data/lib/chef/provider/service/solaris.rb +85 -0
  249. data/lib/chef/provider/service/upstart.rb +192 -0
  250. data/lib/chef/provider/service/windows.rb +129 -0
  251. data/lib/chef/provider/service.rb +128 -0
  252. data/lib/chef/provider/subversion.rb +159 -0
  253. data/lib/chef/provider/template.rb +105 -0
  254. data/lib/chef/provider/user/dscl.rb +280 -0
  255. data/lib/chef/provider/user/pw.rb +113 -0
  256. data/lib/chef/provider/user/useradd.rb +137 -0
  257. data/lib/chef/provider/user/windows.rb +124 -0
  258. data/lib/chef/provider/user.rb +187 -0
  259. data/lib/chef/provider.rb +124 -0
  260. data/lib/chef/providers.rb +91 -0
  261. data/lib/chef/recipe.rb +130 -0
  262. data/lib/chef/resource/apt_package.rb +34 -0
  263. data/lib/chef/resource/bash.rb +33 -0
  264. data/lib/chef/resource/breakpoint.rb +35 -0
  265. data/lib/chef/resource/cookbook_file.rb +45 -0
  266. data/lib/chef/resource/cron.rb +188 -0
  267. data/lib/chef/resource/csh.rb +33 -0
  268. data/lib/chef/resource/deploy.rb +371 -0
  269. data/lib/chef/resource/deploy_revision.rb +35 -0
  270. data/lib/chef/resource/directory.rb +76 -0
  271. data/lib/chef/resource/dpkg_package.rb +34 -0
  272. data/lib/chef/resource/easy_install_package.rb +41 -0
  273. data/lib/chef/resource/env.rb +58 -0
  274. data/lib/chef/resource/erl_call.rb +83 -0
  275. data/lib/chef/resource/execute.rb +127 -0
  276. data/lib/chef/resource/file.rb +92 -0
  277. data/lib/chef/resource/freebsd_package.rb +35 -0
  278. data/lib/chef/resource/gem_package.rb +49 -0
  279. data/lib/chef/resource/git.rb +36 -0
  280. data/lib/chef/resource/group.rb +70 -0
  281. data/lib/chef/resource/http_request.rb +61 -0
  282. data/lib/chef/resource/ifconfig.rb +134 -0
  283. data/lib/chef/resource/link.rb +78 -0
  284. data/lib/chef/resource/log.rb +62 -0
  285. data/lib/chef/resource/macports_package.rb +29 -0
  286. data/lib/chef/resource/mdadm.rb +82 -0
  287. data/lib/chef/resource/mount.rb +135 -0
  288. data/lib/chef/resource/ohai.rb +40 -0
  289. data/lib/chef/resource/package.rb +80 -0
  290. data/lib/chef/resource/pacman_package.rb +33 -0
  291. data/lib/chef/resource/perl.rb +33 -0
  292. data/lib/chef/resource/portage_package.rb +33 -0
  293. data/lib/chef/resource/python.rb +33 -0
  294. data/lib/chef/resource/remote_directory.rb +109 -0
  295. data/lib/chef/resource/remote_file.rb +83 -0
  296. data/lib/chef/resource/route.rb +135 -0
  297. data/lib/chef/resource/rpm_package.rb +34 -0
  298. data/lib/chef/resource/ruby.rb +33 -0
  299. data/lib/chef/resource/ruby_block.rb +40 -0
  300. data/lib/chef/resource/scm.rb +146 -0
  301. data/lib/chef/resource/script.rb +60 -0
  302. data/lib/chef/resource/service.rb +160 -0
  303. data/lib/chef/resource/solaris_package.rb +36 -0
  304. data/lib/chef/resource/subversion.rb +36 -0
  305. data/lib/chef/resource/template.rb +69 -0
  306. data/lib/chef/resource/timestamped_deploy.rb +31 -0
  307. data/lib/chef/resource/user.rb +130 -0
  308. data/lib/chef/resource/yum_package.rb +43 -0
  309. data/lib/chef/resource.rb +523 -0
  310. data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
  311. data/lib/chef/resource_collection.rb +217 -0
  312. data/lib/chef/resource_definition.rb +67 -0
  313. data/lib/chef/resource_definition_list.rb +38 -0
  314. data/lib/chef/resources.rb +64 -0
  315. data/lib/chef/rest/auth_credentials.rb +78 -0
  316. data/lib/chef/rest/cookie_jar.rb +31 -0
  317. data/lib/chef/rest/rest_request.rb +188 -0
  318. data/lib/chef/rest.rb +394 -0
  319. data/lib/chef/role.rb +287 -0
  320. data/lib/chef/run_context.rb +110 -0
  321. data/lib/chef/run_list/run_list_expansion.rb +172 -0
  322. data/lib/chef/run_list/run_list_item.rb +78 -0
  323. data/lib/chef/run_list.rb +150 -0
  324. data/lib/chef/run_status.rb +121 -0
  325. data/lib/chef/runner.rb +107 -0
  326. data/lib/chef/sandbox.rb +153 -0
  327. data/lib/chef/search/query.rb +60 -0
  328. data/lib/chef/shef/ext.rb +568 -0
  329. data/lib/chef/shef/model_wrapper.rb +120 -0
  330. data/lib/chef/shef/shef_rest.rb +28 -0
  331. data/lib/chef/shef/shef_session.rb +271 -0
  332. data/lib/chef/shef.rb +325 -0
  333. data/lib/chef/shell_out.rb +413 -0
  334. data/lib/chef/streaming_cookbook_uploader.rb +201 -0
  335. data/lib/chef/tasks/chef_repo.rake +256 -0
  336. data/lib/chef/util/file_edit.rb +122 -0
  337. data/lib/chef/util/windows/net_group.rb +101 -0
  338. data/lib/chef/util/windows/net_use.rb +121 -0
  339. data/lib/chef/util/windows/net_user.rb +198 -0
  340. data/lib/chef/util/windows/volume.rb +59 -0
  341. data/lib/chef/util/windows.rb +56 -0
  342. data/lib/chef/version.rb +21 -0
  343. data/lib/chef/webui_user.rb +231 -0
  344. data/lib/chef.rb +39 -0
  345. metadata +533 -0
@@ -0,0 +1,8 @@
1
+ /var/log/chef/server-webui.log {
2
+ rotate 12
3
+ weekly
4
+ compress
5
+ postrotate
6
+ /etc/init.d/chef-server-webui condrestart >/dev/null || :
7
+ endscript
8
+ }
@@ -0,0 +1,8 @@
1
+ /var/log/chef/solr.log {
2
+ rotate 12
3
+ weekly
4
+ compress
5
+ postrotate
6
+ /etc/init.d/chef-solr condrestart >/dev/null || :
7
+ endscript
8
+ }
@@ -0,0 +1,8 @@
1
+ /var/log/chef/solr-indexer.log {
2
+ rotate 12
3
+ weekly
4
+ compress
5
+ postrotate
6
+ /etc/init.d/chef-solr-indexer condrestart >/dev/null || :
7
+ endscript
8
+ }
@@ -0,0 +1,15 @@
1
+ # Configuration file for the chef-client service
2
+
3
+ #CONFIG=/etc/chef/client.rb
4
+ #PIDFILE=/var/run/chef/client.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-client
6
+ #LOGFILE=/var/log/chef/client.log
7
+ # Sleep interval between runs.
8
+ # This value is in seconds.
9
+ #INTERVAL=1800
10
+ # Maximum amount of random delay before starting a run. Prevents every client
11
+ # from contacting the server at the exact same time.
12
+ # This value is in seconds.
13
+ #SPLAY=20
14
+ # Any additional chef-client options.
15
+ #OPTIONS=
@@ -0,0 +1,14 @@
1
+ # Configuration file for the chef-server service
2
+
3
+ #CONFIG=/etc/chef/server.rb
4
+ #PIDFILE=/var/run/chef/server.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-server
6
+ #LOGFILE=/var/log/chef/server.log
7
+ #PORT=4000
8
+ #ENVIRONMENT=production
9
+ #ADAPTER=thin
10
+ #CHILDPIDFILES=/var/run/chef/server.%s.pid
11
+ #SERVER_USER=chef
12
+ #SERVER_GROUP=chef
13
+ # Any additional chef-server options.
14
+ #OPTIONS=
@@ -0,0 +1,14 @@
1
+ # Configuration file for the chef-server-webui service
2
+
3
+ #CONFIG=/etc/chef/webui.rb
4
+ #PIDFILE=/var/run/chef/server-webui.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-server-webui
6
+ #LOGFILE=/var/log/chef/server-webui.log
7
+ #PORT=4040
8
+ #ENVIRONMENT=production
9
+ #ADAPTER=thin
10
+ #CHILDPIDFILES=/var/run/chef/server-webui.%s.pid
11
+ #SERVER_USER=chef
12
+ #SERVER_GROUP=chef
13
+ # Any additional chef-server-webui options.
14
+ #OPTIONS=
@@ -0,0 +1,8 @@
1
+ # Configuration file for the chef-solr service
2
+
3
+ #CONFIG=/etc/chef/solr.rb
4
+ #PIDFILE=/var/run/chef/solr.pid
5
+ #LOCKFILE=/var/lock/subsys/chef-solr
6
+ #LOGFILE=/var/log/chef/solr.log
7
+ # Options for Java. Need to start with -j followed by options.
8
+ #OPTIONS="-j "
@@ -0,0 +1,7 @@
1
+ # Configuration file for the chef-solr-indexer service
2
+
3
+ #PIDFILE=/var/run/chef/solr-indexer.pid
4
+ #CONFIG=/etc/chef/solr-indexer.rb
5
+ #LOGFILE=/var/log/chef/solr-indexer.log
6
+ # Any additional chef-solr-indexer options.
7
+ #OPTIONS=
@@ -0,0 +1,264 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Author:: Nuo Yan (<nuo@opscode.com>)
4
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require 'chef/config'
21
+ require 'chef/mixin/params_validate'
22
+ require 'chef/mixin/from_file'
23
+ require 'chef/couchdb'
24
+ require 'chef/certificate'
25
+ require 'chef/index_queue'
26
+ require 'extlib'
27
+ require 'json'
28
+
29
+ class Chef
30
+ class ApiClient
31
+
32
+ include Chef::Mixin::FromFile
33
+ include Chef::Mixin::ParamsValidate
34
+ include Chef::IndexQueue::Indexable
35
+
36
+
37
+ DESIGN_DOCUMENT = {
38
+ "version" => 1,
39
+ "language" => "javascript",
40
+ "views" => {
41
+ "all" => {
42
+ "map" => <<-EOJS
43
+ function(doc) {
44
+ if (doc.chef_type == "client") {
45
+ emit(doc.name, doc);
46
+ }
47
+ }
48
+ EOJS
49
+ },
50
+ "all_id" => {
51
+ "map" => <<-EOJS
52
+ function(doc) {
53
+ if (doc.chef_type == "client") {
54
+ emit(doc.name, doc.name);
55
+ }
56
+ }
57
+ EOJS
58
+ }
59
+ }
60
+ }
61
+
62
+ attr_accessor :couchdb_rev, :couchdb_id, :couchdb
63
+
64
+ # Create a new Chef::ApiClient object.
65
+ def initialize(couchdb=nil)
66
+ @name = ''
67
+ @public_key = nil
68
+ @private_key = nil
69
+ @couchdb_rev = nil
70
+ @couchdb_id = nil
71
+ @admin = false
72
+ @couchdb = (couchdb || Chef::CouchDB.new)
73
+ end
74
+
75
+ # Gets or sets the client name.
76
+ #
77
+ # @params [Optional String] The name must be alpha-numeric plus - and _.
78
+ # @return [String] The current value of the name.
79
+ def name(arg=nil)
80
+ set_or_return(
81
+ :name,
82
+ arg,
83
+ :regex => /^[\-[:alnum:]_\.]+$/
84
+ )
85
+ end
86
+
87
+ # Gets or sets whether this client is an admin.
88
+ #
89
+ # @params [Optional True/False] Should be true or false - default is false.
90
+ # @return [True/False] The current value
91
+ def admin(arg=nil)
92
+ set_or_return(
93
+ :admin,
94
+ arg,
95
+ :kind_of => [ TrueClass, FalseClass ]
96
+ )
97
+ end
98
+
99
+ # Gets or sets the public key.
100
+ #
101
+ # @params [Optional String] The string representation of the public key.
102
+ # @return [String] The current value.
103
+ def public_key(arg=nil)
104
+ set_or_return(
105
+ :public_key,
106
+ arg,
107
+ :kind_of => String
108
+ )
109
+ end
110
+
111
+ # Gets or sets the private key.
112
+ #
113
+ # @params [Optional String] The string representation of the private key.
114
+ # @return [String] The current value.
115
+ def private_key(arg=nil)
116
+ set_or_return(
117
+ :private_key,
118
+ arg,
119
+ :kind_of => String
120
+ )
121
+ end
122
+
123
+ # Creates a new public/private key pair, and populates the public_key and
124
+ # private_key attributes.
125
+ #
126
+ # @return [True]
127
+ def create_keys
128
+ results = Chef::Certificate.gen_keypair(self.name)
129
+ self.public_key(results[0].to_s)
130
+ self.private_key(results[1].to_s)
131
+ true
132
+ end
133
+
134
+ # The hash representation of the object. Includes the name and public_key,
135
+ # but never the private key.
136
+ #
137
+ # @return [Hash]
138
+ def to_hash
139
+ result = {
140
+ "name" => @name,
141
+ "public_key" => @public_key,
142
+ "admin" => @admin,
143
+ 'json_class' => self.class.name,
144
+ "chef_type" => "client"
145
+ }
146
+ result["_rev"] = @couchdb_rev if @couchdb_rev
147
+ result
148
+ end
149
+
150
+ # The JSON representation of the object.
151
+ #
152
+ # @return [String] the JSON string.
153
+ def to_json(*a)
154
+ to_hash.to_json(*a)
155
+ end
156
+
157
+ def self.json_create(o)
158
+ client = Chef::ApiClient.new
159
+ client.name(o["name"] || o["clientname"])
160
+ client.public_key(o["public_key"])
161
+ client.admin(o["admin"])
162
+ client.couchdb_rev = o["_rev"]
163
+ client.couchdb_id = o["_id"]
164
+ client.index_id = client.couchdb_id
165
+ client
166
+ end
167
+
168
+ # List all the Chef::ApiClient objects in the CouchDB. If inflate is set
169
+ # to true, you will get the full list of all ApiClients, fully inflated.
170
+ def self.cdb_list(inflate=false, couchdb=nil)
171
+ rs = (couchdb || Chef::CouchDB.new).list("clients", inflate)
172
+ lookup = (inflate ? "value" : "key")
173
+ rs["rows"].collect { |r| r[lookup] }
174
+ end
175
+
176
+ def self.list(inflate=false)
177
+ if inflate
178
+ response = Hash.new
179
+ Chef::Search::Query.new.search(:client) do |n|
180
+ n = self.json_create(n) if n.instance_of?(Hash)
181
+ response[n.name] = n
182
+ end
183
+ response
184
+ else
185
+ Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("clients")
186
+ end
187
+ end
188
+
189
+ # Load a client by name from CouchDB
190
+ #
191
+ # @params [String] The name of the client to load
192
+ # @return [Chef::ApiClient] The resulting Chef::ApiClient object
193
+ def self.cdb_load(name, couchdb=nil)
194
+ (couchdb || Chef::CouchDB.new).load("client", name)
195
+ end
196
+
197
+ # Load a client by name via the API
198
+ def self.load(name)
199
+ response = Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("clients/#{name}")
200
+ if response.kind_of?(Chef::ApiClient)
201
+ response
202
+ else
203
+ client = Chef::ApiClient.new
204
+ client.name(response['clientname'])
205
+ client
206
+ end
207
+ end
208
+
209
+ # Remove this client from the CouchDB
210
+ #
211
+ # @params [String] The name of the client to delete
212
+ # @return [Chef::ApiClient] The last version of the object
213
+ def cdb_destroy
214
+ @couchdb.delete("client", @name, @couchdb_rev)
215
+ end
216
+
217
+ # Remove this client via the REST API
218
+ def destroy
219
+ Chef::REST.new(Chef::Config[:chef_server_url]).delete_rest("clients/#{@name}")
220
+ end
221
+
222
+ # Save this client to the CouchDB
223
+ def cdb_save
224
+ @couchdb_rev = @couchdb.store("client", @name, self)["rev"]
225
+ end
226
+
227
+ # Save this client via the REST API, returns a hash including the private key
228
+ def save(new_key=false, validation=false)
229
+ if validation
230
+ r = Chef::REST.new(Chef::Config[:chef_server_url], Chef::Config[:validation_client_name], Chef::Config[:validation_key])
231
+ else
232
+ r = Chef::REST.new(Chef::Config[:chef_server_url])
233
+ end
234
+ # First, try and create a new registration
235
+ begin
236
+ r.post_rest("clients", {:name => self.name, :admin => self.admin })
237
+ rescue Net::HTTPServerException => e
238
+ # If that fails, go ahead and try and update it
239
+ if e.response.code == "409"
240
+ r.put_rest("clients/#{name}", { :name => self.name, :admin => self.admin, :private_key => new_key })
241
+ else
242
+ raise e
243
+ end
244
+ end
245
+ end
246
+
247
+ # Create the client via the REST API
248
+ def create
249
+ Chef::REST.new(Chef::Config[:chef_server_url]).post_rest("clients", self)
250
+ end
251
+
252
+ # Set up our CouchDB design document
253
+ def self.create_design_document(couchdb=nil)
254
+ (couchdb ||= Chef::CouchDB.new).create_design_document("clients", DESIGN_DOCUMENT)
255
+ end
256
+
257
+ # As a string
258
+ def to_s
259
+ "client[#{@name}]"
260
+ end
261
+
262
+ end
263
+ end
264
+
@@ -0,0 +1,18 @@
1
+ #
2
+ # Author:: AJ Christensen (<aj@opscode.comz>)
3
+ # Copyright:: Copyright (c) 2008 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
+ require 'chef/application'
@@ -0,0 +1,246 @@
1
+ #
2
+ # Author:: AJ Christensen (<aj@opscode.com)
3
+ # Author:: Christopher Brown (<cb@opscode.com>)
4
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require 'chef/application'
20
+ require 'chef/client'
21
+ require 'chef/config'
22
+ require 'chef/daemon'
23
+ require 'chef/log'
24
+ require 'chef/rest'
25
+
26
+
27
+ class Chef::Application::Client < Chef::Application
28
+
29
+ option :config_file,
30
+ :short => "-c CONFIG",
31
+ :long => "--config CONFIG",
32
+ :default => "/etc/chef/client.rb",
33
+ :description => "The configuration file to use"
34
+
35
+ option :log_level,
36
+ :short => "-l LEVEL",
37
+ :long => "--log_level LEVEL",
38
+ :description => "Set the log level (debug, info, warn, error, fatal)",
39
+ :proc => lambda { |l| l.to_sym }
40
+
41
+ option :log_location,
42
+ :short => "-L LOGLOCATION",
43
+ :long => "--logfile LOGLOCATION",
44
+ :description => "Set the log file location, defaults to STDOUT - recommended for daemonizing",
45
+ :proc => nil
46
+
47
+ option :verbose_logging,
48
+ :short => "-V",
49
+ :long => "--verbose",
50
+ :description => "Ensures logging goes to STDOUT as well as to other configured log location(s).",
51
+ :proc => lambda { |p| true }
52
+
53
+ option :help,
54
+ :short => "-h",
55
+ :long => "--help",
56
+ :description => "Show this message",
57
+ :on => :tail,
58
+ :boolean => true,
59
+ :show_options => true,
60
+ :exit => 0
61
+
62
+ option :user,
63
+ :short => "-u USER",
64
+ :long => "--user USER",
65
+ :description => "User to set privilege to",
66
+ :proc => nil
67
+
68
+ option :group,
69
+ :short => "-g GROUP",
70
+ :long => "--group GROUP",
71
+ :description => "Group to set privilege to",
72
+ :proc => nil
73
+
74
+ option :daemonize,
75
+ :short => "-d",
76
+ :long => "--daemonize",
77
+ :description => "Daemonize the process",
78
+ :proc => lambda { |p| true }
79
+
80
+ option :pid_file,
81
+ :short => "-P PID_FILE",
82
+ :long => "--pid PIDFILE",
83
+ :description => "Set the PID file location, defaults to /tmp/chef-client.pid",
84
+ :proc => nil
85
+
86
+ option :interval,
87
+ :short => "-i SECONDS",
88
+ :long => "--interval SECONDS",
89
+ :description => "Run chef-client periodically, in seconds",
90
+ :proc => lambda { |s| s.to_i }
91
+
92
+ option :once,
93
+ :long => "--short",
94
+ :description => "Cancel any interval or splay options, run chef once and exit",
95
+ :boolean => true
96
+
97
+ option :json_attribs,
98
+ :short => "-j JSON_ATTRIBS",
99
+ :long => "--json-attributes JSON_ATTRIBS",
100
+ :description => "Load attributes from a JSON file or URL",
101
+ :proc => nil
102
+
103
+ option :node_name,
104
+ :short => "-N NODE_NAME",
105
+ :long => "--node-name NODE_NAME",
106
+ :description => "The node name for this client",
107
+ :proc => nil
108
+
109
+ option :splay,
110
+ :short => "-s SECONDS",
111
+ :long => "--splay SECONDS",
112
+ :description => "The splay time for running at intervals, in seconds",
113
+ :proc => lambda { |s| s.to_i }
114
+
115
+ option :chef_server_url,
116
+ :short => "-S CHEFSERVERURL",
117
+ :long => "--server CHEFSERVERURL",
118
+ :description => "The chef server URL",
119
+ :proc => nil
120
+
121
+ option :validation_key,
122
+ :short => "-K KEY_FILE",
123
+ :long => "--validation_key KEY_FILE",
124
+ :description => "Set the validation key file location, used for registering new clients",
125
+ :proc => nil
126
+
127
+ option :client_key,
128
+ :short => "-k KEY_FILE",
129
+ :long => "--client_key KEY_FILE",
130
+ :description => "Set the client key file location",
131
+ :proc => nil
132
+
133
+ option :version,
134
+ :short => "-v",
135
+ :long => "--version",
136
+ :description => "Show chef version",
137
+ :boolean => true,
138
+ :proc => lambda {|v| puts "Chef: #{::Chef::VERSION}"},
139
+ :exit => 0
140
+
141
+ def initialize
142
+ super
143
+
144
+ @chef_client = nil
145
+ @chef_client_json = nil
146
+ end
147
+
148
+ # Reconfigure the chef client
149
+ # Re-open the JSON attributes and load them into the node
150
+ def reconfigure
151
+ super
152
+
153
+ Chef::Config[:chef_server_url] = config[:chef_server_url] if config.has_key? :chef_server_url
154
+
155
+ if Chef::Config[:daemonize]
156
+ Chef::Config[:interval] ||= 1800
157
+ end
158
+
159
+ if Chef::Config[:once]
160
+ Chef::Config[:interval] = nil
161
+ Chef::Config[:splay] = nil
162
+ end
163
+
164
+ if Chef::Config[:json_attribs]
165
+ begin
166
+ json_io = case Chef::Config[:json_attribs]
167
+ when /^(http|https):\/\//
168
+ @rest = Chef::REST.new(Chef::Config[:json_attribs], nil, nil)
169
+ @rest.get_rest(Chef::Config[:json_attribs], true).open
170
+ else
171
+ open(Chef::Config[:json_attribs])
172
+ end
173
+ rescue SocketError => error
174
+ Chef::Application.fatal!("I cannot connect to #{Chef::Config[:json_attribs]}", 2)
175
+ rescue Errno::ENOENT => error
176
+ Chef::Application.fatal!("I cannot find #{Chef::Config[:json_attribs]}", 2)
177
+ rescue Errno::EACCES => error
178
+ Chef::Application.fatal!("Permissions are incorrect on #{Chef::Config[:json_attribs]}. Please chmod a+r #{Chef::Config[:json_attribs]}", 2)
179
+ rescue Exception => error
180
+ Chef::Application.fatal!("Got an unexpected error reading #{Chef::Config[:json_attribs]}: #{error.message}", 2)
181
+ end
182
+
183
+ begin
184
+ @chef_client_json = JSON.parse(json_io.read)
185
+ json_io.close unless json_io.closed?
186
+ rescue JSON::ParserError => error
187
+ Chef::Application.fatal!("Could not parse the provided JSON file (#{Chef::Config[:json_attribs]})!: " + error.message, 2)
188
+ end
189
+ end
190
+ end
191
+
192
+ def configure_logging
193
+ super
194
+ Chef::Log.verbose = Chef::Config[:verbose_logging]
195
+ Mixlib::Authentication::Log.logger = Ohai::Log.logger = Chef::Log.logger
196
+ end
197
+
198
+ def setup_application
199
+ Chef::Daemon.change_privilege
200
+ end
201
+
202
+ # Run the chef client, optionally daemonizing or looping at intervals.
203
+ def run_application
204
+ if Chef::Config[:version]
205
+ puts "Chef version: #{::Chef::VERSION}"
206
+ end
207
+
208
+ if Chef::Config[:daemonize]
209
+ Chef::Daemon.daemonize("chef-client")
210
+ end
211
+
212
+ loop do
213
+ begin
214
+ if Chef::Config[:splay]
215
+ splay = rand Chef::Config[:splay]
216
+ Chef::Log.debug("Splay sleep #{splay} seconds")
217
+ sleep splay
218
+ end
219
+ @chef_client = Chef::Client.new(@chef_client_json)
220
+ @chef_client_json = nil
221
+
222
+ @chef_client.run
223
+ @chef_client = nil
224
+ if Chef::Config[:interval]
225
+ Chef::Log.debug("Sleeping for #{Chef::Config[:interval]} seconds")
226
+ sleep Chef::Config[:interval]
227
+ else
228
+ Chef::Application.exit! "Exiting", 0
229
+ end
230
+ rescue SystemExit => e
231
+ raise
232
+ rescue Exception => e
233
+ if Chef::Config[:interval]
234
+ Chef::Log.error("#{e.class}:#{e}\n#{e.backtrace.join("\n")}")
235
+ Chef::Log.error("Sleeping for #{Chef::Config[:interval]} seconds before trying again")
236
+ sleep Chef::Config[:interval]
237
+ retry
238
+ else
239
+ raise
240
+ end
241
+ ensure
242
+ GC.start
243
+ end
244
+ end
245
+ end
246
+ end