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
@@ -0,0 +1,45 @@
1
+ <%
2
+ @path = "#{rubber_env.cassandra_dir}/conf/log4j-server.properties"
3
+ %>
4
+
5
+
6
+ # Licensed to the Apache Software Foundation (ASF) under one
7
+ # or more contributor license agreements. See the NOTICE file
8
+ # distributed with this work for additional information
9
+ # regarding copyright ownership. The ASF licenses this file
10
+ # to you under the Apache License, Version 2.0 (the
11
+ # "License"); you may not use this file except in compliance
12
+ # with the License. You may obtain a copy of the License at
13
+ #
14
+ # http://www.apache.org/licenses/LICENSE-2.0
15
+ #
16
+ # Unless required by applicable law or agreed to in writing, software
17
+ # distributed under the License is distributed on an "AS IS" BASIS,
18
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ # See the License for the specific language governing permissions and
20
+ # limitations under the License.
21
+
22
+ # for production, you should probably set the root to INFO
23
+ # and the pattern to %c instead of %l. (%l is slower.)
24
+
25
+ # output messages into a rolling log file as well as stdout
26
+ log4j.rootLogger=INFO,stdout,R
27
+
28
+ # stdout
29
+ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
30
+ log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
31
+ log4j.appender.stdout.layout.ConversionPattern=%5p %d{HH:mm:ss,SSS} %m%n
32
+
33
+ # rolling log file
34
+ log4j.appender.R=org.apache.log4j.RollingFileAppender
35
+ log4j.appender.file.maxFileSize=20MB
36
+ log4j.appender.file.maxBackupIndex=50
37
+ log4j.appender.R.layout=org.apache.log4j.PatternLayout
38
+ log4j.appender.R.layout.ConversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n
39
+ # Edit the next line to point to your logs directory
40
+ log4j.appender.R.File=<%= rubber_env.cassandra_log_dir %>/system.log
41
+
42
+ # Application logging options
43
+ #log4j.logger.com.facebook=DEBUG
44
+ #log4j.logger.com.facebook.infrastructure.gms=DEBUG
45
+ #log4j.logger.com.facebook.infrastructure.db=DEBUG
@@ -0,0 +1,8 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-cassandra.conf'
3
+ %>
4
+ check process cassandra with pidfile <%= rubber_env.cassandra_pid_file %>
5
+ group cassandra-<%= RUBBER_ENV %>
6
+ start program = "<%= rubber_env.cassandra_dir %>/bin/cassandra -p <%= rubber_env.cassandra_pid_file %>"
7
+ stop program = "kill `cat <%= rubber_env.cassandra_pid_file %>`"
8
+ if failed host <%= rubber_env.host %> port <%= rubber_env.cassandra_rpc_port %> with timeout 10 seconds for 10 cycles then restart
@@ -0,0 +1,18 @@
1
+ cassandra_version: 2010-05-05_14-04-54
2
+ cassandra_prefix: /usr/local
3
+ cassandra_dir: "#{cassandra_prefix}/apache-cassandra-#{cassandra_version}"
4
+ cassandra_data_dir: "/var/lib/cassandra/data"
5
+ cassandra_commitlog_dir: "/var/lib/cassandra/commitlog"
6
+ cassandra_log_dir: "/var/log/cassandra"
7
+ cassandra_pid_file: "/var/run/cassandra.pid"
8
+ cassandra_pkg_url: "http://hudson.zones.apache.org/hudson/job/Cassandra/lastSuccessfulBuild/artifact/cassandra/build/apache-cassandra-#{cassandra_version}-bin.tar.gz"
9
+ cassandra_rpc_port: 9160
10
+ cassandra_storage_port: 7070
11
+ cassandra_jmx_port: 8181
12
+
13
+ role_dependencies:
14
+ cassandra_seed: [cassandra]
15
+
16
+ roles:
17
+ cassandra:
18
+ packages: [openjdk-6-jdk]
@@ -0,0 +1 @@
1
+ description: The Cassandra distributed data store
@@ -13,7 +13,7 @@ listen passenger_proxy 0.0.0.0:<%= rubber_env.web_port %>
13
13
  server <%= server %> <%= server %>:<%= rubber_env.passenger_listen_port %> maxconn <%= rubber_env.max_app_connections %> check
14
14
  <% end %>
15
15
 
16
- listen passenger_proxy 0.0.0.0:<%= rubber_env.web_ssl_port %>
16
+ listen passenger_proxy_ssl 0.0.0.0:<%= rubber_env.web_ssl_port %>
17
17
  mode tcp
18
18
  option forwardfor
19
19
  <% backend_hosts.each do |server| %>
@@ -0,0 +1,9 @@
1
+ database_engines = ['mysql', 'postgresql']
2
+ if ! database_engines.any? {|d| @template_dependencies.include?(d)}
3
+ db = Rubber::Util::prompt("DATABASE",
4
+ "The database engine to use (#{database_engines.join(', ')})",
5
+ true,
6
+ 'mysql')
7
+ template_dependencies << db
8
+ end
9
+
@@ -0,0 +1,9 @@
1
+ description: A fairly complete and scalable deployment setup
2
+ dependent_templates:
3
+ - base
4
+ - haproxy
5
+ - apache
6
+ - passenger
7
+ - monit
8
+ - munin
9
+ - memcached
@@ -1,10 +1,4 @@
1
1
  description: A fairly complete and scalable mysql deployment setup
2
2
  dependent_templates:
3
- - base
3
+ - complete_passenger
4
4
  - mysql
5
- - haproxy
6
- - apache
7
- - passenger
8
- - monit
9
- - munin
10
- - memcached
@@ -0,0 +1,4 @@
1
+ description: A fairly complete and scalable postgresql deployment setup
2
+ dependent_templates:
3
+ - complete_passenger
4
+ - postgresql
@@ -54,12 +54,12 @@ namespace :rubber do
54
54
 
55
55
  desc "Start cruise control daemon"
56
56
  task :start, :roles => :cruise do
57
- sudo "/etc/init.d/cruise start"
57
+ rsudo "/etc/init.d/cruise start"
58
58
  end
59
59
 
60
60
  desc "Stop cruise control daemon"
61
- task :stop, :roles => :cruise, :on_error => :continue do
62
- sudo "/etc/init.d/cruise stop"
61
+ task :stop, :roles => :cruise do
62
+ rsudo "/etc/init.d/cruise stop; exit 0"
63
63
  end
64
64
 
65
65
  desc "Restart cruise control daemon"
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  @path = '/etc/mysql/my.cnf'
3
- @post = '/etc/init.d/mysql restart'
3
+ @post = 'service mysql restart'
4
4
  %>
5
5
 
6
6
  # Generated by rubber for host <%= rubber_instances[rubber_env.host].external_ip %>
@@ -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 => :haproxy do
12
- sudo "/etc/init.d/haproxy restart"
12
+ rsudo "service haproxy restart"
13
13
  end
14
14
  rubber.serial_task self, :serial_reload, :roles => :haproxy do
15
- sudo "sh -c 'if ! ps ax | grep -v grep | grep -c haproxy &> /dev/null; then /etc/init.d/haproxy start; else /etc/init.d/haproxy reload; fi'"
15
+ rsudo "if ! ps ax | grep -v grep | grep -c haproxy &> /dev/null; then service haproxy start; else service haproxy reload; fi"
16
16
  end
17
17
  end
18
18
 
@@ -21,13 +21,13 @@ namespace :rubber do
21
21
  after "deploy:restart", "rubber:haproxy:reload"
22
22
 
23
23
  desc "Stops the haproxy server"
24
- task :stop, :roles => :haproxy, :on_error => :continue do
25
- sudo "/etc/init.d/haproxy stop"
24
+ task :stop, :roles => :haproxy do
25
+ rsudo "service haproxy stop; exit 0"
26
26
  end
27
27
 
28
28
  desc "Starts the haproxy server"
29
29
  task :start, :roles => :haproxy do
30
- sudo "/etc/init.d/haproxy start"
30
+ rsudo "service haproxy start"
31
31
  end
32
32
 
33
33
  desc "Restarts the haproxy server"
@@ -4,6 +4,6 @@
4
4
  <% PIDFILE = "/var/run/haproxy.pid" %>
5
5
  check process haproxy with pidfile <%= PIDFILE %>
6
6
  group haproxy-<%= RUBBER_ENV %>
7
- start program = "/etc/init.d/haproxy start"
8
- stop program = "/etc/init.d/haproxy stop"
7
+ start program = "/usr/sbin/service haproxy start"
8
+ stop program = "/usr/sbin/service haproxy stop"
9
9
  if failed host <%= rubber_env.host %> port <%= rubber_env.haproxy_monitor_port %> with timeout 10 seconds for 10 cycles then restart
@@ -2,7 +2,7 @@
2
2
  is_rsyslog = File.exist?('/etc/init.d/rsyslog')
3
3
  if is_rsyslog
4
4
  @path = "/etc/rsyslog.d/haproxy.conf"
5
- @post = "/etc/init.d/rsyslog restart"
5
+ @post = "service rsyslog restart"
6
6
  else
7
7
  @path = "/etc/syslog.conf"
8
8
  @post = "/etc/init.d/sysklogd restart"
@@ -36,7 +36,7 @@ namespace :rubber do
36
36
  after "rubber:setup_app_permissions", "rubber:jetty:setup_jetty_permissions"
37
37
 
38
38
  task :setup_jetty_permissions, :roles => :jetty do
39
- sudo "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{rubber_env.jetty_dir}"
39
+ rsudo "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{rubber_env.jetty_dir}"
40
40
  end
41
41
 
42
42
  before "deploy:stop", "rubber:jetty:stop"
@@ -44,15 +44,15 @@ namespace :rubber do
44
44
  after "deploy:restart", "rubber:jetty:restart"
45
45
 
46
46
  task :restart, :roles => :jetty do
47
- sudo "#{rubber_env.jetty_dir}/bin/jetty.sh restart"
47
+ rsudo "#{rubber_env.jetty_dir}/bin/jetty.sh restart"
48
48
  end
49
49
 
50
50
  task :stop, :roles => :jetty do
51
- sudo "#{rubber_env.jetty_dir}/bin/jetty.sh stop"
51
+ rsudo "#{rubber_env.jetty_dir}/bin/jetty.sh stop"
52
52
  end
53
53
 
54
54
  task :start, :roles => :jetty do
55
- sudo "#{rubber_env.jetty_dir}/bin/jetty.sh start"
55
+ rsudo "#{rubber_env.jetty_dir}/bin/jetty.sh start"
56
56
  end
57
57
 
58
58
  end
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  @path = "/etc/memcached.conf"
3
- @post = "/etc/init.d/memcached restart"
3
+ @post = "service memcached restart"
4
4
  %>
5
5
 
6
6
  # memcached default config file edited for mobicious
@@ -21,16 +21,16 @@ namespace :rubber do
21
21
 
22
22
 
23
23
  def mongrel_stop
24
- sudo "cd #{current_path} && mongrel_rails cluster::stop"
24
+ rsudo "cd #{current_path} && mongrel_rails cluster::stop"
25
25
  sleep 5 # Give the graceful stop a chance to complete
26
- sudo "cd #{current_path} && mongrel_rails cluster::stop --force --clean"
26
+ rsudo "cd #{current_path} && mongrel_rails cluster::stop --force --clean"
27
27
  end
28
28
 
29
29
  def mongrel_start
30
- sudo "cd #{current_path} && mongrel_rails cluster::start --clean"
30
+ rsudo "cd #{current_path} && mongrel_rails cluster::start --clean"
31
31
  pid_cnt = rubber_env.mongrel_count
32
32
  logger.info "Waiting for mongrel pid files to show up"
33
- sudo "sh -c 'while ((`ls #{current_path}/tmp/pids/mongrel.*.pid 2> /dev/null | wc -l` < #{pid_cnt})); do sleep 1; done'"
33
+ rsudo "while ((`ls #{current_path}/tmp/pids/mongrel.*.pid 2> /dev/null | wc -l` < #{pid_cnt})); do sleep 1; done"
34
34
  end
35
35
 
36
36
  # serial_task can only be called after roles defined - not normally a problem, but
@@ -42,6 +42,8 @@ set logfile /var/log/monit.log
42
42
  # backup.bar.baz port 10025, # backup mailserver on port 10025
43
43
  # localhost # fallback relay
44
44
  #
45
+ set mailserver localhost
46
+
45
47
  #
46
48
  ## By default monit will drop the event alert, in the case that there is no
47
49
  ## mailserver available. In the case that you want to keep the events for
@@ -14,12 +14,12 @@ namespace :rubber do
14
14
 
15
15
  desc "Start monit daemon monitoring"
16
16
  task :start do
17
- sudo "/etc/init.d/monit start"
17
+ rsudo "service monit start"
18
18
  end
19
19
 
20
20
  desc "Stop monit daemon monitoring"
21
- task :stop, :on_error => :continue do
22
- sudo "/etc/init.d/monit stop"
21
+ task :stop do
22
+ rsudo "service monit stop; exit 0"
23
23
  end
24
24
 
25
25
  desc "Restart monit daemon monitoring"
@@ -3,6 +3,6 @@
3
3
  %>
4
4
 
5
5
  check process munin-node with pidfile /var/run/munin/munin-node.pid
6
- start program "/etc/init.d/munin-node start"
7
- stop program "/etc/init.d/munin-node stop"
6
+ start program "/usr/sbin/service munin-node start"
7
+ stop program "/usr/sbin/service munin-node stop"
8
8
  if 5 restarts within 5 cycles then timeout
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  @path = '/etc/munin/munin-node.conf'
3
- @post = '/etc/init.d/munin-node restart'
3
+ @post = 'service munin-node restart'
4
4
  %>
5
5
 
6
6
  #
@@ -3,7 +3,9 @@
3
3
  %>
4
4
 
5
5
  # munin-node clears out enviroment variables, so we need to add these in
6
- # to make sure we are running the correct ruby (REE vs regular)
6
+ # to make sure we are running the correct ruby (rvm env vars, plus paths)
7
7
  [*]
8
- env.PATH /sbin:/usr/sbin:/usr/local/sbin:<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:/usr/bin:/bin
8
+ <%- ENV.select {|k, v| k =~ /rvm|ruby|bundler|gem|path/i }.each do |k, v| -%>
9
+ env.<%= k %> <%= v %>
10
+ <%- end -%>
9
11
  env.RUBYOPT rubygems
@@ -15,7 +15,7 @@ namespace :rubber do
15
15
  DESC
16
16
  task :custom_install do
17
17
  rubber.sudo_script 'setup_munin_plugins', <<-ENDSCRIPT
18
- munin-node-configure --shell --remove-also > /tmp/setup-munin-plugins
18
+ munin-node-configure --shell --remove-also > /tmp/setup-munin-plugins 2> /dev/null || true
19
19
  sh /tmp/setup-munin-plugins
20
20
  ENDSCRIPT
21
21
  restart
@@ -27,12 +27,12 @@ namespace :rubber do
27
27
 
28
28
  desc "Start munin system monitoring"
29
29
  task :start do
30
- sudo "/etc/init.d/munin-node start"
30
+ rsudo "service munin-node start"
31
31
  end
32
32
 
33
33
  desc "Stop munin system monitoring"
34
- task :stop, :on_error => :continue do
35
- sudo "/etc/init.d/munin-node stop"
34
+ task :stop do
35
+ rsudo "service munin-node stop; exit 0"
36
36
  end
37
37
 
38
38
  desc "Restart munin system monitoring"
@@ -2,7 +2,7 @@
2
2
  @path = "/etc/munin/plugin-conf.d/munin-node"
3
3
  @additive = ["# rubber-munin-plugins-start", "# rubber-munin-plugins-end"]
4
4
  @post = <<-POST
5
- /etc/init.d/munin-node restart
5
+ service munin-node restart
6
6
  POST
7
7
 
8
8
  root = RUBBER_ENV == 'development' ? "#{RUBBER_ROOT}/tmp/rubber" : ""
@@ -22,7 +22,7 @@
22
22
  File.open("#{plugin_dir}/#{plugin_name}", 'w') do |p|
23
23
  p.chmod(0755)
24
24
  p.puts('#!/bin/sh')
25
- p.puts("RUBBER_ENV=#{RUBBER_ENV} #{rubber_env.ruby_prefix}/bin/ruby #{script} $*")
25
+ p.puts("RUBBER_ENV=#{RUBBER_ENV} #{script} $*")
26
26
  end
27
27
  end
28
28
  %>
@@ -1,5 +1,6 @@
1
1
  <%
2
2
  @path = '/etc/munin/munin.conf'
3
+ @post = "mkdir -p /var/www/munin; chown -R munin:munin /var/www/munin"
3
4
  %>
4
5
 
5
6
  # Example configuration file for Munin, generated by 'make build'
@@ -1,6 +1,6 @@
1
1
  # Uses admin_email from base
2
2
 
3
- packages: [munin-node, munin-plugins-extra, mailx]
3
+ packages: [munin-node, munin-plugins-extra, heirloom-mailx]
4
4
 
5
5
  roles:
6
6
  web_tools:
@@ -16,8 +16,6 @@ require "rubber"
16
16
  env = ENV["RUBBER_ENV"] ||= "development"
17
17
  root = File.join(File.dirname(__FILE__), '../..')
18
18
  Rubber::initialize(root, env)
19
- RUBBER_CONFIG = Rubber::Configuration.rubber_env
20
- RUBBER_INSTANCES = Rubber::Configuration.rubber_instances
21
19
 
22
20
  # Print config info need by munin for generating graphs
23
21
  if ARGV[0] == "config"
@@ -38,15 +36,15 @@ query = <<-EOF
38
36
  EOF
39
37
 
40
38
  # pick a non-critical db if possible
41
- source = RUBBER_INSTANCES.for_role("mysql_util").first
42
- source ||= RUBBER_INSTANCES.for_role("mysql_slave").first
43
- source ||= RUBBER_INSTANCES.for_role("mysql_master").first
39
+ source = Rubber.instances.for_role("mysql_util").first
40
+ source ||= Rubber.instances.for_role("mysql_slave").first
41
+ source ||= Rubber.instances.for_role("mysql_master").first
44
42
  db_host = source ? source.full_name : 'localhost'
45
43
 
46
- command = "mysql -u #{RUBBER_CONFIG.db_slave_user}"
47
- command << " --password=#{RUBBER_CONFIG.db_pass}"
44
+ command = "mysql -u #{Rubber.config.db_slave_user}"
45
+ command << " --password=#{Rubber.config.db_pass}"
48
46
  command << " -h #{db_host}"
49
- command << " #{RUBBER_CONFIG.db_name} --skip-column-names"
47
+ command << " #{Rubber.config.db_name} --skip-column-names"
50
48
 
51
49
  # execute a sql query to get some data
52
50
  data = `echo "#{query}" | #{command}`
@@ -9,3 +9,4 @@
9
9
  username: <%= rubber_env.db_user %>
10
10
  password: <%= rubber_env.db_pass %>
11
11
  host: <%= rubber_instances.for_role('db', 'primary' => true).first.full_name %>
12
+ pool: 5
@@ -38,11 +38,13 @@ namespace :rubber do
38
38
  common_bootstrap("mysql_master")
39
39
 
40
40
  pass = "identified by '#{env.db_pass}'" if env.db_pass
41
- sudo "mysql -u root -e 'create database #{env.db_name};'"
42
- sudo "mysql -u root -e \"grant all on *.* to '#{env.db_user}'@'%' #{pass};\""
43
- sudo "mysql -u root -e \"grant select on *.* to '#{env.db_slave_user}'@'%' #{pass};\""
44
- sudo "mysql -u root -e \"grant replication slave on *.* to '#{env.db_replicator_user}'@'%' #{pass};\""
45
- sudo "mysql -u root -e \"flush privileges;\""
41
+ rubber.sudo_script "create_master_db", <<-ENDSCRIPT
42
+ mysql -u root -e "create database #{env.db_name};"
43
+ mysql -u root -e "grant all on *.* to '#{env.db_user}'@'%' #{pass};"
44
+ mysql -u root -e "grant select on *.* to '#{env.db_slave_user}'@'%' #{pass};"
45
+ mysql -u root -e "grant replication slave on *.* to '#{env.db_replicator_user}'@'%' #{pass};"
46
+ mysql -u root -e "flush privileges;"
47
+ ENDSCRIPT
46
48
  end
47
49
  end
48
50
  send task_name
@@ -76,26 +78,30 @@ namespace :rubber do
76
78
 
77
79
  if source == master
78
80
  logger.info "Creating slave from a dump of master #{source_host}"
79
- sudo "mysql -u root -e \"change master to master_host='#{master_host}', master_user='#{env.db_replicator_user}' #{master_pass}\""
80
- sudo "sh -c 'mysqldump -u #{env.db_user} #{pass} -h #{source_host} --all-databases --master-data=1 | mysql -u root'"
81
+ rubber.sudo_script "create_slave_db_from_master", <<-ENDSCRIPT
82
+ mysql -u root -e "change master to master_host='#{master_host}', master_user='#{env.db_replicator_user}' #{master_pass}"
83
+ mysqldump -u #{env.db_user} --password #{env.db_pass} -h #{source_host} --all-databases --master-data=1 | mysql -u root
84
+ ENDSCRIPT
81
85
  else
82
86
  logger.info "Creating slave from a dump of slave #{source_host}"
83
- sudo "mysql -u #{env.db_user} #{pass} -h #{source_host} -e \"stop slave;\""
87
+ rsudo "mysql -u #{env.db_user} --password #{env.db_pass} -h #{source_host} -e \"stop slave;\""
84
88
  slave_status = capture("mysql -u #{env.db_user} #{pass} -h #{source_host} -e \"show slave status\\G\"")
85
89
  slave_config = Hash[*slave_status.scan(/([^\s:]+): ([^\s]*)/).flatten]
86
90
  log_file = slave_config['Master_Log_File']
87
91
  log_pos = slave_config['Read_Master_Log_Pos']
88
- sudo "sh -c 'mysqldump -u #{env.db_user} #{pass} -h #{source_host} --all-databases --master-data=1 | mysql -u root'"
89
- sudo "mysql -u root -e \"change master to master_host='#{master_host}', master_user='#{env.db_replicator_user}', master_log_file='#{log_file}', master_log_pos=#{log_pos} #{master_pass}\""
90
- sudo "mysql -u #{env.db_user} #{pass} -h #{source_host} -e \"start slave;\""
92
+ rubber.sudo_script "create_slave_db_from_slave", <<-ENDSCRIPT
93
+ mysqldump -u #{env.db_user} --password #{env.db_pass} -h #{source_host} --all-databases --master-data=1 | mysql -u root
94
+ mysql -u root -e "change master to master_host='#{master_host}', master_user='#{env.db_replicator_user}', master_log_file='#{log_file}', master_log_pos=#{log_pos} #{master_pass}"
95
+ mysql -u #{env.db_user} --password #{env.db_pass} -h #{source_host} -e "start slave;"
96
+ ENDSCRIPT
91
97
  end
92
98
 
93
99
  # this doesn't work without agent forwarding which sudo breaks, as well as not having your
94
100
  # ec2 private key ssh-added on workstation
95
101
  # sudo "scp -o \"StrictHostKeyChecking=no\" #{source_host}:/etc/mysql/debian.cnf /etc/mysql"
96
102
 
97
- sudo "mysql -u root -e \"flush privileges;\""
98
- sudo "mysql -u root -e \"start slave;\""
103
+ rsudo "mysql -u root -e \"flush privileges;\""
104
+ rsudo "mysql -u root -e \"start slave;\""
99
105
  end
100
106
  end
101
107
  send task_name
@@ -106,12 +112,11 @@ namespace :rubber do
106
112
  # TODO: Make the setup/update happen just once per host
107
113
  def common_bootstrap(role)
108
114
  # mysql package install starts mysql, so stop it
109
- sudo "/etc/init.d/mysql stop" rescue nil
115
+ rsudo "service mysql stop" rescue nil
110
116
 
111
117
  # After everything installed on machines, we need the source tree
112
118
  # on hosts in order to run rubber:config for bootstrapping the db
113
- deploy.setup
114
- deploy.update_code
119
+ rubber.update_code_for_bootstrap
115
120
 
116
121
  # Gen just the conf for the given mysql role
117
122
  rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/#{role}|role/db/", :FORCE => true, :deploy_path => release_path)
@@ -142,112 +147,22 @@ namespace :rubber do
142
147
  Starts the mysql daemons
143
148
  DESC
144
149
  task :start, :roles => [:mysql_master, :mysql_slave] do
145
- sudo "/etc/init.d/mysql start"
150
+ rsudo "service mysql start"
146
151
  end
147
152
 
148
153
  desc <<-DESC
149
154
  Stops the mysql daemons
150
155
  DESC
151
156
  task :stop, :roles => [:mysql_master, :mysql_slave] do
152
- sudo "/etc/init.d/mysql stop"
157
+ rsudo "service mysql stop"
153
158
  end
154
159
 
155
160
  desc <<-DESC
156
161
  Restarts the mysql daemons
157
162
  DESC
158
163
  task :restart, :roles => [:mysql_master, :mysql_slave] do
159
- sudo "/etc/init.d/mysql restart"
164
+ rsudo "service mysql restart"
160
165
  end
161
-
162
- desc <<-DESC
163
- Backup production database using rake task rubber:backup_db
164
- DESC
165
- task :backup, :roles => [:mysql_master, :mysql_slave] do
166
- master_instances = rubber_instances.for_role("mysql_master")
167
- slaves = rubber_instances.for_role("mysql_slave")
168
-
169
- # Select only one instance for backup. Favor slave database.
170
- selected_mysql_instance = (slaves+master_instances).first
171
-
172
- task_name = "_backup_mysql_slave_#{selected_mysql_instance.full_name}".to_sym()
173
- task task_name, :hosts => selected_mysql_instance.full_name do
174
- run "cd #{current_path} && RUBBER_ENV=production RAILS_ENV=production RUBYOPT=rubygems BACKUP_DIR=/mnt/db_backups DBUSER=#{rubber_env.db_user} DBPASS=#{rubber_env.db_pass} DBNAME=#{rubber_env.db_name} DBHOST=#{selected_mysql_instance.full_name} rake rubber:backup_db"
175
- end
176
- send task_name
177
- end
178
-
179
- desc <<-DESC
180
- Restore production database from s3 using rake task rubber:restore_db_s3
181
- DESC
182
- task :restore_s3, :roles => [:mysql_master, :mysql_slave] do
183
- master_instances = rubber_instances.for_role("mysql_master")
184
- slaves = rubber_instances.for_role("mysql_slave")
185
-
186
- for instance in master_instances+slaves
187
- task_name = "_restore_mysql_s3_#{instance.full_name}".to_sym()
188
- task task_name, :hosts => instance.full_name do
189
- run "cd #{current_path} && RUBBER_ENV=production RAILS_ENV=production RUBYOPT=rubygems BACKUP_DIR=/mnt/db_backups DBUSER=#{rubber_env.db_user} DBPASS=#{rubber_env.db_pass} DBNAME=#{rubber_env.db_name} DBHOST=#{instance.full_name} rake rubber:restore_db_s3"
190
- end
191
- send task_name
192
- end
193
- end
194
-
195
- desc <<-DESC
196
- Overwrite ec2 production database with export from local production database.
197
- DESC
198
- task :local_to_ec2, :roles => [:mysql_master, :mysql_slave] do
199
- require 'yaml'
200
- master_instances = rubber_instances.for_role("mysql_master")
201
- slaves = rubber_instances.for_role("mysql_slave")
202
-
203
- # Select only one instance for backup. Favor slave database.
204
- selected_mysql_instance = (slaves+master_instances).first
205
-
206
- task_name = "_load_local_to_#{selected_mysql_instance.full_name}".to_sym()
207
- task task_name, :hosts => selected_mysql_instance.full_name do
208
-
209
- # Dump Local to tmp folder
210
- filename = "#{application}.local.#{Time.now.to_i}.sql.gz"
211
- backup_file = "/tmp/#{filename}"
212
- on_rollback { delete file }
213
- FileUtils.mkdir_p(File.dirname(backup_file))
214
-
215
- # Use database.yml to get connection params
216
- db = YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__), '..','database.yml'))).result)['production']
217
- user = db['username']
218
- pass = db['passsword']
219
- pass = nil if pass and pass.strip.size == 0
220
- host = db['host']
221
- name = db['database']
222
-
223
- raise "No db_backup_cmd defined in rubber.yml, cannot backup!" unless rubber_env.db_backup_cmd
224
- db_backup_cmd = rubber_env.db_backup_cmd.gsub(/%([^%]+)%/, '#{\1}')
225
- db_backup_cmd = eval('%Q{' + db_backup_cmd + '}')
226
-
227
- # mysqldump (or backup app) needs to be in your path
228
- puts "Backing up database with command:"
229
- system(db_backup_cmd)
230
- puts "Created backup: #{backup_file}"
231
-
232
- # Upload Local to S3
233
- cloud_provider = rubber_env.cloud_providers[rubber_env.cloud_provider]
234
- s3_prefix = "db/"
235
- backup_bucket = cloud_provider.backup_bucket
236
- if backup_bucket
237
- AWS::S3::Base.establish_connection!(:access_key_id => cloud_provider.access_key, :secret_access_key => cloud_provider.secret_access_key)
238
- unless AWS::S3::Bucket.list.find { |b| b.name == backup_bucket }
239
- AWS::S3::Bucket.create(backup_bucket)
240
- end
241
- dest = "#{s3_prefix}#{File.basename(backup_file)}"
242
- puts "Saving db dump to S3: #{backup_bucket}:#{dest}"
243
- AWS::S3::S3Object.store(dest, open(backup_file), backup_bucket)
244
- end
245
-
246
- send :restore_s3
247
-
248
- end
249
- send task_name
250
- end
251
166
 
252
167
  end
253
168