rubber 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. data/CHANGELOG +7 -0
  2. data/VERSION +1 -1
  3. data/bin/vulcanize +16 -32
  4. data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +6 -6
  5. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +2 -2
  6. data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +3 -0
  7. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +29 -16
  8. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +1 -1
  9. data/generators/vulcanize/templates/base/Rakefile +21 -0
  10. data/generators/vulcanize/templates/base/config/rubber/common/crontab +6 -1
  11. data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +2 -2
  12. data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +3 -4
  13. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +27 -48
  14. data/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  15. data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +25 -0
  16. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +7 -12
  17. data/generators/vulcanize/templates/base/script/cron-runner +1 -1
  18. data/generators/vulcanize/templates/base/templates.rb +9 -0
  19. data/generators/vulcanize/templates/base/templates.yml +5 -0
  20. data/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  21. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +58 -0
  22. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  23. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  24. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  25. data/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  26. data/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  27. data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/role/haproxy/haproxy-passenger.conf +1 -1
  28. data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/rubber-complete.yml +0 -0
  29. data/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  30. data/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  31. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +1 -7
  32. data/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  33. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +3 -3
  34. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +1 -1
  35. data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +5 -5
  36. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +2 -2
  37. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +1 -1
  38. data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +4 -4
  39. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +1 -1
  40. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +4 -4
  41. data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +2 -0
  42. data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +3 -3
  43. data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +2 -2
  44. data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +1 -1
  45. data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +4 -2
  46. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +4 -4
  47. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +2 -2
  48. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +1 -0
  49. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
  50. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +6 -8
  51. data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +1 -0
  52. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +24 -109
  53. data/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +1 -1
  54. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +2 -2
  55. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +1 -1
  56. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +19 -15
  57. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +2 -2
  58. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +2 -2
  59. data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +3 -3
  60. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +5 -5
  61. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +2 -2
  62. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +10 -1
  63. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +1 -1
  64. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +2 -2
  65. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +1 -1
  66. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +3 -3
  67. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +2 -2
  68. data/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  69. data/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  70. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  71. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  72. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  73. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  74. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  75. data/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  76. data/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  77. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +8 -7
  78. data/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  79. data/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  80. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +46 -27
  81. data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  82. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  83. data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +14 -6
  84. data/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  85. data/generators/vulcanize/templates/resque/templates.rb +1 -0
  86. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +7 -8
  87. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +7 -4
  88. data/generators/vulcanize/vulcanize_generator.rb +154 -49
  89. data/lib/generators/vulcanize/USAGE +6 -0
  90. data/lib/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
  91. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
  92. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
  93. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
  94. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  95. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +8 -0
  96. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
  97. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +79 -0
  98. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  99. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
  100. data/lib/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
  101. data/lib/generators/vulcanize/templates/apache/templates.yml +1 -0
  102. data/lib/generators/vulcanize/templates/base/Capfile +14 -0
  103. data/lib/generators/vulcanize/templates/base/Rakefile +21 -0
  104. data/lib/generators/vulcanize/templates/base/config/deploy.rb +55 -0
  105. data/lib/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
  106. data/lib/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  107. data/lib/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
  108. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +63 -0
  109. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  110. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
  111. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +25 -0
  112. data/lib/generators/vulcanize/templates/base/config/rubber/rubber.yml +235 -0
  113. data/lib/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
  114. data/lib/generators/vulcanize/templates/base/script/cron-rake +18 -0
  115. data/lib/generators/vulcanize/templates/base/script/cron-runner +18 -0
  116. data/lib/generators/vulcanize/templates/base/script/cron-sh +67 -0
  117. data/lib/generators/vulcanize/templates/base/templates.rb +9 -0
  118. data/lib/generators/vulcanize/templates/base/templates.yml +6 -0
  119. data/lib/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  120. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +58 -0
  121. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  122. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  123. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  124. data/lib/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  125. data/lib/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  126. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  127. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
  128. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  129. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
  130. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
  131. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
  132. data/lib/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  133. data/lib/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  134. data/lib/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
  135. data/lib/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  136. data/lib/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
  137. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
  138. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
  139. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
  140. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
  141. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
  142. data/lib/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
  143. data/lib/generators/vulcanize/templates/cruise/templates.yml +1 -0
  144. data/lib/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
  145. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  146. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
  147. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
  148. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +11 -0
  149. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -0
  150. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
  151. data/lib/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
  152. data/lib/generators/vulcanize/templates/haproxy/templates.yml +1 -0
  153. data/lib/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  154. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  155. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  156. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  157. data/lib/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  158. data/lib/generators/vulcanize/templates/jetty/templates.yml +1 -0
  159. data/lib/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
  160. data/lib/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
  161. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
  162. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
  163. data/lib/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
  164. data/lib/generators/vulcanize/templates/memcached/templates.yml +1 -0
  165. data/lib/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
  166. data/lib/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
  167. data/lib/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
  168. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
  169. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
  170. data/lib/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
  171. data/lib/generators/vulcanize/templates/mongrel/templates.yml +1 -0
  172. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
  173. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +252 -0
  174. data/lib/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -0
  175. data/lib/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
  176. data/lib/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
  177. data/lib/generators/vulcanize/templates/monit/templates.yml +1 -0
  178. data/lib/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
  179. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
  180. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
  181. data/lib/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
  182. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
  183. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
  184. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +81 -0
  185. data/lib/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
  186. data/lib/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -0
  187. data/lib/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
  188. data/lib/generators/vulcanize/templates/munin/templates.yml +1 -0
  189. data/lib/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +12 -0
  190. data/lib/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
  191. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  192. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
  193. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
  194. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +163 -0
  195. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
  196. data/lib/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +47 -0
  197. data/lib/generators/vulcanize/templates/mysql/templates.yml +1 -0
  198. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
  199. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +177 -0
  200. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
  201. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
  202. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
  203. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
  204. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
  205. data/lib/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
  206. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
  207. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
  208. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
  209. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
  210. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
  211. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
  212. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
  213. data/lib/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
  214. data/lib/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
  215. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
  216. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
  217. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  218. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
  219. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  220. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  221. data/lib/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
  222. data/lib/generators/vulcanize/templates/nginx/templates.yml +1 -0
  223. data/lib/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +46 -0
  224. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  225. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +7 -0
  226. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  227. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
  228. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +35 -0
  229. data/lib/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
  230. data/lib/generators/vulcanize/templates/passenger/templates.yml +3 -0
  231. data/lib/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  232. data/lib/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  233. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  234. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  235. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  236. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  237. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  238. data/lib/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  239. data/lib/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  240. data/lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +37 -0
  241. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  242. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  243. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
  244. data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  245. data/lib/generators/vulcanize/templates/redis/templates.yml +1 -0
  246. data/lib/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  247. data/lib/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  248. data/lib/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
  249. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  250. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  251. data/lib/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
  252. data/lib/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  253. data/lib/generators/vulcanize/templates/resque/templates.rb +1 -0
  254. data/lib/generators/vulcanize/templates/resque/templates.yml +3 -0
  255. data/lib/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
  256. data/lib/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
  257. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  258. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +13 -0
  259. data/lib/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
  260. data/lib/generators/vulcanize/templates/sphinx/templates.yml +1 -0
  261. data/lib/generators/vulcanize/vulcanize_generator.rb +172 -0
  262. data/lib/rubber.rb +42 -6
  263. data/lib/rubber/cloud/aws.rb +4 -0
  264. data/lib/rubber/dns/zerigo.rb +9 -3
  265. data/lib/rubber/environment.rb +1 -1
  266. data/lib/rubber/generator.rb +8 -8
  267. data/lib/rubber/instance.rb +1 -1
  268. data/lib/rubber/railtie.rb +14 -0
  269. data/lib/rubber/recipes/rubber.rb +6 -0
  270. data/lib/rubber/recipes/rubber/deploy.rb +3 -3
  271. data/lib/rubber/recipes/rubber/setup.rb +22 -17
  272. data/lib/rubber/recipes/rubber/utils.rb +37 -14
  273. data/lib/rubber/util.rb +36 -1
  274. data/rails/init.rb +1 -4
  275. metadata +244 -35
  276. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb +0 -38
  277. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf +0 -19
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  @path = '/etc/apparmor.d/usr.sbin.mysqld'
3
- @post = "/etc/init.d/apparmor restart"
3
+ @post = "service apparmor restart"
4
4
  @backup = false
5
5
  %>
6
6
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  check process mysql with pidfile /var/run/mysqld/mysqld.pid
6
6
  group mysql-<%= RUBBER_ENV %>
7
- start program = "/etc/init.d/mysql restart"
8
- stop program = "/etc/init.d/mysql stop"
7
+ start program = "/usr/sbin/service mysql restart"
8
+ stop program = "/usr/sbin/service mysql stop"
9
9
  if failed host 127.0.0.1 port 3306 protocol mysql then alert
10
10
  if 5 restarts within 5 cycles then timeout
@@ -31,7 +31,7 @@ role_dependencies:
31
31
  db:primary=true: [mysql_master]
32
32
  db: [mysql_slave]
33
33
 
34
- packages: [mysql-client, libmysqlclient15-dev, libmysql-ruby]
34
+ packages: [mysql-client, libmysqlclient15-dev]
35
35
  gems: [mysql]
36
36
 
37
37
  roles:
@@ -46,12 +46,11 @@ namespace :rubber do
46
46
 
47
47
  task :bootstrap, :roles => [:mysql_mgm, :mysql_data, :mysql_sql] do
48
48
  # mysql package install starts mysql, so stop it
49
- sudo "/etc/init.d/mysql stop" rescue nil
49
+ rsudo "service mysql stop" rescue nil
50
50
 
51
51
  # After everything installed on machines, we need the source tree
52
52
  # on hosts in order to run rubber:config for bootstrapping the db
53
- deploy.setup
54
- deploy.update_code
53
+ rubber.update_code_for_bootstrap
55
54
 
56
55
  # Conditionaly bootstrap for each node/role only if that node has not
57
56
  # been boostrapped for that role before
@@ -62,7 +61,7 @@ namespace :rubber do
62
61
  exists = capture("if grep -c rubber.*mysql_mgm /etc/mysql/ndb_mgmd.cnf &> /dev/null; then echo exists; fi")
63
62
  if exists.strip.size == 0
64
63
  rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_mgm", :deploy_path => release_path)
65
- sudo "/etc/init.d/mysql-ndb-mgm start"
64
+ rsudo "service mysql-ndb-mgm start"
66
65
  end
67
66
  end
68
67
  send task_name
@@ -74,7 +73,7 @@ namespace :rubber do
74
73
  exists = capture("if grep -c rubber.*mysql_data /etc/mysql/my.cnf &> /dev/null; then echo exists; fi")
75
74
  if exists.strip.size == 0
76
75
  rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_data", :deploy_path => release_path)
77
- sudo "/etc/init.d/mysql-ndb start-initial"
76
+ rsudo "service mysql-ndb start-initial"
78
77
  end
79
78
  end
80
79
  send task_name
@@ -86,13 +85,18 @@ namespace :rubber do
86
85
  exists = capture("if grep -c rubber.*mysql_sql /etc/mysql/my.cnf &> /dev/null; then echo exists; fi")
87
86
  if exists.strip.size == 0
88
87
  rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_sql", :deploy_path => release_path)
89
- sudo "/etc/init.d/mysql start"
88
+ rsudo "service mysql start"
90
89
  env = rubber_cfg.environment.bind()
91
90
  # For mysql 5.0 cluster, need to create users and database for EVERY sql node
92
91
  pass = "identified by '#{env.db_pass}'" if env.db_pass
93
- sudo "mysql -u root -e 'create database #{env.db_name};'"
94
- sudo "mysql -u root -e \"grant all on #{env.db_name}.* to '#{env.db_user}'@'%' #{pass};\""
95
- sudo "mysql -u root -e \"update user set Super_priv = 'N' where user = '#{env.db_user}';\" mysql"
92
+ rubber.sudo_script "create_mysql_sql_db", <<-ENDSCRIPT
93
+ mysql -u root -e "create database #{env.db_name};"
94
+ mysql -u root -e "grant all on *.* to '#{env.db_user}'@'%' #{pass};"
95
+ mysql -u root -e "grant select on *.* to '#{env.db_slave_user}'@'%' #{pass};"
96
+ mysql -u root -e "grant replication slave on *.* to '#{env.db_replicator_user}'@'%' #{pass};"
97
+ mysql -u root -e "flush privileges;"
98
+ ENDSCRIPT
99
+
96
100
  end
97
101
  end
98
102
  send task_name
@@ -104,42 +108,42 @@ namespace :rubber do
104
108
  Starts the mysql cluster management daemon on the management node
105
109
  DESC
106
110
  task :start_mgm, :roles => :mysql_mgm do
107
- sudo "/etc/init.d/mysql-ndb-mgm start"
111
+ rsudo "service mysql-ndb-mgm start"
108
112
  end
109
113
 
110
114
  desc <<-DESC
111
115
  Starts the mysql cluster storage daemon on the data nodes
112
116
  DESC
113
117
  task :start_data, :roles => :mysql_data do
114
- sudo "/etc/init.d/mysql-ndb start"
118
+ rsudo "service mysql-ndb start"
115
119
  end
116
120
 
117
121
  desc <<-DESC
118
122
  Starts the mysql cluster sql daemon on the sql nodes
119
123
  DESC
120
124
  task :start_sql, :roles => :mysql_sql do
121
- sudo "/etc/init.d/mysql start"
125
+ rsudo "service mysql start"
122
126
  end
123
127
 
124
128
  desc <<-DESC
125
129
  Stops the mysql cluster management daemon on the management node
126
130
  DESC
127
131
  task :stop_mgm, :roles => :mysql_mgm do
128
- sudo "/etc/init.d/mysql-ndb-mgm stop"
132
+ rsudo "service mysql-ndb-mgm stop"
129
133
  end
130
134
 
131
135
  desc <<-DESC
132
136
  Stops the mysql cluster storage daemon on the data nodes
133
137
  DESC
134
138
  task :stop_data, :roles => :mysql_data do
135
- sudo "/etc/init.d/mysql-ndb stop"
139
+ rsudo "service mysql-ndb stop"
136
140
  end
137
141
 
138
142
  desc <<-DESC
139
143
  Stops the mysql cluster sql daemon on the sql nodes
140
144
  DESC
141
145
  task :stop_sql, :roles => :mysql_sql do
142
- sudo "/etc/init.d/mysql stop"
146
+ rsudo "service mysql stop"
143
147
  end
144
148
 
145
149
  desc <<-DESC
@@ -4,7 +4,7 @@
4
4
 
5
5
  check process mysql_cluster_sql with pidfile /var/lib/mysql/<%= rubber_env.full_host %>.pid
6
6
  group mysql_cluster_sql-<%= RUBBER_ENV %>
7
- start program = "/etc/init.d/mysql start"
8
- stop program = "/etc/init.d/mysql stop"
7
+ start program = "/usr/sbin/service mysql start"
8
+ stop program = "/usr/sbin/service mysql stop"
9
9
  if failed host 127.0.0.1 port 3306 protocol mysql then alert
10
10
  if 5 restarts within 5 cycles then timeout
@@ -4,7 +4,7 @@
4
4
 
5
5
  check process mysql_proxy with pidfile /var/run/mysql-proxy.pid
6
6
  group mysql_proxy-<%= RUBBER_ENV %>
7
- start program = "/etc/init.d/mysql-proxy start"
8
- stop program = "/etc/init.d/mysql-proxy stop"
7
+ start program = "/usr/sbin/service mysql-proxy start"
8
+ stop program = "/usr/sbin/service mysql-proxy stop"
9
9
  if failed host 127.0.0.1 port 4040 protocol mysql then alert
10
10
  if 5 restarts within 5 cycles then timeout
@@ -29,21 +29,21 @@ namespace :rubber do
29
29
  Starts the mysql proxy daemon
30
30
  DESC
31
31
  task :start do
32
- sudo "/etc/init.d/mysql-proxy start"
32
+ rsudo "service mysql-proxy start"
33
33
  end
34
34
 
35
35
  desc <<-DESC
36
36
  Stops the mysql proxy daemon
37
37
  DESC
38
38
  task :stop do
39
- sudo "/etc/init.d/mysql-proxy stop"
39
+ rsudo "service mysql-proxy stop"
40
40
  end
41
41
 
42
42
  desc <<-DESC
43
43
  Restarts the mysql proxy daemon
44
44
  DESC
45
45
  task :restart do
46
- sudo "/etc/init.d/mysql-proxy restart"
46
+ rsudo "service mysql-proxy restart"
47
47
  end
48
48
 
49
49
 
@@ -9,10 +9,10 @@ namespace :rubber do
9
9
  # rubber auto-roles don't get defined till after all tasks are defined
10
10
  on :load do
11
11
  rubber.serial_task self, :serial_restart, :roles => :nginx do
12
- sudo "/etc/init.d/nginx restart"
12
+ rsudo "service nginx restart"
13
13
  end
14
14
  rubber.serial_task self, :serial_reload, :roles => :nginx do
15
- sudo "sh -c 'if ! ps ax | grep -v grep | grep -c nginx &> /dev/null; then /etc/init.d/nginx start; else /etc/init.d/nginx reload; fi'"
15
+ rsudo "if ! ps ax | grep -v grep | grep -c nginx &> /dev/null; then service nginx start; else service nginx reload; fi"
16
16
  end
17
17
  end
18
18
 
@@ -21,13 +21,13 @@ namespace :rubber do
21
21
  after "deploy:restart", "rubber:nginx:reload"
22
22
 
23
23
  desc "Stops the nginx web server"
24
- task :stop, :roles => :nginx, :on_error => :continue do
25
- sudo "/etc/init.d/nginx stop"
24
+ task :stop, :roles => :nginx do
25
+ rsudo "service nginx stop; exit 0"
26
26
  end
27
27
 
28
28
  desc "Starts the nginx web server"
29
29
  task :start, :roles => :nginx do
30
- sudo "/etc/init.d/nginx start"
30
+ rsudo "service nginx start"
31
31
  end
32
32
 
33
33
  desc "Restarts the nginx web server"
@@ -4,5 +4,5 @@
4
4
  <% PIDFILE = "/var/run/nginx.pid" %>
5
5
  check process nginx with pidfile <%= PIDFILE %>
6
6
  group nginx-<%= RUBBER_ENV %>
7
- start program = "/etc/init.d/nginx start"
8
- stop program = "/etc/init.d/nginx stop"
7
+ start program = "/usr/sbin/service nginx start"
8
+ stop program = "/usr/sbin/service nginx stop"
@@ -11,6 +11,7 @@ namespace :rubber do
11
11
  rubber.sudo_script 'install_passenger', <<-ENDSCRIPT
12
12
  if [[ -z `ls #{rubber_env.passenger_lib} 2> /dev/null` ]]; then
13
13
  echo -en "\n\n\n\n" | passenger-install-apache2-module
14
+ rvm #{rubber_env.rvm_ruby} --passenger
14
15
  fi
15
16
  ENDSCRIPT
16
17
  end
@@ -18,7 +19,15 @@ namespace :rubber do
18
19
  after "rubber:setup_app_permissions", "rubber:passenger:setup_passenger_permissions"
19
20
 
20
21
  task :setup_passenger_permissions, :roles => :passenger do
21
- sudo "chown #{rubber_env.app_user}:#{rubber_env.app_user} #{current_path}/config/environment.rb"
22
+ rsudo "chown #{rubber_env.app_user}:#{rubber_env.app_user} #{current_path}/config/environment.rb"
23
+ end
24
+
25
+ # passenger does things differently for rack apps, so if this is a rails app, remove config.ru
26
+ # to stop passenger from treating this like a rack app
27
+ after "deploy:update_code", "rubber:passenger:remove_config_ru" if Rubber::Util.is_rails?
28
+
29
+ task :remove_config_ru, :roles => :passenger do
30
+ rsudo "rm -f #{current_release}/config.ru"
22
31
  end
23
32
 
24
33
  # passenger depends on apache for start/stop/restart, just need these defined
@@ -18,7 +18,7 @@ END
18
18
  end
19
19
 
20
20
  def output_values
21
- status = `sudo <%= rubber_env.ruby_prefix %>/bin/passenger-memory-stats | tail -1`
21
+ status = `sudo <%= ENV['GEM_HOME'] %>/bin/passenger-memory-stats | tail -1`
22
22
  unless $?.success?
23
23
  $stderr.puts "failed executing passenger-memory-stats"
24
24
  exit 1
@@ -3,5 +3,5 @@
3
3
  @additive = ["# munin passenger start", "# munin passenger end"]
4
4
  %>
5
5
 
6
- nobody ALL=(ALL) NOPASSWD: <%= rubber_env.ruby_prefix %>/bin/passenger-status
7
- nobody ALL=(ALL) NOPASSWD: <%= rubber_env.ruby_prefix %>/bin/passenger-memory-stats
6
+ nobody ALL=(ALL) NOPASSWD: <%= ENV['GEM_HOME'] %>/bin/passenger-status
7
+ nobody ALL=(ALL) NOPASSWD: <%= ENV['GEM_HOME'] %>/bin/passenger-memory-stats
@@ -21,7 +21,7 @@ END
21
21
  end
22
22
 
23
23
  def output_values
24
- status = `sudo <%= rubber_env.ruby_prefix %>/bin/passenger-status`
24
+ status = `sudo <%= ENV['GEM_HOME'] %>/bin/passenger-status`
25
25
  unless $?.success?
26
26
  $stderr.puts "failed executing passenger-status"
27
27
  exit 1
@@ -2,9 +2,9 @@
2
2
  @path = '/etc/apache2/mods-available/passenger.conf'
3
3
  @post = 'cd /etc/apache2/mods-enabled && ln -fs ../mods-available/passenger.conf'
4
4
  %>
5
- LoadModule passenger_module <%= rubber_env.passenger_lib %>
6
- PassengerRoot <%= rubber_env.passenger_root %>
7
- PassengerRuby <%= rubber_env.passenger_ruby %>
5
+ LoadModule passenger_module <%= `echo #{rubber_env.passenger_lib}` %>
6
+ PassengerRoot <%= `echo #{rubber_env.passenger_root}` %>
7
+ PassengerRuby <%= `echo #{rubber_env.passenger_ruby}` %>
8
8
  PassengerUseGlobalQueue on
9
9
 
10
10
  # max number of rails instances per appserver
@@ -1,6 +1,6 @@
1
1
  passenger_version: 2.2.11
2
- passenger_root: "#{ruby_prefix}/lib/ruby/gems/1.8/gems/passenger-#{passenger_version}"
3
- passenger_ruby: "#{ruby_prefix}/bin/ruby"
2
+ passenger_root: "$GEM_HOME/gems/passenger-#{passenger_version}"
3
+ passenger_ruby: "#{rvm_prefix}/bin/passenger_ruby"
4
4
  passenger_lib: "#{passenger_root}/ext/apache2/mod_passenger.so"
5
5
  passenger_listen_port: 7000
6
6
  passenger_listen_ssl_port: 7001
@@ -0,0 +1,12 @@
1
+ <%
2
+ @path = "#{RUBBER_ROOT}/config/database.yml"
3
+ %>
4
+
5
+ <%= RUBBER_ENV %>:
6
+ adapter: postgresql
7
+ encoding: unicode
8
+ database: <%= rubber_env.db_name %>
9
+ username: <%= rubber_env.db_user %>
10
+ password: <%= rubber_env.db_pass %>
11
+ host: <%= rubber_instances.for_role('db', 'primary' => true).first.full_name %>
12
+ pool: 5
@@ -0,0 +1,131 @@
1
+
2
+ namespace :rubber do
3
+
4
+ namespace :postgresql do
5
+
6
+ rubber.allow_optional_tasks(self)
7
+
8
+ after "rubber:create", "rubber:postgresql:validate_db_roles"
9
+
10
+ task :validate_db_roles do
11
+ db_instances = rubber_instances.for_role("postgresql_slave")
12
+ db_instances.each do |instance|
13
+ if instance.role_names.find {|n| n == 'postgresql_master'}
14
+ fatal "Cannot have a postgresql slave and master on the same instance, please removing slave role for #{instance.name}"
15
+ end
16
+ end
17
+ end
18
+
19
+ after "rubber:bootstrap", "rubber:postgresql:bootstrap"
20
+
21
+
22
+ # Bootstrap the production database config. Db bootstrap is special - the
23
+ # user could be requiring the rails env inside some of their config
24
+ # templates, which creates a catch 22 situation with the db, so we try and
25
+ # bootstrap the db separate from the rest of the config
26
+ task :bootstrap, :roles => [:postgresql_master, :postgresql_slave] do
27
+
28
+ # Conditionaly bootstrap for each node/role only if that node has not
29
+ # been boostrapped for that role before
30
+ master_instances = rubber_instances.for_role("postgresql_master") & rubber_instances.filtered
31
+ master_instances.each do |ic|
32
+ task_name = "_bootstrap_postgresql_master_#{ic.full_name}".to_sym()
33
+ task task_name, :hosts => ic.full_name do
34
+ env = rubber_cfg.environment.bind("postgresql_master", ic.name)
35
+ exists = capture("echo $(ls #{env.postgresql_data_dir}/ 2> /dev/null)")
36
+ if exists.strip.size == 0
37
+ common_bootstrap("postgresql_master")
38
+
39
+ create_user_cmd = "CREATE USER #{env.db_user} WITH NOSUPERUSER CREATEDB NOCREATEROLE"
40
+ create_user_cmd << "PASSWORD '#{env.db_pass}'" if env.db_pass
41
+ rubber.sudo_script "create_master_db", <<-ENDSCRIPT
42
+ sudo -u postgres psql -c "#{create_user_cmd}"
43
+ sudo -u postgres psql -c "CREATE DATABASE #{env.db_name} WITH OWNER #{env.db_user}"
44
+ ENDSCRIPT
45
+ end
46
+ end
47
+ send task_name
48
+ end
49
+
50
+ # Wait for postgresql 9.0 to be avlabel before allowing slaves
51
+ #
52
+ # slave_instances = rubber_instances.for_role("postgresql_slave") & rubber_instances.filtered
53
+ # slave_instances.each do |ic|
54
+ # task_name = "_bootstrap_postgresql_slave_#{ic.full_name}".to_sym()
55
+ # task task_name, :hosts => ic.full_name do
56
+ # env = rubber_cfg.environment.bind("postgresql_slave", ic.name)
57
+ # exists = capture("echo $(ls #{env.db_data_dir}/ 2> /dev/null)")
58
+ # if exists.strip.size == 0
59
+ # common_bootstrap("postgresql_slave")
60
+ #
61
+ # source = master = rubber_instances.for_role("postgresql_master").first
62
+ #
63
+ # slave_pub_key = capture("cat /root/.ssh/id_dsa.pub")
64
+ # sudo "echo \"#{slave_pub_key}\" >> /root/.ssh/authorized_keys", :hosts => [master.full_name]
65
+ #
66
+ # base_backup_script = <<-ENDSCRIPT
67
+ # sudo -u postgres psql -c "SELECT pg_start_backup('rubber_create_slave')"
68
+ # tar --exclude pg_xlog -czf /tmp/postgresql-data.tgz #{env.postgresql_data_dir}
69
+ # tar -czf /tmp/postgresql-archive.tgz #{env.postgresql_archive_dir}
70
+ # sudo -u postgres psql -c "SELECT pg_stop_backup()"
71
+ # ENDSCRIPT
72
+ #
73
+ # rubber.sudo_script "create_slave_db_from_master", base_backup_script, :hosts => [master.full_name]
74
+ #
75
+ # rsudo "psql -u root -e \"start slave;\""
76
+ # end
77
+ # end
78
+ # send task_name
79
+ # end
80
+
81
+ end
82
+
83
+ # TODO: Make the setup/update happen just once per host
84
+ def common_bootstrap(role)
85
+ # postgresql package install starts postgresql, so stop it
86
+ rsudo "#{rubber_env.postgresql_ctl} stop" rescue nil
87
+
88
+ # After everything installed on machines, we need the source tree
89
+ # on hosts in order to run rubber:config for bootstrapping the db
90
+ rubber.update_code_for_bootstrap
91
+
92
+ # Gen just the conf for the given postgresql role
93
+ rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/#{role}|role/db/", :FORCE => true, :deploy_path => release_path)
94
+
95
+ # reconfigure postgresql so that it sets up data dir in /mnt with correct files
96
+ dirs = [rubber_env.postgresql_data_dir, rubber_env.postgresql_archive_dir]
97
+ sudo_script 'reconfigure-postgresql', <<-ENDSCRIPT
98
+ mkdir -p #{dirs.join(' ')}
99
+ chown -R postgres:postgres #{dirs.join(' ')}
100
+
101
+ sudo -u postgres /usr/lib/postgresql/#{rubber_env.postgresql_ver}/bin/initdb -D #{rubber_env.postgresql_data_dir}
102
+
103
+ #{rubber_env.postgresql_ctl} start
104
+ ENDSCRIPT
105
+ sleep 5
106
+ end
107
+
108
+ desc <<-DESC
109
+ Starts the postgresql daemons
110
+ DESC
111
+ task :start, :roles => [:postgresql_master, :postgresql_slave] do
112
+ rsudo "#{rubber_env.postgresql_ctl} start"
113
+ end
114
+
115
+ desc <<-DESC
116
+ Stops the postgresql daemons
117
+ DESC
118
+ task :stop, :roles => [:postgresql_master, :postgresql_slave] do
119
+ rsudo "#{rubber_env.postgresql_ctl} stop"
120
+ end
121
+
122
+ desc <<-DESC
123
+ Restarts the postgresql daemons
124
+ DESC
125
+ task :restart, :roles => [:postgresql_master, :postgresql_slave] do
126
+ rsudo "#{rubber_env.postgresql_ctl} restart"
127
+ end
128
+
129
+ end
130
+
131
+ end
@@ -0,0 +1,14 @@
1
+ <%
2
+ @read_cmd = 'crontab -l'
3
+ @write_cmd = 'crontab -'
4
+ @additive = ["# rubber-postgresql-start", "# rubber-postgresql-end"]
5
+ %>
6
+
7
+ <%
8
+ # Backup db every 3 hours to secondary db if available, else primary db
9
+ backup_db_host = rubber_instances.for_role('db', {}).first rescue nil
10
+ backup_db_host ||= rubber_instances.for_role('db', 'primary' => true).first
11
+ if backup_db_host.name == rubber_env.host
12
+ %>
13
+ 0 */3 * * * BACKUP_DIR=/mnt/db_backups DBUSER=<%= rubber_env.db_user %> DBPASS=<%= rubber_env.db_pass %> DBNAME=<%= rubber_env.db_name %> DBHOST=<%= backup_db_host.full_name %> <%= RUBBER_ROOT %>/script/cron-rake rubber:backup_db
14
+ <% end %>