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
@@ -1,346 +0,0 @@
1
- =begin rdoc
2
- The Provisioner is responsible for provisioning REMOTE servers
3
- This class only comes in to play when calling the setup commands on
4
- the development machine
5
- =end
6
- module PoolParty
7
- module Provisioner
8
-
9
- # Provision master
10
- # Convenience method to clean
11
- def self.provision_master(cloud, testing=false)
12
- Provisioner::Master.new(cloud).process_install!(testing)
13
- end
14
-
15
- def self.configure_master(cloud, testing=false)
16
- Provisioner::Master.new(cloud).process_configure!(testing)
17
- end
18
-
19
- def self.reconfigure_master(cloud, testing=false)
20
- Provisioner::Master.new(cloud).process_reconfigure!(testing)
21
- end
22
-
23
- def self.provision_slaves(cloud, testing=false)
24
- cloud.nonmaster_nonterminated_instances.each do |sl|
25
- provision_slave(sl, cloud, testing)
26
- end
27
- end
28
-
29
- def self.configure_slaves(cloud, testing=false)
30
- cloud.nonmaster_nonterminated_instances.each do |sl|
31
- configure_slave(sl, cloud, testing)
32
- end
33
- end
34
-
35
- def self.provision_slave(instance, cloud, testing=false)
36
- Provisioner::Slave.new(instance, cloud).process_install!(testing)
37
- end
38
-
39
- def self.configure_slave(instance, cloud, testing=false)
40
- Provisioner::Slave.new(instance, cloud).process_configure!(testing)
41
- end
42
-
43
- def self.process_clean_reconfigure_for!(instance, cloud, testing=false)
44
- Provisioner::Master.new(cloud).process_clean_reconfigure_for!(instance, testing)
45
- end
46
-
47
- def self.clear_master_ssl_certs(cloud, testing=false)
48
- Provisioner::Master.new(cloud).clear_master_ssl_certs
49
- end
50
-
51
- class ProvisionerBase
52
-
53
- include Configurable
54
- include CloudResourcer
55
- include FileWriter
56
-
57
- def initialize(instance,cld=self, os=:ubuntu)
58
- @instance = instance
59
- @cloud = cld
60
-
61
- options(cloud.options) if cloud && cloud.respond_to?(:options)
62
- set_vars_from_options(instance.options) unless instance.nil? || !instance.options || !instance.options.empty?
63
- options(instance.options) if instance.respond_to?(:options)
64
-
65
- @os = os.to_s.downcase.to_sym
66
- loaded
67
- end
68
- # Callback after initialized
69
- def loaded(opts={}, parent=self)
70
- end
71
-
72
- ### Installation tasks
73
-
74
- # This is the actual runner for the installation
75
- def install
76
- valid? ? install_string : error
77
- end
78
- # Write the installation tasks to a file in the storage directory
79
- def write_install_file
80
- error unless valid?
81
- ::FileUtils.mkdir_p Base.storage_directory unless ::File.exists?(Base.storage_directory)
82
- provisioner_file = ::File.join(Base.storage_directory, "install_#{name}.sh")
83
- ::File.open(provisioner_file, "w+") {|f| f << install }
84
- end
85
- def name
86
- @instance.name
87
- end
88
- # TODO: Clean up this method
89
- def process_install!(testing=false)
90
- error unless valid?
91
- write_install_file
92
- setup_runner
93
-
94
- unless testing
95
- vputs "Logging on to #{@instance.ip} (#{@instance.name})"
96
- @cloud.rsync_storage_files_to(@instance)
97
- vputs "Preparing configuration on the master"
98
-
99
- before_install(@instance)
100
-
101
- process_clean_reconfigure_for!(@instance, testing)
102
-
103
- vputs "Logging in and running provisioning on #{@instance.name}"
104
- cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh; /bin/rm install_#{name}.sh"
105
- verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
106
-
107
- process_clean_reconfigure_for!(@instance, testing)
108
-
109
- after_install(@instance)
110
- end
111
- end
112
- # Install callbacks
113
- # Before installation callback
114
- def before_install(instance)
115
- end
116
- def after_install(instance)
117
- end
118
-
119
- ### Configuraton tasks
120
-
121
- def configure
122
- valid? ? configure_string : error
123
- end
124
- def write_configure_file
125
- error unless valid?
126
- provisioner_file = ::File.join(Base.storage_directory, "configure_#{name}.sh")
127
- ::File.open(provisioner_file, "w+") {|f| f << configure }
128
- end
129
- def process_configure!(testing=false)
130
- error unless valid?
131
- write_configure_file
132
- setup_runner
133
-
134
- unless testing
135
- vputs "Logging on to #{@instance.ip}"
136
- @cloud.rsync_storage_files_to(@instance)
137
-
138
- cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && /bin/rm configure_#{name}.sh"
139
- verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
140
- end
141
- end
142
- def process_clean_reconfigure_for!(instance, testing=false)
143
- if instance.is_a?(String)
144
- name = instance
145
- instance = MyOpenStruct.new(:name => name)
146
- end
147
- vputs "Cleaning certs from master: #{instance.name}"
148
- # puppetca --clean #{instance.name}.compute-1.internal; puppetca --clean #{instance.name}.ec2.internal
149
- # find /etc/puppet/ssl -type f -exec rm {} \;
150
- unless testing
151
- # @cloud.run_command_on("rm -rf /etc/puppet/ssl", instance) unless instance.master?
152
- str = returning String.new do |s|
153
- s << "puppetca --clean #{instance.name}.compute-1.internal 2>&1 > /dev/null;"
154
- s << "puppetca --clean #{instance.name}.ec2.internal 2>&1 > /dev/null"
155
- end
156
- @cloud.run_command_on(str, @cloud.master)
157
- end
158
- end
159
- def clear_master_ssl_certs
160
- str = returning String.new do |s|
161
- s << "puppetca --clean master.compute-1.internal 2>&1 > /dev/null;"
162
- s << "puppetca --clean master.ec2.internal 2>&1 > /dev/null"
163
- end
164
- @cloud.run_command_on("if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; else #{str}; fi", @cloud.master)
165
- end
166
- def process_reconfigure!(testing=false)
167
- @cloud.run_command_on(PoolParty::Remote::RemoteInstance.puppet_runner_command, @instance) unless testing
168
- end
169
- # Tasks that need to be performed everytime we do any
170
- # remote ssh'ing into any instance
171
- def setup_runner(force=false)
172
- @cloud.prepare_for_configuration
173
- @cloud.build_and_store_new_config_file(force)
174
- end
175
- def valid?
176
- true
177
- end
178
- def error
179
- "Error in installation"
180
- end
181
- # Gather all the tasks into one string
182
- def install_string
183
- [default_install_tasks, last_install_tasks].flatten.each do |task|
184
- case task.class
185
- when String
186
- task
187
- when Method
188
- self.send(task.to_sym)
189
- end
190
- end.nice_runnable
191
- end
192
- def last_install_tasks
193
- []
194
- end
195
- def configure_string
196
- [default_configure_tasks, last_configure_tasks].flatten.each do |task|
197
- case task.class
198
- when String
199
- task
200
- when Method
201
- self.send(task.to_sym)
202
- end
203
- end.nice_runnable
204
- end
205
- def last_configure_tasks
206
- []
207
- end
208
- # Tasks with default tasks
209
- # These are run on all the provisioners, master or slave
210
- def default_install_tasks
211
- [
212
- "#!/usr/bin/env sh",
213
- upgrade_system,
214
- fix_rubygems,
215
- make_logger_directory,
216
- install_puppet,
217
- custom_install_tasks
218
- ] << install_tasks
219
- end
220
- # Tasks with default configuration tasks
221
- # This is run on the provisioner, regardless
222
- def default_configure_tasks
223
- [
224
- custom_configure_tasks
225
- ] << configure_tasks
226
- end
227
- # Build a list of the tasks to run on the instance
228
- def install_tasks(a=[])
229
- @install_task ||= a
230
- end
231
- def configure_tasks(a=[])
232
- @configure_tasks ||= a
233
- end
234
- # Custom installation tasks
235
- # Allow the remoter bases to attach their own tasks on the
236
- # installation process
237
- def custom_install_tasks
238
- @cloud.custom_install_tasks_for(@instance) || []
239
- end
240
- # Custom configure tasks
241
- # Allows the remoter bases to attach their own
242
- # custom configuration tasks to the configuration process
243
- def custom_configure_tasks
244
- @cloud.custom_configure_tasks_for(@instance) || []
245
- end
246
-
247
- # Get the packages associated with each os
248
- def puppet_packages
249
- case @os
250
- when :fedora
251
- "puppet-server puppet factor"
252
- else
253
- "puppet puppetmaster"
254
- end
255
- end
256
- # Package installers for general *nix operating systems
257
- def self.installers
258
- @installers ||= {
259
- :ubuntu => "aptitude install -y",
260
- :fedora => "yum install",
261
- :gentoo => "emerge"
262
- }
263
- end
264
- # Convenience method to grab the installer
265
- def installer_for(names=[])
266
- packages = names.is_a?(Array) ? names.join(" ") : names
267
- "#{self.class.installers[@os]} #{packages}"
268
- end
269
-
270
- # Install from the class-level
271
- def self.install(instance, cl=self)
272
- new(instance, cl).install
273
- end
274
-
275
- def self.configure(instance, cl=self)
276
- new(instance, cl).configure
277
- end
278
-
279
- # Template directory from the provisioner base
280
- def template_directory
281
- File.join(File.dirname(__FILE__), "..", "templates")
282
- end
283
-
284
- def fix_rubygems
285
- <<-EOE
286
- #{installer_for("ruby rubygems")}
287
- gem update --system # Force rubygems update
288
- echo '#{open(::File.join(template_directory, "gem")).read}' > /usr/bin/gem
289
- EOE
290
- end
291
-
292
- def create_local_node
293
- str = <<-EOS
294
- node default {
295
- include poolparty
296
- }
297
- EOS
298
- @cloud.list_of_running_instances.each do |ri|
299
- str << <<-EOS
300
- node "#{ri.name}" {}
301
- EOS
302
- end
303
- "echo '#{str}' > /etc/puppet/manifests/nodes/nodes.pp"
304
- end
305
-
306
- def upgrade_system
307
- case @os
308
- when :ubuntu
309
- "
310
- if grep -q 'http://mirrors.kernel.org/ubuntu hardy main universe' /etc/apt/sources.list
311
- then
312
- echo 'Updated already'
313
- else
314
- touch /etc/apt/sources.list
315
- echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
316
- aptitude update -y #{unix_hide_string} <<heredoc
317
- Y
318
-
319
- heredoc
320
- fi
321
- "
322
- else
323
- "# No system upgrade needed"
324
- end
325
- end
326
-
327
- def install_puppet
328
- "#{installer_for( puppet_packages )}"
329
- end
330
-
331
- def make_logger_directory
332
- "mkdir -p /var/log/poolparty"
333
- end
334
-
335
- def create_poolparty_manifest
336
- <<-EOS
337
- cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes
338
- EOS
339
- end
340
- end
341
- end
342
- end
343
- ## Load the provisioners
344
- Dir[File.dirname(__FILE__) + "/provisioners/*.rb"].each do |file|
345
- require file
346
- end
@@ -1,205 +0,0 @@
1
- module PoolParty
2
- module Provisioner
3
- class Master < ProvisionerBase
4
-
5
- def initialize(cl=self, os=:ubuntu)
6
- raise MasterException.new(:no_ip) unless cl.master && cl.master.ip
7
- super(cl.master, cl, os)
8
- @master_ip = cl.master.ip
9
- end
10
-
11
- def valid?
12
- !(@cloud.nil? || @cloud.master.nil?)
13
- end
14
-
15
- def error
16
- raise RemoteException.new(:could_not_install, "Your cloud does not have a master")
17
- end
18
-
19
- def install_tasks
20
- [
21
- create_local_hosts_entry,
22
- setup_basic_structure,
23
- setup_configs,
24
- setup_fileserver,
25
- setup_autosigning,
26
- install_poolparty,
27
- setup_poolparty,
28
- restart_puppetmaster,
29
- run_first_time,
30
- create_local_node,
31
- ] << configure_tasks
32
- end
33
-
34
- def configure_tasks
35
- [
36
- create_local_node,
37
- move_templates,
38
- create_poolparty_manifest,
39
- restart_puppetd
40
- ]
41
- end
42
-
43
- # If the master is not in the hosts file, then add it to the hosts file
44
- def create_local_hosts_entry
45
- <<-EOS
46
- echo "Creating local host entry"
47
- if [ -z \"$(grep -v '#' /etc/hosts | grep 'puppet')" ]; then echo '#{@master_ip} puppet master localhost' >> /etc/hosts; fi
48
- hostname master
49
- EOS
50
- end
51
-
52
- def setup_basic_structure
53
- <<-EOS
54
- echo "Creating basic structure for poolparty"
55
- mkdir -p /etc/puppet/manifests/nodes
56
- mkdir -p /etc/puppet/manifests/classes
57
- echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp
58
- echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
59
- cp #{Base.remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf
60
- EOS
61
- end
62
-
63
- def setup_configs
64
- <<-EOS
65
- echo "Setting up configuration"
66
- echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
67
- EOS
68
- end
69
-
70
- def setup_fileserver
71
- <<-EOS
72
- echo "Setting up the master fileserver"
73
- echo "
74
- [files]
75
- path #{Base.remote_storage_path}
76
- allow *" > /etc/puppet/fileserver.conf
77
- mkdir -p /var/poolparty/facts
78
- mkdir -p /var/poolparty/files
79
- mkdir -p /etc/poolparty
80
- EOS
81
- end
82
- # Change this eventually for better security supportsetup_fileserver
83
- def setup_autosigning
84
- <<-EOS
85
- echo "Creating accessibility for the nodes"
86
- echo "*" > /etc/puppet/autosign.conf
87
- EOS
88
- end
89
-
90
- def setup_poolparty
91
- <<-EOS
92
- echo "Setting the poolparty configuration"
93
- cp #{Base.remote_storage_path}/#{Base.key_file_locations.first} "#{Base.base_config_directory}/.ppkeys"
94
- cp #{Base.remote_storage_path}/#{Base.default_specfile_name} #{Base.base_config_directory}/#{Base.default_specfile_name}
95
- EOS
96
- end
97
-
98
- def copy_ssh_app
99
- "cp #{Base.remote_storage_path}/#{@cloud.full_keypair_name} #{@cloud.remote_keypair_path}" if @cloud.remote_keypair_path != "#{Base.remote_storage_path}/#{@cloud.full_keypair_name}"
100
- end
101
-
102
- def install_poolparty
103
- <<-EOE
104
- echo "Installing poolparty"
105
- cd /var/poolparty
106
- wget http://rubyforge.org/frs/download.php/44731/logging-0.9.4.gem -O logging.gem 2>&1
107
- wget http://rubyforge.org/frs/download.php/45581/ZenTest-3.11.0.gem -O ZenTest.gem 2>&1
108
- wget http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem -O ParseTree.gem 2>&1
109
- wget http://rubyforge.org/frs/download.php/45587/ruby2ruby-1.2.0.gem -O ruby2ruby.gem 2>&1
110
- wget http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem -O activesupport.gem 2>&1
111
- wget http://rubyforge.org/frs/download.php/18366/xml-simple-1.0.11.gem -O xml-simple.gem 2>&1
112
- wget http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem -O RubyInline.gem 2>&1
113
- wget http://rubyforge.org/frs/download.php/42580/flexmock-0.8.3.gem -O flexmock.gem 2>&1
114
- wget http://rubyforge.org/frs/download.php/45685/hoe-1.8.2.gem -O hoe.gem 2>&1
115
- wget http://rubyforge.org/frs/download.php/18698/lockfile-1.4.3.gem -O lockfile.gem 2>&1
116
- wget http://rubyforge.org/frs/download.php/45546/rubyforge-1.0.1.gem -O rubyforge.gem 2>&1
117
- wget http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem -O rake.gem 2>&1
118
- wget http://rubyforge.org/frs/download.php/45589/sexp_processor-3.0.0.gem -O sexp_processor.gem 2>&1
119
- wget http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty.gem?raw=true -O poolparty.gem 2>&1
120
- # wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O amazon-ec2.gem 2>&1
121
-
122
- #{
123
- %w(rake lockfile rubyforge hoe ZenTest sexp_processor flexmock logging activesupport
124
- RubyInline ParseTree ruby2ruby xml-simple poolparty).map do |dep|
125
- "gem install --ignore-dependencies -y --no-ri --no-rdoc #{dep}.gem #{unix_hide_string}"
126
- end.join("\n")
127
- }
128
- EOE
129
- end
130
-
131
- # ps aux | grep puppetmasterd | awk '{print $2}' | xargs kill
132
- # /etc/init.d/puppetmaster stop; rm -rf /etc/puppet/ssl; /etc/init.d/puppetmaster start
133
- def restart_puppetmaster
134
- <<-EOS
135
- echo "(Re)starting poolparty"
136
- . /etc/profile
137
- # /etc/init.d/puppetmaster stop #{unix_hide_string}
138
- ps aux | grep puppetmaster | awk '{print $2}' | xargs kill;rm -rf /etc/puppet/ssl;puppetmasterd --verbose;/etc/init.d/puppetmaster start
139
- EOS
140
- end
141
-
142
- def run_first_time
143
- <<-EOE
144
- echo "Running first time run"
145
- cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrerun /usr/bin/puppetrerun
146
- cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrunner /usr/bin/puppetrunner
147
- chmod +x /usr/bin/puppetrerun
148
- chmod +x /usr/bin/puppetrunner
149
- EOE
150
- end
151
-
152
- # TODO:
153
- # Consider this method in the manifest
154
- def create_local_node
155
- str = <<-EOS
156
- node default {
157
- include poolparty
158
- }
159
- EOS
160
- @cloud.list_of_running_instances.each do |ri|
161
- str << <<-EOS
162
- node "#{ri.name}" inherits default {}
163
- EOS
164
- end
165
- "echo '#{str}' > #{Base.manifest_path}/nodes/nodes.pp"
166
- end
167
-
168
- def move_templates
169
- <<-EOS
170
- echo "Moving templates into place"
171
- mkdir -p #{Base.template_path}
172
- cp -R #{Base.remote_storage_path}/#{Base.template_directory}/* #{Base.template_path}
173
- EOS
174
- end
175
-
176
- def create_poolparty_manifest
177
- <<-EOS
178
- echo "Creating the manifest"
179
- cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolparty.pp
180
- #{copy_ssh_app}
181
- EOS
182
- end
183
-
184
- def clean_master_certs
185
- str = returning Array.new do |s|
186
- s << "puppetca --clean master.compute-1.internal 2>&1 > /dev/null"
187
- s << "puppetca --clean master.ec2.internal 2>&1 > /dev/null"
188
- end.join(";")
189
- "if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; else #{str}; fi"
190
- end
191
-
192
- def restart_puppetd
193
- <<-EOS
194
- echo "Running puppet manifest"
195
- /usr/bin/puppetrunner
196
- EOS
197
- end
198
- def last_install_tasks
199
- [
200
- "/usr/bin/puppetrerun"
201
- ]
202
- end
203
- end
204
- end
205
- end
@@ -1,64 +0,0 @@
1
- module PoolParty
2
- module Provisioner
3
- class Slave < ProvisionerBase
4
-
5
- def install_tasks
6
- [
7
- setup_poolparty,
8
- setup_puppet,
9
- setup_configs,
10
- ] << configure_tasks
11
- end
12
-
13
- def configure_tasks
14
- [
15
- start_puppet
16
- ]
17
- end
18
-
19
- def setup_poolparty
20
- <<-EOE
21
- echo "Running first time run"
22
- cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrunner /usr/bin/puppetrunner
23
- chmod +x /usr/bin/puppetrunner
24
- EOE
25
- end
26
-
27
- def setup_puppet
28
- <<-EOE
29
- if [ -z "$(grep -v '#' /etc/hosts | grep 'master')" ]; then echo "#{master_ip} puppet master" >> /etc/hosts; else echo "host already set"; fi
30
- cp #{Base.remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf
31
- EOE
32
- end
33
-
34
- def setup_configs
35
- <<-EOS
36
- echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
37
- /etc/init.d/puppetmaster stop #{unix_hide_string}
38
- rm -rf /etc/puppet/ssl
39
- # /usr/bin/puppetrerun
40
- EOS
41
- end
42
-
43
- # /etc/init.d/puppetmasterd stop
44
- # puppetd --listen --fqdn #{@instance.name}
45
- def start_puppet
46
- <<-EOS
47
- /bin/sh /usr/bin/puppetrunner
48
- EOS
49
- end
50
-
51
- def last_install_tasks
52
- [
53
- "rm -rf /etc/puppet/ssl",
54
- "/usr/bin/puppetrerun"
55
- ]
56
- end
57
-
58
- def master_ip
59
- @cloud.master.ip
60
- end
61
-
62
- end
63
- end
64
- end