poolparty 0.2.69 → 0.2.84

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 (298) hide show
  1. data/Capfile +1 -0
  2. data/History.txt +6 -0
  3. data/Manifest.txt +140 -143
  4. data/PostInstall.txt +1 -1
  5. data/README.txt +2 -0
  6. data/bin/cloud-configure +5 -2
  7. data/bin/cloud-handle-load +3 -3
  8. data/bin/cloud-maintain +3 -3
  9. data/bin/cloud-provision +6 -5
  10. data/bin/cloud-rsync +28 -0
  11. data/bin/cloud-setup-dev +25 -0
  12. data/bin/cloud-spec +40 -0
  13. data/bin/cloud-start +5 -3
  14. data/bin/server-clean-cert-for +15 -0
  15. data/bin/server-rerun +0 -1
  16. data/bin/server-start-client +1 -1
  17. data/bin/server-start-master +1 -1
  18. data/bin/server-start-node +1 -1
  19. data/bin/server-update-hosts +4 -3
  20. data/bin/server-write-new-nodes +26 -0
  21. data/generators/poolspec/USAGE +2 -2
  22. data/generators/poolspec/poolspec_generator.rb +1 -1
  23. data/lib/erlang/messenger/Makefile +15 -0
  24. data/lib/erlang/messenger/ebin/client_app.beam +0 -0
  25. data/lib/erlang/messenger/ebin/client_server.beam +0 -0
  26. data/lib/erlang/messenger/ebin/erl_crash.dump +10326 -0
  27. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  28. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  29. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  30. data/lib/erlang/messenger/ebin/pm_client_old.beam +0 -0
  31. data/lib/erlang/messenger/ebin/pm_client_supervisor.beam +0 -0
  32. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  33. data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
  34. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  35. data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
  36. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  37. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  38. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  39. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  40. data/lib/erlang/messenger/ebin/pm_spawner.beam +0 -0
  41. data/lib/erlang/messenger/ebin/pm_strings.beam +0 -0
  42. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  43. data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
  44. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  45. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  46. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  47. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  48. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  49. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  50. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  51. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  52. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  53. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  54. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  55. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  56. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  57. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  58. data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
  59. data/lib/erlang/messenger/src/pm_master.erl +5 -0
  60. data/lib/erlang/messenger/src/pm_node.erl +2 -3
  61. data/lib/erlang/messenger/src/pm_spawner.erl +213 -0
  62. data/lib/poolparty/base_packages/heartbeat.rb +57 -43
  63. data/lib/poolparty/base_packages/poolparty.rb +18 -15
  64. data/lib/poolparty/capistrano.rb +18 -0
  65. data/lib/poolparty/core/class.rb +24 -0
  66. data/lib/poolparty/core/kernel.rb +7 -0
  67. data/lib/poolparty/core/module.rb +2 -2
  68. data/lib/poolparty/core/string.rb +1 -1
  69. data/lib/poolparty/dependency_resolutions/puppet.rb +10 -2
  70. data/lib/poolparty/exceptions/ProvisionerException.rb +5 -0
  71. data/lib/poolparty/extra/deployments.rb +31 -0
  72. data/lib/poolparty/helpers/binary.rb +14 -2
  73. data/lib/poolparty/helpers/optioner.rb +61 -22
  74. data/lib/poolparty/helpers/ruberl.rb +33 -0
  75. data/lib/poolparty/modules/cloud_dsl.rb +2 -1
  76. data/lib/poolparty/modules/cloud_resourcer.rb +30 -6
  77. data/lib/poolparty/modules/configurable.rb +2 -0
  78. data/lib/poolparty/modules/file_writer.rb +4 -4
  79. data/lib/poolparty/modules/resourcing_dsl.rb +5 -5
  80. data/lib/poolparty/monitors/base_monitor.rb +1 -1
  81. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +2 -2
  82. data/lib/poolparty/net/messenger.rb +1 -1
  83. data/lib/poolparty/net/remote.rb +2 -2
  84. data/lib/poolparty/net/remote_bases/ec2.rb +51 -11
  85. data/lib/poolparty/net/remote_instance.rb +7 -3
  86. data/lib/poolparty/net/remoter.rb +72 -24
  87. data/lib/poolparty/net/remoter_base.rb +10 -0
  88. data/lib/poolparty/plugins/deploydirectory.rb +10 -5
  89. data/lib/poolparty/plugins/git.rb +51 -0
  90. data/lib/poolparty/{pool → poolparty}/base.rb +4 -2
  91. data/lib/poolparty/{pool → poolparty}/cloud.rb +32 -10
  92. data/lib/poolparty/{pool → poolparty}/plugin_model.rb +4 -4
  93. data/lib/poolparty/{pool → poolparty}/pool.rb +2 -2
  94. data/lib/poolparty/{pool → poolparty}/resource.rb +33 -15
  95. data/lib/poolparty/{pool → poolparty}/resources/class_package.rb +3 -3
  96. data/lib/poolparty/{pool → poolparty}/resources/directory.rb +6 -3
  97. data/lib/poolparty/{pool → poolparty}/resources/exec.rb +2 -5
  98. data/lib/poolparty/{pool → poolparty}/resources/file.rb +3 -3
  99. data/lib/poolparty/{pool → poolparty}/resources/package.rb +1 -1
  100. data/lib/poolparty/{pool → poolparty}/resources/remote_file.rb +1 -1
  101. data/lib/poolparty/poolparty/resources/remote_user.rb +17 -0
  102. data/lib/poolparty/{pool → poolparty}/resources/sshkey.rb +5 -1
  103. data/lib/poolparty/{pool → poolparty}/script.rb +1 -1
  104. data/lib/poolparty/provisioners/capistrano/capistrano.rb +127 -0
  105. data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +58 -0
  106. data/lib/poolparty/provisioners/capistrano/recipies/base.rb +104 -0
  107. data/lib/poolparty/provisioners/capistrano/recipies/master.rb +121 -0
  108. data/lib/poolparty/provisioners/capistrano/recipies/slave.rb +12 -0
  109. data/lib/poolparty/provisioners/provisioner_base.rb +204 -0
  110. data/lib/poolparty/spec/core/string.rb +16 -0
  111. data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +26 -0
  112. data/lib/poolparty/spec/matchers/have_cron.rb +28 -0
  113. data/lib/poolparty/spec/matchers/have_deploydirectory.rb +15 -0
  114. data/lib/poolparty/spec/matchers/have_directory.rb +31 -0
  115. data/lib/poolparty/spec/matchers/have_exec.rb +28 -0
  116. data/lib/poolparty/spec/matchers/have_file.rb +28 -0
  117. data/lib/poolparty/spec/matchers/have_gempackage.rb +28 -0
  118. data/lib/poolparty/spec/matchers/have_git.rb +28 -0
  119. data/lib/poolparty/spec/matchers/have_host.rb +28 -0
  120. data/lib/poolparty/spec/matchers/have_mount.rb +28 -0
  121. data/lib/poolparty/spec/matchers/have_package.rb +28 -0
  122. data/lib/poolparty/spec/matchers/have_remotefile.rb +28 -0
  123. data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +28 -0
  124. data/lib/poolparty/spec/matchers/have_service.rb +28 -0
  125. data/lib/poolparty/spec/matchers/have_sshkey.rb +28 -0
  126. data/lib/poolparty/spec/matchers/have_symlink.rb +28 -0
  127. data/lib/poolparty/spec/matchers/have_variable.rb +32 -0
  128. data/lib/poolparty/spec/spec/dynamic_matchers.rb +63 -0
  129. data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +7 -0
  130. data/lib/poolparty/spec/templates/have_base.rb +28 -0
  131. data/lib/poolparty/templates/authkeys +1 -1
  132. data/lib/poolparty/templates/gem +12 -10
  133. data/lib/poolparty/templates/ha.cf +9 -11
  134. data/lib/poolparty/templates/haresources +1 -1
  135. data/lib/poolparty/templates/logd.cf +42 -0
  136. data/lib/poolparty/templates/puppet.conf +18 -8
  137. data/lib/poolparty/templates/puppetcleaner +9 -3
  138. data/lib/poolparty/templates/puppetrerun +16 -3
  139. data/lib/poolparty/templates/puppetrunner +1 -1
  140. data/lib/poolparty/version.rb +1 -1
  141. data/lib/poolparty.rb +12 -8
  142. data/lib/poolpartyspec.rb +34 -0
  143. data/poolparty.gemspec +151 -149
  144. data/spec/poolparty/aska/aska_spec.rb +0 -5
  145. data/spec/poolparty/bin/console_spec.rb +3 -0
  146. data/spec/poolparty/extra/deployments_spec.rb +64 -0
  147. data/spec/poolparty/helpers/binary_spec.rb +1 -1
  148. data/spec/poolparty/helpers/optioner_spec.rb +17 -4
  149. data/spec/poolparty/modules/cloud_resourcer_spec.rb +19 -2
  150. data/spec/poolparty/modules/configurable_spec.rb +2 -2
  151. data/spec/poolparty/net/remote_bases/ec2_spec.rb +5 -2
  152. data/spec/poolparty/net/remote_instance_spec.rb +5 -0
  153. data/spec/poolparty/net/remote_spec.rb +24 -31
  154. data/spec/poolparty/net/remoter_base_spec.rb +11 -6
  155. data/spec/poolparty/net/remoter_spec.rb +55 -27
  156. data/spec/poolparty/plugins/deploydirectory_spec.rb +1 -0
  157. data/spec/poolparty/plugins/git_spec.rb +45 -0
  158. data/spec/poolparty/{pool → poolparty}/cloud_spec.rb +41 -0
  159. data/spec/poolparty/{pool → poolparty}/plugin_spec.rb +1 -1
  160. data/spec/poolparty/{pool → poolparty}/pool_spec.rb +1 -1
  161. data/spec/poolparty/{pool → poolparty}/resource_spec.rb +15 -2
  162. data/spec/poolparty/poolparty/resources/user_spec.rb +38 -0
  163. data/spec/poolparty/poolparty/test_plugins/virtual_host_template.erb +0 -0
  164. data/spec/poolparty/poolparty_spec.rb +1 -1
  165. data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +27 -0
  166. data/spec/poolparty/provisioners/provisioner_base_spec.rb +120 -0
  167. data/spec/poolparty/spec/core/string_spec.rb +57 -0
  168. data/spec/poolparty/spec_helper.rb +48 -6
  169. data/tasks/deployment.rake +3 -5
  170. data/tasks/spec.rake +2 -3
  171. data/website/index.html +2 -2
  172. metadata +150 -148
  173. data/lib/erlang/messenger/lib/eunit/.svn/all-wcprops +0 -53
  174. data/lib/erlang/messenger/lib/eunit/.svn/entries +0 -140
  175. data/lib/erlang/messenger/lib/eunit/.svn/format +0 -1
  176. data/lib/erlang/messenger/lib/eunit/.svn/prop-base/NOTES.svn-base +0 -5
  177. data/lib/erlang/messenger/lib/eunit/.svn/text-base/AUTHORS.svn-base +0 -2
  178. data/lib/erlang/messenger/lib/eunit/.svn/text-base/CHANGELOG.svn-base +0 -14
  179. data/lib/erlang/messenger/lib/eunit/.svn/text-base/COPYING.svn-base +0 -504
  180. data/lib/erlang/messenger/lib/eunit/.svn/text-base/NOTES.svn-base +0 -276
  181. data/lib/erlang/messenger/lib/eunit/.svn/text-base/README.svn-base +0 -3
  182. data/lib/erlang/messenger/lib/eunit/.svn/text-base/sys.config.svn-base +0 -9
  183. data/lib/erlang/messenger/lib/eunit/.svn/text-base/vsn.mk.svn-base +0 -1
  184. data/lib/erlang/messenger/lib/eunit/doc/.svn/all-wcprops +0 -59
  185. data/lib/erlang/messenger/lib/eunit/doc/.svn/entries +0 -142
  186. data/lib/erlang/messenger/lib/eunit/doc/.svn/format +0 -1
  187. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/erlang.png.svn-base +0 -5
  188. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/eunit.html.svn-base +0 -5
  189. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/index.html.svn-base +0 -5
  190. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/modules-frame.html.svn-base +0 -5
  191. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/overview-summary.html.svn-base +0 -5
  192. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/packages-frame.html.svn-base +0 -5
  193. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/edoc-info.svn-base +0 -3
  194. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/erlang.png.svn-base +0 -0
  195. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/eunit.html.svn-base +0 -172
  196. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/index.html.svn-base +0 -17
  197. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/modules-frame.html.svn-base +0 -12
  198. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview-summary.html.svn-base +0 -984
  199. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview.edoc.svn-base +0 -980
  200. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/packages-frame.html.svn-base +0 -11
  201. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/stylesheet.css.svn-base +0 -55
  202. data/lib/erlang/messenger/lib/eunit/ebin/.svn/all-wcprops +0 -5
  203. data/lib/erlang/messenger/lib/eunit/ebin/.svn/dir-prop-base +0 -8
  204. data/lib/erlang/messenger/lib/eunit/ebin/.svn/entries +0 -28
  205. data/lib/erlang/messenger/lib/eunit/ebin/.svn/format +0 -1
  206. data/lib/erlang/messenger/lib/eunit/examples/.svn/all-wcprops +0 -23
  207. data/lib/erlang/messenger/lib/eunit/examples/.svn/entries +0 -66
  208. data/lib/erlang/messenger/lib/eunit/examples/.svn/format +0 -1
  209. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/eunit_examples.erl.svn-base +0 -5
  210. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/fib.erl.svn-base +0 -5
  211. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/eunit_examples.erl.svn-base +0 -339
  212. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/fib.erl.svn-base +0 -19
  213. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/tests.txt.svn-base +0 -1
  214. data/lib/erlang/messenger/lib/eunit/include/.svn/all-wcprops +0 -11
  215. data/lib/erlang/messenger/lib/eunit/include/.svn/entries +0 -41
  216. data/lib/erlang/messenger/lib/eunit/include/.svn/format +0 -1
  217. data/lib/erlang/messenger/lib/eunit/include/.svn/prop-base/eunit.hrl.svn-base +0 -5
  218. data/lib/erlang/messenger/lib/eunit/include/.svn/text-base/eunit.hrl.svn-base +0 -313
  219. data/lib/erlang/messenger/lib/eunit/src/.svn/all-wcprops +0 -113
  220. data/lib/erlang/messenger/lib/eunit/src/.svn/entries +0 -259
  221. data/lib/erlang/messenger/lib/eunit/src/.svn/format +0 -1
  222. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/autoload.erl.svn-base +0 -5
  223. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/code_monitor.erl.svn-base +0 -5
  224. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit.erl.svn-base +0 -5
  225. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_autoexport.erl.svn-base +0 -5
  226. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_data.erl.svn-base +0 -5
  227. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_internal.hrl.svn-base +0 -5
  228. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_lib.erl.svn-base +0 -5
  229. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_proc.erl.svn-base +0 -5
  230. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_serial.erl.svn-base +0 -5
  231. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_server.erl.svn-base +0 -5
  232. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_striptests.erl.svn-base +0 -5
  233. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_test.erl.svn-base +0 -5
  234. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tests.erl.svn-base +0 -5
  235. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tty.erl.svn-base +0 -5
  236. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/file_monitor.erl.svn-base +0 -5
  237. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/autoload.erl.svn-base +0 -388
  238. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/code_monitor.erl.svn-base +0 -243
  239. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.app.src.svn-base +0 -21
  240. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.appup.src.svn-base +0 -1
  241. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.erl.svn-base +0 -196
  242. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_autoexport.erl.svn-base +0 -102
  243. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_data.erl.svn-base +0 -798
  244. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_internal.hrl.svn-base +0 -48
  245. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_lib.erl.svn-base +0 -682
  246. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_proc.erl.svn-base +0 -552
  247. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_serial.erl.svn-base +0 -157
  248. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_server.erl.svn-base +0 -340
  249. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_striptests.erl.svn-base +0 -64
  250. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_test.erl.svn-base +0 -334
  251. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tests.erl.svn-base +0 -45
  252. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tty.erl.svn-base +0 -272
  253. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/file_monitor.erl.svn-base +0 -409
  254. data/lib/erlang/messenger/src/pm_client_old.erl +0 -52
  255. data/lib/poolparty/helpers/provisioner_base.rb +0 -346
  256. data/lib/poolparty/helpers/provisioners/master.rb +0 -205
  257. data/lib/poolparty/helpers/provisioners/slave.rb +0 -64
  258. data/spec/poolparty/helpers/provisioner_base_spec.rb +0 -134
  259. data/spec/poolparty/helpers/provisioners/master_spec.rb +0 -54
  260. data/spec/poolparty/helpers/provisioners/slave_spec.rb +0 -28
  261. /data/lib/poolparty/{pool → poolparty}/custom_resource.rb +0 -0
  262. /data/lib/poolparty/{pool → poolparty}/loggable.rb +0 -0
  263. /data/lib/poolparty/{pool → poolparty}/plugin.rb +0 -0
  264. /data/lib/poolparty/{pool → poolparty}/resources/conditional.rb +0 -0
  265. /data/lib/poolparty/{pool → poolparty}/resources/cron.rb +0 -0
  266. /data/lib/poolparty/{pool → poolparty}/resources/custom_service.rb +0 -0
  267. /data/lib/poolparty/{pool → poolparty}/resources/gem_package.rb +0 -0
  268. /data/lib/poolparty/{pool → poolparty}/resources/host.rb +0 -0
  269. /data/lib/poolparty/{pool → poolparty}/resources/mount.rb +0 -0
  270. /data/lib/poolparty/{pool → poolparty}/resources/service.rb +0 -0
  271. /data/lib/poolparty/{pool → poolparty}/resources/symlink.rb +0 -0
  272. /data/lib/poolparty/{pool → poolparty}/resources/variable.rb +0 -0
  273. /data/log/{pool.logs → pool.log} +0 -0
  274. /data/spec/poolparty/{pool/test_plugins/virtual_host_template.erb → net/log/pool.log} +0 -0
  275. /data/spec/poolparty/{pool → poolparty}/base_spec.rb +0 -0
  276. /data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_basic.rb +0 -0
  277. /data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_plugins.rb +0 -0
  278. /data/spec/poolparty/{pool → poolparty}/configurers/ruby_spec.rb +0 -0
  279. /data/spec/poolparty/{pool → poolparty}/custom_resource_spec.rb +0 -0
  280. /data/spec/poolparty/{pool → poolparty}/example_spec.rb +0 -0
  281. /data/spec/poolparty/{pool → poolparty}/plugin_model_spec.rb +0 -0
  282. /data/spec/poolparty/{pool → poolparty}/resources/class_package_spec.rb +0 -0
  283. /data/spec/poolparty/{pool → poolparty}/resources/conditional_spec.rb +0 -0
  284. /data/spec/poolparty/{pool → poolparty}/resources/cron_spec.rb +0 -0
  285. /data/spec/poolparty/{pool → poolparty}/resources/directory_spec.rb +0 -0
  286. /data/spec/poolparty/{pool → poolparty}/resources/exec_spec.rb +0 -0
  287. /data/spec/poolparty/{pool → poolparty}/resources/file_spec.rb +0 -0
  288. /data/spec/poolparty/{pool → poolparty}/resources/gem_spec.rb +0 -0
  289. /data/spec/poolparty/{pool → poolparty}/resources/host_spec.rb +0 -0
  290. /data/spec/poolparty/{pool → poolparty}/resources/package_spec.rb +0 -0
  291. /data/spec/poolparty/{pool → poolparty}/resources/remote_file_spec.rb +0 -0
  292. /data/spec/poolparty/{pool → poolparty}/resources/service_spec.rb +0 -0
  293. /data/spec/poolparty/{pool → poolparty}/resources/sshkey_spec.rb +0 -0
  294. /data/spec/poolparty/{pool → poolparty}/resources/symlink_spec.rb +0 -0
  295. /data/spec/poolparty/{pool → poolparty}/resources/variable_spec.rb +0 -0
  296. /data/spec/poolparty/{pool → poolparty}/script_spec.rb +0 -0
  297. /data/spec/poolparty/{pool → poolparty}/test_plugins/sshkey_test +0 -0
  298. /data/spec/poolparty/{pool → poolparty}/test_plugins/webserver.rb +0 -0
@@ -10,11 +10,8 @@ module PoolParty
10
10
  # Execs cannot have the following parameters
11
11
  # We use version in the gempackage resource
12
12
  # So we have to exclude it here.
13
- def allowed_options
14
- [
15
- :command, :creates, :cwd, :env, :environment, :group, :logoutput, :user,
16
- :onlyif, :path, :refresh, :refreshonly, :returns, :timeout, :unless
17
- ]
13
+ def disallowed_options
14
+ [:ensure, :name]
18
15
  end
19
16
 
20
17
  def key
@@ -5,12 +5,12 @@ module PoolParty
5
5
 
6
6
  default_options({
7
7
  :ensure => "file",
8
- :mode => 644,
9
- :owner => "#{Base.user}"
8
+ :mode => 644
9
+ # :owner => "#{Base.user}"
10
10
  })
11
11
 
12
12
  def disallowed_options
13
- [:name, :template]
13
+ [:name, :template, :cwd]
14
14
  end
15
15
 
16
16
  def source(arg=nil)
@@ -8,7 +8,7 @@ module PoolParty
8
8
  })
9
9
 
10
10
  def disallowed_options
11
- [:name]
11
+ [:name, :cwd]
12
12
  end
13
13
 
14
14
  def present
@@ -8,7 +8,7 @@ module PoolParty
8
8
  default_options({
9
9
  :ensure => "present",
10
10
  :mode => 644,
11
- :owner => "#{Base.user}",
11
+ # :owner => "#{Base.user}",
12
12
  :source => nil
13
13
  })
14
14
 
@@ -0,0 +1,17 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class RemoteUser < Resource
5
+
6
+ default_options({
7
+ :shell => "/bin/sh"
8
+ })
9
+
10
+ def class_type_name
11
+ "user"
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+ end
@@ -4,13 +4,17 @@ module PoolParty
4
4
  class Sshkey < Resource
5
5
 
6
6
  default_options({
7
- :command => nil,
8
7
  # :key => "ALONGSTRINGOFDIGITS",
9
8
  :target => "~/.ssh/poolparty_id_rsa"
10
9
  })
11
10
 
12
11
  def keyfile=(file)
13
12
  keyfile open(file).read
13
+ options[:key] = keyfile
14
+ end
15
+
16
+ def key
17
+ name
14
18
  end
15
19
 
16
20
  end
@@ -3,7 +3,7 @@ module PoolParty
3
3
  class Script
4
4
 
5
5
  def self.inflate_file(file)
6
- inflate open(file).read
6
+ inflate open(file).read if file
7
7
  end
8
8
 
9
9
  def self.inflate(script, file="__SCRIPT__")
@@ -0,0 +1,127 @@
1
+ require "poolparty/capistrano"
2
+
3
+ module PoolParty
4
+ module Provisioner
5
+ class Capistrano < ProvisionerBase
6
+
7
+ include PoolParty::Capistrano
8
+ include ::Capistrano::Configuration::Actions::Invocation
9
+
10
+ def process_install!(testing=false)
11
+ unless testing
12
+ @cloud.rsync_storage_files_to(@instance)
13
+ roles = provision_master? ? [:master] : [:slaves]
14
+ run_capistrano(roles,:install)
15
+ end
16
+ end
17
+ def process_configure!(testing=false)
18
+ unless testing
19
+ @cloud.rsync_storage_files_to(@instance)
20
+ roles = provision_master? ? [:master] : [:slaves]
21
+ run_capistrano(roles, :configure)
22
+ end
23
+ end
24
+
25
+ def install_tasks
26
+ provision_master? ? master_install_tasks : slave_install_tasks
27
+ end
28
+ def configure_tasks
29
+ provision_master? ? master_configure_tasks : slave_configure_tasks
30
+ end
31
+
32
+ def master_install_tasks
33
+ [
34
+ "master:provision_master"
35
+ ].push([custom_install_tasks, master_configure_tasks]).flatten#.map {|a| a.to_sym }
36
+ end
37
+ def master_configure_tasks
38
+ [
39
+ "master:create_local_node_entry_for_puppet", "master:move_template_files", "master:setup_poolparty_base_structure",
40
+ "master:move_provisioner_manifest", "run_provisioner"
41
+ ].push(custom_configure_tasks).flatten#.map {|a| a.to_sym }
42
+ end
43
+
44
+ def slave_install_tasks
45
+ [
46
+ "slave:add_master_to_hosts_file", "slave:add_provisioner_configs", "setup_provisioner_config",
47
+ "create_puppetrunner_command", "create_puppetrerun_command", "install_rubygems",
48
+ "install_provisioner", "slave:stop_provisioner_daemon"
49
+ ].push([custom_install_tasks, slave_configure_tasks]).flatten#.map {|a| a.to_sym }
50
+ end
51
+ def slave_configure_tasks
52
+ [
53
+ "run_provisioner"
54
+ ].push(custom_configure_tasks).flatten#.map {|a| a.to_sym }
55
+ end
56
+ # Run tasks after the initialized
57
+ def loaded
58
+ create_config
59
+ end
60
+
61
+ # Create the config for capistrano
62
+ # This is a dynamic capistrano configuration file
63
+ def create_config
64
+ @config = ::Capistrano::Configuration.new
65
+ if @cloud.debug || @cloud.verbose
66
+ @config.logger.level = @cloud.debug ? ::Capistrano::Logger::MAX_LEVEL : ::Capistrano::Logger::INFO
67
+ else
68
+ @config.logger.level = ::Capistrano::Logger::IMPORTANT
69
+ end
70
+
71
+ capfile = returning Array.new do |arr|
72
+ Dir["#{::File.dirname(__FILE__)}/recipies/*.rb"].each {|a| arr << "require '#{a}'" }
73
+ arr << "ssh_options[:keys] = '#{@cloud.full_keypair_basename_path}'"
74
+
75
+ arr << set_poolparty_roles
76
+ end.join("\n")
77
+
78
+ @config.provisioner = self
79
+ @config.cloud = @cloud
80
+
81
+ @config.load(:string => capfile)
82
+
83
+ @cloud.deploy_file ? @config.load(@cloud.deploy_file) : @config.set(:user, @cloud.user)
84
+ end
85
+
86
+ # Prerun
87
+ def prerun_setup
88
+ end
89
+
90
+ def run_capistrano(roles=[:master], meth=:install)
91
+ prerun_setup
92
+
93
+ commands = meth == :install ? install_tasks : configure_tasks
94
+ name = "provisioner_#{meth}"
95
+
96
+ __define_task(name, roles) do
97
+ commands.map {|command|
98
+ task = find_task(command)
99
+ task.options.merge!(:roles => roles)
100
+ execute_task task
101
+ }
102
+ end
103
+
104
+ begin
105
+ __run(name)
106
+ return true
107
+ rescue ::Capistrano::CommandError => e
108
+ return false unless verbose
109
+ raise ProvisionerException.new("Error: #{e}")
110
+ end
111
+ end
112
+
113
+ def __define_task(name, roles, &block)
114
+ @config.task __task_sym(name), :roles => roles, &block
115
+ end
116
+
117
+ def __run(task)
118
+ @config.send __task_sym(task)
119
+ end
120
+
121
+ def __task_sym(name)
122
+ "#{name.to_s.downcase.underscore}".to_sym
123
+ end
124
+
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,58 @@
1
+ =begin rdoc
2
+ This overwriting of the Capistrano method missing allows our capistrano
3
+ tasks to have access to the methods on the provisioner and options
4
+ set on the clouds. This saves us the responsibility of setting variables
5
+ in the dynamic cap file.
6
+ =end
7
+ #TODO# Clean up
8
+ module Capistrano
9
+ class Configuration
10
+ attr_accessor :cloud, :provisioner
11
+
12
+ def method_missing_without_variables(sym, *args, &block)
13
+ if parent.respond_to?(sym)
14
+ parent.send(sym, *args, &block)
15
+ elsif provisioner.respond_to?(sym)
16
+ provisioner.send(sym, *args, &block)
17
+ elsif cloud.respond_to?(sym)
18
+ cloud.send(sym, *args, &block)
19
+ elsif PoolParty::Base.options.has_key?(sym)
20
+ PoolParty::Base.options[sym]
21
+ elsif PoolParty::Base.respond_to?(sym)
22
+ PoolParty::Base.send(sym, *args, &block)
23
+ else
24
+ super
25
+ end
26
+ end
27
+
28
+
29
+ module Namespaces
30
+ class Namespace
31
+
32
+ def provisioner
33
+ parent.provisioner
34
+ end
35
+
36
+ def cloud
37
+ parent.cloud
38
+ end
39
+
40
+ def method_missing(sym, *args, &block)
41
+ if parent.respond_to?(sym)
42
+ parent.send(sym, *args, &block)
43
+ elsif provisioner.respond_to?(sym)
44
+ provisioner.send(sym, *args, &block)
45
+ elsif cloud.respond_to?(sym)
46
+ cloud.send(sym, *args, &block)
47
+ elsif PoolParty::Base.options.has_key?(sym)
48
+ PoolParty::Base.options[sym]
49
+ elsif PoolParty::Base.respond_to?(sym)
50
+ PoolParty::Base.send(sym, *args, &block)
51
+ else
52
+ super
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,104 @@
1
+ =begin rdoc
2
+ Base provisioner capistrano tasks
3
+ =end
4
+ Capistrano::Configuration.instance(:must_exist).load do
5
+ # namespace(:base) do
6
+ desc "Install rubygems"
7
+ task :install_rubygems do
8
+ run "#{installer_for} ruby rubygems"
9
+ end
10
+ dec "Setup for poolparty"
11
+ task :setup_for_poolparty do
12
+ run "mkdir -p /etc/poolparty"
13
+ end
14
+ desc "Install provisioner"
15
+ task :install_provisioner do
16
+ run "#{installer_for} #{puppet_packages}"
17
+ end
18
+ desc "Create poolparty commands"
19
+ task :create_poolparty_commands do
20
+ end
21
+ desc "Create poolparty runner command"
22
+ task :create_puppetrunner_command do
23
+ run <<-EOR
24
+ cp #{remote_storage_path}/templates/puppetrunner /usr/bin/puppetrunner &&
25
+ chmod +x /usr/bin/puppetrunner
26
+ EOR
27
+ end
28
+ desc "Create poolparty rerun command"
29
+ task :create_puppetrerun_command do
30
+ run <<-EOR
31
+ cp #{remote_storage_path}/templates/puppetrerun /usr/bin/puppetrerun &&
32
+ chmod +x /usr/bin/puppetrerun
33
+ EOR
34
+ end
35
+ desc "Add the proper configs for provisioner"
36
+ task :add_provisioner_configs do
37
+ run "cp #{remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf"
38
+ end
39
+ desc "Setup config file for provisioner"
40
+ task :setup_provisioner_config do
41
+ run "mv #{remote_storage_path}/puppet.conf /etc/puppet/puppet.conf"
42
+ end
43
+ desc "Run the provisioner"
44
+ task :run_provisioner do
45
+ run "/usr/sbin/puppetd --onetime --daemonize --logdest syslog --server master"
46
+ end
47
+ desc "Rerun the provisioner"
48
+ task :rerun_provisioner do
49
+ run "/usr/bin/puppetrerun"
50
+ end
51
+ desc "Remove the certs"
52
+ task :remove_certs do
53
+ run "rm -rf /etc/puppet/ssl"
54
+ end
55
+ desc "Update rubygems"
56
+ task :update_rubygems do
57
+ run "/usr/bin/gem update --system 2>1 > /dev/null && /usr/bin/gem update --system"
58
+ end
59
+ desc "Fix rubygems"
60
+ task :fix_rubygems do
61
+ # echo '#{open(::File.join(template_directory, "gem")).read}' > /usr/bin/gem &&
62
+ run <<-EOR
63
+ /usr/bin/gem update --system 2>&1 > /dev/null;/usr/bin/gem update --system &&
64
+ cp -f #{remote_storage_path}/gem /usr/bin/gem
65
+ EOR
66
+ end
67
+ desc "Upgrade system"
68
+ task :upgrade_system do
69
+ str = case os
70
+ when :ubuntu
71
+ "
72
+ echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list &&
73
+ aptitude update -y
74
+ "
75
+ else
76
+ "echo 'No system upgrade needed'"
77
+ end
78
+ run str
79
+ end
80
+ desc "Upgrade rubygems"
81
+ task :upgrade_rubygems do
82
+
83
+ end
84
+ desc "Make log directory"
85
+ task :make_log_directory do
86
+ run "mkdir -p /var/log/poolparty"
87
+ end
88
+ desc "Create ssl storage directories for poolparty"
89
+ task :create_poolparty_ssl_store do
90
+ run <<-EOR
91
+ mkdir -p #{poolparty_config_directory}/ssl/private_keys &&
92
+ mkdir -p #{poolparty_config_directory}/ssl/certs &&
93
+ mkdir -p #{poolparty_config_directory}/ssl/public_keys
94
+ EOR
95
+ end
96
+ desc "Add erlang cookie"
97
+ task :write_erlang_cookie do
98
+ run <<-EOR
99
+ mv #{remote_storage_path}/cookie ~/.erlang.cookie &&
100
+ chmod 400 ~/.erlang.cookie
101
+ EOR
102
+ end
103
+ # end
104
+ end
@@ -0,0 +1,121 @@
1
+ # Cloud tasks
2
+ Capistrano::Configuration.instance(:must_exist).load do
3
+ namespace(:master) do
4
+ desc "Provision master"
5
+ task :provision_master do
6
+ upgrade_system
7
+ set_hostname_to_master
8
+ create_local_hosts_entry
9
+ setup_for_poolparty
10
+ install_provisioner
11
+ start_provisioner_base
12
+ setup_basic_poolparty_structure
13
+ setup_provisioner_filestore
14
+ setup_provisioner_autosigning
15
+ install_rubygems
16
+ fix_rubygems
17
+ add_provisioner_configs
18
+ setup_provisioner_config
19
+ create_puppetrunner_command
20
+ create_puppetrerun_command
21
+ download_base_gems
22
+ install_base_gems
23
+ write_erlang_cookie
24
+ end
25
+ desc "Configure master"
26
+ task :configure_master do
27
+ master:move_provisioner_manifest
28
+ master:move_template_files
29
+ master:setup_poolparty_base_structure
30
+ run_provisioner
31
+ end
32
+ desc "Set hostname to master"
33
+ task :set_hostname_to_master do
34
+ run "hostname master"
35
+ end
36
+ desc "Add host entry into the master instance"
37
+ task :create_local_hosts_entry do
38
+ run "if [ -z \"$(grep -v '#' /etc/hosts | grep 'puppet')\" ]; then echo '#{cloud.master.ip} master puppet localhost' >> /etc/hosts; fi"
39
+ end
40
+ desc "Setup basic poolparty structure"
41
+ task :setup_basic_poolparty_structure do
42
+ run <<-EOR
43
+ echo "Creating basic structure for poolparty" &&
44
+ mkdir -p /etc/puppet/manifests/nodes &&
45
+ mkdir -p /etc/puppet/manifests/classes &&
46
+ echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp &&
47
+ echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
48
+ EOR
49
+ end
50
+ desc "Setup shareable file system for provisioner"
51
+ task :setup_provisioner_filestore do
52
+ run <<-EOR
53
+ echo '[files]' > /etc/puppet/fileserver.conf &&
54
+ echo ' path #{remote_storage_path}' >> /etc/puppet/fileserver.conf &&
55
+ echo ' allow *' >> /etc/puppet/fileserver.conf &&
56
+ mkdir -p /var/poolparty/facts &&
57
+ mkdir -p /var/poolparty/files &&
58
+ mkdir -p #{base_config_directory}
59
+ EOR
60
+ end
61
+ desc "Setup autosigning for provisioner"
62
+ task :setup_provisioner_autosigning do
63
+ run "echo \"*\" > /etc/puppet/autosign.conf"
64
+ end
65
+ desc "Setup poolparty structure"
66
+ task :setup_poolparty_base_structure do
67
+ run <<-EOR
68
+ cp #{remote_storage_path}/#{key_file_locations.first} "#{base_config_directory}/.ppkeys" &&
69
+ mv #{remote_storage_path}/#{default_specfile_name} #{base_config_directory}/
70
+ EOR
71
+ end
72
+ desc "Download base gems"
73
+ task :download_base_gems do
74
+ run download_base_gems_string
75
+ end
76
+ desc "Install base gems"
77
+ task :install_base_gems do
78
+ run(returning(Array.new) do |arr|
79
+ base_gems.each do |name, url|
80
+ arr << "/usr/bin/gem install --ignore-dependencies --no-ri --no-rdoc #{Base.remote_storage_path}/#{name}.gem"
81
+ end
82
+ end.join(" && "))
83
+ end
84
+ desc "Start provisioner base"
85
+ task :start_provisioner_base do
86
+ run "/etc/init.d/puppetmaster start"
87
+ end
88
+ desc "Restart provisioner base"
89
+ task :restart_provisioner_base do
90
+ run "/etc/init.d/puppetmaster stop;rm -rf /etc/poolparty/ssl;puppetmasterd --verbose;/etc/init.d/puppetmaster start"
91
+ end
92
+ desc "Create local node for puppet manifest"
93
+ task :create_local_node_entry_for_puppet do
94
+ # run ". /etc/profile && server-write-new-nodes"
95
+ str = returning Array.new do |arr|
96
+ arr << "node default { include poolparty }"
97
+ list_of_running_instances.each do |ri|
98
+ arr << "node \"#{ri.name}\" inherits default {}\n"
99
+ end
100
+ end.join("\n")
101
+ run "echo #{str} > #{manifest_path}/nodes/nodes.pp"
102
+ end
103
+ desc "Move template files into place"
104
+ task :move_template_files do
105
+ run <<-EOR
106
+ mkdir -p #{template_path} &&
107
+ cp -R #{remote_storage_path}/templates/* #{template_path}
108
+ EOR
109
+ end
110
+ desc "Move manifest into place"
111
+ task :move_provisioner_manifest do
112
+ run <<-EOR
113
+ cp #{remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolparty.pp
114
+ EOR
115
+ end
116
+ desc "Move poolparty keys"
117
+ task :move_poolparty_keys do
118
+ run "cp #{remote_storage_path}/#{@full_keypair_name} #{@remote_keypair_path}"
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,12 @@
1
+ Capistrano::Configuration.instance(:must_exist).load do
2
+ namespace(:slave) do
3
+ desc "Add master ip to hosts file"
4
+ task :add_master_to_hosts_file do
5
+ run "if [ -z \"$(grep -v '#' /etc/hosts | grep 'master')\" ]; then echo '#{master_ip} puppet master' >> /etc/hosts; else echo 'host already set'; fi"
6
+ end
7
+ desc "Stop provisioner daemon"
8
+ task :stop_provisioner_daemon do
9
+ run "/etc/init.d/puppetmaster stop"
10
+ end
11
+ end
12
+ end