sml-rubber 0.9.13 → 1.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (312) hide show
  1. data/CHANGELOG +350 -0
  2. data/TODO +4 -0
  3. data/VERSION +1 -1
  4. data/bin/vulcanize +16 -32
  5. data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +6 -6
  6. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +2 -2
  7. data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +3 -0
  8. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +30 -13
  9. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +6 -2
  10. data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +0 -1
  11. data/generators/vulcanize/templates/base/Rakefile +21 -0
  12. data/generators/vulcanize/templates/base/config/deploy.rb +1 -0
  13. data/generators/vulcanize/templates/base/config/rubber/common/crontab +7 -1
  14. data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  15. data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
  16. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +53 -65
  17. data/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  18. data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
  19. data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +28 -0
  20. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +28 -34
  21. data/generators/vulcanize/templates/base/script/cron-runner +1 -1
  22. data/generators/vulcanize/templates/base/templates.rb +9 -0
  23. data/generators/vulcanize/templates/base/templates.yml +5 -0
  24. data/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  25. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
  26. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  27. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  28. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  29. data/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  30. data/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  31. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +2 -2
  32. data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/role/haproxy/haproxy-passenger.conf +4 -2
  33. data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/rubber-complete.yml +0 -0
  34. data/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  35. data/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  36. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +1 -7
  37. data/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  38. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +3 -3
  39. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +1 -1
  40. data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +5 -5
  41. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +2 -2
  42. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +8 -3
  43. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +4 -0
  44. data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  45. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  46. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  47. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  48. data/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  49. data/generators/vulcanize/templates/jetty/templates.yml +1 -0
  50. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +1 -1
  51. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +5 -5
  52. data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +2 -2
  53. data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +2 -1
  54. data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +5 -4
  55. data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +2 -2
  56. data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +1 -1
  57. data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
  58. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +5 -5
  59. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +1 -1
  60. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +1 -0
  61. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
  62. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +6 -8
  63. data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +1 -0
  64. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +40 -27
  65. data/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  66. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +2 -2
  67. data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +2 -6
  68. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +2 -1
  69. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +19 -15
  70. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +2 -2
  71. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +2 -2
  72. data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +3 -3
  73. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +5 -5
  74. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +2 -2
  75. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +11 -2
  76. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  77. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +2 -1
  78. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +1 -1
  79. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +28 -3
  80. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +5 -2
  81. data/generators/vulcanize/templates/passenger/templates.yml +3 -1
  82. data/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  83. data/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  84. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  85. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  86. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  87. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  88. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  89. data/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  90. data/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  91. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +37 -0
  92. data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  93. data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  94. data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
  95. data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  96. data/generators/vulcanize/templates/redis/templates.yml +1 -0
  97. data/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  98. data/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  99. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
  100. data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  101. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  102. data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
  103. data/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  104. data/generators/vulcanize/templates/resque/templates.rb +1 -0
  105. data/generators/vulcanize/templates/resque/templates.yml +3 -0
  106. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +8 -8
  107. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +2 -2
  108. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +7 -4
  109. data/generators/vulcanize/vulcanize_generator.rb +166 -49
  110. data/lib/generators/vulcanize/USAGE +6 -0
  111. data/lib/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
  112. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
  113. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
  114. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
  115. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  116. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +8 -0
  117. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
  118. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +79 -0
  119. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  120. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
  121. data/lib/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
  122. data/lib/generators/vulcanize/templates/apache/templates.yml +1 -0
  123. data/lib/generators/vulcanize/templates/base/Capfile +14 -0
  124. data/lib/generators/vulcanize/templates/base/Rakefile +21 -0
  125. data/lib/generators/vulcanize/templates/base/config/deploy.rb +56 -0
  126. data/lib/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
  127. data/lib/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  128. data/lib/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
  129. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +92 -0
  130. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  131. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
  132. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +28 -0
  133. data/lib/generators/vulcanize/templates/base/config/rubber/rubber.yml +235 -0
  134. data/lib/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
  135. data/lib/generators/vulcanize/templates/base/script/cron-rake +18 -0
  136. data/lib/generators/vulcanize/templates/base/script/cron-runner +18 -0
  137. data/lib/generators/vulcanize/templates/base/script/cron-sh +67 -0
  138. data/lib/generators/vulcanize/templates/base/templates.rb +9 -0
  139. data/lib/generators/vulcanize/templates/base/templates.yml +6 -0
  140. data/lib/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  141. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
  142. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  143. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  144. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  145. data/lib/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  146. data/lib/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  147. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  148. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
  149. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  150. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
  151. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
  152. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
  153. data/lib/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  154. data/lib/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  155. data/lib/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
  156. data/lib/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  157. data/lib/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
  158. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
  159. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
  160. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
  161. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
  162. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
  163. data/lib/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
  164. data/lib/generators/vulcanize/templates/cruise/templates.yml +1 -0
  165. data/lib/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
  166. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  167. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
  168. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
  169. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +11 -0
  170. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -0
  171. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
  172. data/lib/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
  173. data/lib/generators/vulcanize/templates/haproxy/templates.yml +1 -0
  174. data/lib/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  175. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  176. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  177. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  178. data/lib/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  179. data/lib/generators/vulcanize/templates/jetty/templates.yml +1 -0
  180. data/lib/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
  181. data/lib/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
  182. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
  183. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
  184. data/lib/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
  185. data/lib/generators/vulcanize/templates/memcached/templates.yml +1 -0
  186. data/lib/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
  187. data/lib/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
  188. data/lib/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
  189. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
  190. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
  191. data/lib/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
  192. data/lib/generators/vulcanize/templates/mongrel/templates.yml +1 -0
  193. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
  194. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +252 -0
  195. data/lib/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -0
  196. data/lib/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
  197. data/lib/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
  198. data/lib/generators/vulcanize/templates/monit/templates.yml +1 -0
  199. data/lib/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
  200. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
  201. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
  202. data/lib/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
  203. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
  204. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
  205. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +81 -0
  206. data/lib/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
  207. data/lib/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -0
  208. data/lib/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
  209. data/lib/generators/vulcanize/templates/munin/templates.yml +1 -0
  210. data/lib/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +12 -0
  211. data/lib/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
  212. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  213. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
  214. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
  215. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +163 -0
  216. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
  217. data/lib/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +47 -0
  218. data/lib/generators/vulcanize/templates/mysql/templates.yml +1 -0
  219. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
  220. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +177 -0
  221. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
  222. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
  223. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
  224. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
  225. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
  226. data/lib/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
  227. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
  228. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
  229. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
  230. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
  231. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
  232. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
  233. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
  234. data/lib/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
  235. data/lib/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
  236. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
  237. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
  238. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  239. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
  240. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  241. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  242. data/lib/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
  243. data/lib/generators/vulcanize/templates/nginx/templates.yml +1 -0
  244. data/lib/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +46 -0
  245. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  246. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +7 -0
  247. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  248. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
  249. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +35 -0
  250. data/lib/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
  251. data/lib/generators/vulcanize/templates/passenger/templates.yml +3 -0
  252. data/lib/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  253. data/lib/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  254. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  255. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  256. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  257. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  258. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  259. data/lib/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  260. data/lib/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  261. data/lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +37 -0
  262. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  263. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  264. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
  265. data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  266. data/lib/generators/vulcanize/templates/redis/templates.yml +1 -0
  267. data/lib/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  268. data/lib/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  269. data/lib/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
  270. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  271. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  272. data/lib/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
  273. data/lib/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  274. data/lib/generators/vulcanize/templates/resque/templates.rb +1 -0
  275. data/lib/generators/vulcanize/templates/resque/templates.yml +3 -0
  276. data/lib/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
  277. data/lib/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
  278. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  279. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +13 -0
  280. data/lib/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
  281. data/lib/generators/vulcanize/templates/sphinx/templates.yml +1 -0
  282. data/lib/generators/vulcanize/vulcanize_generator.rb +184 -0
  283. data/lib/rubber.rb +43 -7
  284. data/lib/rubber/cloud/aws.rb +38 -4
  285. data/lib/rubber/dns/base.rb +41 -26
  286. data/lib/rubber/dns/dyndns.rb +25 -10
  287. data/lib/rubber/dns/nettica.rb +90 -29
  288. data/lib/rubber/dns/zerigo.rb +90 -96
  289. data/lib/rubber/environment.rb +26 -10
  290. data/lib/rubber/generator.rb +33 -25
  291. data/lib/rubber/instance.rb +12 -1
  292. data/lib/rubber/railtie.rb +14 -0
  293. data/lib/rubber/recipes/rubber.rb +16 -9
  294. data/lib/rubber/recipes/rubber/deploy.rb +3 -3
  295. data/lib/rubber/recipes/rubber/instances.rb +73 -8
  296. data/lib/rubber/recipes/rubber/security_groups.rb +1 -1
  297. data/lib/rubber/recipes/rubber/setup.rb +245 -96
  298. data/lib/rubber/recipes/rubber/spot_requests.rb +23 -0
  299. data/lib/rubber/recipes/rubber/static_ips.rb +83 -0
  300. data/lib/rubber/recipes/rubber/utils.rb +41 -18
  301. data/lib/rubber/recipes/rubber/volumes.rb +4 -4
  302. data/lib/rubber/tasks/rubber.rb +64 -6
  303. data/lib/rubber/util.rb +36 -1
  304. data/rails/init.rb +6 -0
  305. data/test/environment_test.rb +27 -1
  306. data/test/generator_test.rb +52 -5
  307. data/test/instance_test.rb +4 -1
  308. data/test/test_helper.rb +10 -0
  309. data/test/util_test.rb +4 -1
  310. data/test/zerigo_test.rb +88 -0
  311. metadata +309 -49
  312. data/generators/vulcanize/templates/base/config/rubber/common/profile.rc +0 -9
@@ -4,5 +4,5 @@
4
4
  <% PIDFILE = "/var/run/apache2.pid" %>
5
5
  check process apache with pidfile <%= PIDFILE %>
6
6
  group apache-<%= RUBBER_ENV %>
7
- start program = "/etc/init.d/apache2 start"
8
- stop program = "/etc/init.d/apache2 stop"
7
+ start program = "/usr/bin/env service apache2 start"
8
+ stop program = "/usr/bin/env service apache2 stop"
@@ -1,5 +1,8 @@
1
1
  <%
2
2
  @path = '/etc/apache2/ports.conf'
3
+ # need to stop here so that apache will release port 80 before other
4
+ # services start and need to bind to it (e.g. haproxy)
5
+ @post = 'service apache2 stop'
3
6
  %>
4
7
  # empty ports file since other modules contribute which ports to open (vhosts)
5
8
 
@@ -38,25 +38,42 @@ Listen <%= rubber_env.web_tools_ssl_port %>
38
38
  SetOutputFilter proxy-html
39
39
 
40
40
  <% rubber_instances.for_role('haproxy').each do |ic| %>
41
- ProxyPass /haproxy_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/haproxy/
42
- ProxyPassReverse /haproxy_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/haproxy/
43
- ProxyHTMLURLMap http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/ /haproxy_<%= ic.name %>/
44
- ProxyHTMLURLMap /haproxy/ /haproxy_<%= ic.name %>/
45
- ProxyHTMLURLMap /haproxy /haproxy_<%= ic.name %>/
41
+ ProxyPass /haproxy_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/haproxy/
42
+ <Location /haproxy_<%= ic.name %>/>
43
+ ProxyPassReverse /
44
+ ProxyHTMLURLMap http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/ /haproxy_<%= ic.name %>/
45
+ ProxyHTMLURLMap /haproxy/ /haproxy_<%= ic.name %>/
46
+ ProxyHTMLURLMap /haproxy /haproxy_<%= ic.name %>/
47
+ </Location>
46
48
  <% end %>
47
49
 
48
50
  <% if cruise_host = rubber_instances.for_role('cruise').first %>
49
- ProxyPass /cruise/ http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/
50
- ProxyPassReverse /cruise/ http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/
51
- ProxyHTMLURLMap http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/ /cruise/
52
- ProxyHTMLURLMap / /cruise/
51
+ ProxyPass /cruise/ http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/
52
+ <Location /cruise/>
53
+ ProxyPassReverse /
54
+ ProxyHTMLURLMap http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/ /cruise/
55
+ ProxyHTMLURLMap / /cruise/
56
+ </Location>
53
57
  <% end %>
54
58
 
55
59
  <% rubber_instances.each do |ic| %>
56
- ProxyPass /monit_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/
57
- ProxyPassReverse /monit_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/
58
- ProxyHTMLURLMap http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/ /monit_<%= ic.name %>/
59
- ProxyHTMLURLMap / /monit_<%= ic.name %>/
60
+ ProxyPass /monit_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/
61
+ <Location /monit_<%= ic.name %>/>
62
+ ProxyPassReverse /
63
+ ProxyHTMLURLMap http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/ /monit_<%= ic.name %>/
64
+ ProxyHTMLURLMap / /monit_<%= ic.name %>/
65
+ </Location>
66
+ <% end %>
67
+
68
+ <% if resque_host = rubber_instances.for_role('resque_web').first %>
69
+ ProxyPass /resque/ http://<%= resque_host.full_name %>:<%= rubber_env.resque_web_port %>/
70
+ # special case, sinatra is using X-Forwarded-Host header to set redirects (Location header) to our external address, so we have to rewrite that to the right path
71
+ ProxyPassReverse /resque/ http://<%= rubber_env.full_host %>:<%= rubber_env.web_tools_ssl_port %>/
72
+ <Location /resque/>
73
+ ProxyPassReverse /
74
+ ProxyHTMLURLMap http://<%= resque_host.full_name %>:<%= rubber_env.resque_web_port %>/ /resque/
75
+ ProxyHTMLURLMap / /resque/
76
+ </Location>
60
77
  <% end %>
61
78
 
62
79
  </VirtualHost>
@@ -17,13 +17,17 @@
17
17
  <li><a href="http://<%= cruise_host %>/cruise/">CruiseControl</a></li>
18
18
  <% end %>
19
19
 
20
- <% rubber_instances.for_role('haproxy').each do |ic| %>
20
+ <% rubber_instances.for_role('haproxy').sort {|a,b| a.name <=> b.name }.each do |ic| %>
21
21
  <li><a href="/haproxy_<%= ic.name %>/">HAProxy <%= ic.name %></a></li>
22
22
  <% end %>
23
23
 
24
- <% rubber_instances.each do |ic| %>
24
+ <% rubber_instances.sort {|a,b| a.name <=> b.name }.each do |ic| %>
25
25
  <li><a href="/monit_<%= ic.name %>/">Monit <%= ic.name %></a></li>
26
26
  <% end %>
27
+
28
+ <% if resque_host = rubber_instances.for_role('resque_web').first %>
29
+ <li><a href="/resque/">Resque</a></li>
30
+ <% end %>
27
31
 
28
32
  </ul>
29
33
  </body>
@@ -2,6 +2,5 @@
2
2
  roles:
3
3
  apache:
4
4
  packages: [apache2]
5
- roles:
6
5
  web_tools:
7
6
  packages: [libapache2-mod-proxy-html]
@@ -0,0 +1,21 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ env = ENV['RUBBER_ENV'] ||= (ENV['RAILS_ENV'] || 'development')
6
+ RAILS_ENV = ENV['RAILS_ENV'] = env
7
+ root = File.dirname(__FILE__)
8
+
9
+ require 'rubber'
10
+
11
+ Rubber::initialize(root, env)
12
+
13
+ require 'rubber/tasks/rubber'
14
+
15
+ task :console do
16
+ ARGV.clear
17
+ require "irb"
18
+ IRB.start
19
+ end
20
+
21
+ RAILS_TASKS
@@ -6,6 +6,7 @@ on :load do
6
6
  set :application, rubber_env.app_name
7
7
  set :runner, rubber_env.app_user
8
8
  set :deploy_to, "/mnt/#{application}-#{RUBBER_ENV}"
9
+ set :copy_exclude, [".git/*", "log/*"]
9
10
  end
10
11
 
11
12
  # Use a simple directory tree copy here to make demo easier.
@@ -3,11 +3,17 @@
3
3
  @write_cmd = 'crontab -'
4
4
  %>
5
5
 
6
- PATH=/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/sbin:/usr/sbin
6
+ # cron clears out enviroment variables, so we need to add these in
7
+ # to make sure we are running the correct ruby (rvm env vars, plus paths)
8
+ <%- ENV.select {|k, v| k =~ /rvm|ruby|bundler|gem|path/i }.each do |k, v| -%>
9
+ <%= k %>=<%= v %>
10
+ <%- end -%>
11
+
7
12
  MAILTO=<%= rubber_env.admin_email %>
8
13
  # don't need to set RUBBER_ENV for each script since we set it for all cron here
9
14
  RUBBER_ENV=<%= RUBBER_ENV %>
10
15
  RAILS_ENV=<%= RUBBER_ENV %>
16
+ RUBYOPT=rubygems
11
17
 
12
18
  # Roll all rails logs at midnight
13
19
  0 0 * * * LOG_DIR=<%= RUBBER_ROOT %>/log <%= RUBBER_ROOT %>/script/cron-rake rubber:rotate_logs
@@ -0,0 +1,8 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-postfix.conf'
3
+ %>
4
+
5
+ check process postfix with pidfile /var/spool/postfix/pid/master.pid
6
+ start program "/usr/bin/env service postfix start"
7
+ stop program "/usr/bin/env service postfix stop"
8
+ if 5 restarts within 5 cycles then timeout
@@ -0,0 +1,13 @@
1
+ <%
2
+ @path = "/etc/profile.d/rubber.sh"
3
+ current_path = "/mnt/#{rubber_env.app_name}-#{RUBBER_ENV}/current"
4
+ %>
5
+
6
+ # convenience to simply running rails console, etc with correct env
7
+ export RUBBER_ENV=<%= RUBBER_ENV %>
8
+ export RAILS_ENV=<%= RUBBER_ENV %>
9
+ alias current="cd <%= current_path %>"
10
+ alias release="cd <%= RUBBER_ROOT %>"
11
+
12
+ # Always use rubygems
13
+ export RUBYOPT="rubygems"
@@ -3,87 +3,75 @@ namespace :rubber do
3
3
 
4
4
  rubber.allow_optional_tasks(self)
5
5
 
6
+ before "rubber:setup_gem_sources", "rubber:base:install_rvm"
7
+ task :install_rvm do
8
+ rubber.sudo_script "install_rvm", <<-ENDSCRIPT
9
+ if [[ `rvm --version 2> /dev/null` == "" ]]; then
10
+ echo "rvm_prefix=/usr/local" > /etc/rvmrc
11
+ echo "#{rubber_env.rvm_prepare}" > /etc/profile.d/rvm.sh
6
12
 
7
- before "rubber:install_packages", "rubber:base:pre_install_ruby"
8
- task :pre_install_ruby do
13
+ # Copied below from http://rvm.beginrescueend.com/releases/rvm-install-latest
14
+ #
9
15
 
10
- # figure out which hosts we have specified enterprise ruby for
11
- sys_ruby_hosts = []
12
- ent_ruby_hosts = []
13
- rubber_instances.filtered.each do |ic|
14
- env = rubber_cfg.environment.bind(ic.role_names, ic.name)
15
- if env.use_enterprise_ruby
16
- ent_ruby_hosts << ic.full_name
17
- end
18
- end
16
+ if [[ -f /etc/rvmrc ]] ; then source /etc/rvmrc ; fi
19
17
 
20
- if ent_ruby_hosts.size > 0
18
+ if [[ -f "$HOME/.rvmrc" ]] ; then source "$HOME/.rvmrc" ; fi
21
19
 
22
- task :_install_enterprise_ruby, :hosts => ent_ruby_hosts do
20
+ rvm_path="${rvm_path:-$HOME/.rvm}"
23
21
 
24
- # preferences to pick up specific Ruby packages from brightbox
25
- prefs = <<-DATA
26
- Package: *
27
- Pin: release l=brightbox
28
- Pin-Priority: 1001
22
+ mkdir -p $rvm_path/src/
29
23
 
30
- Package: ruby1.8-elisp
31
- Pin: release l=Ubuntu
32
- Pin-Priority: 1001
33
- DATA
24
+ builtin cd $rvm_path/src
34
25
 
35
- prefs.gsub!(/^ */, '') # remove leading whitespace
36
- put(prefs, '/etc/apt/preferences')
26
+ stable_version=#{rubber_env.rvm_version}
37
27
 
38
- rubber.sudo_script 'install_enterprise_ruby', <<-ENDSCRIPT
39
- wget http://apt.brightbox.net/release.asc -O - | apt-key add -
40
- echo "deb http://apt.brightbox.net/ hardy rubyee" > /etc/apt/sources.list.d/brightbox-rubyee.list
41
- ENDSCRIPT
28
+ echo "rvm-${stable_version}"
42
29
 
43
- end
30
+ curl -L "http://rvm.beginrescueend.com/releases/rvm-${stable_version}.tar.gz" -o "rvm-${stable_version}.tar.gz"
44
31
 
45
- _install_enterprise_ruby
46
- end
32
+ tar zxf "rvm-${stable_version}.tar.gz"
47
33
 
34
+ builtin cd "rvm-${stable_version}"
35
+
36
+ dos2unix scripts/* >/dev/null 2>&1 || true
37
+
38
+ bash ./scripts/install
39
+
40
+ #
41
+ # end rvm install script
42
+
43
+ fi
44
+ ENDSCRIPT
45
+ end
46
+
47
+ # ensure that the rvm profile script gets sourced by reconnecting
48
+ after "rubber:base:install_rvm" do
49
+ teardown_connections_to(sessions.keys)
48
50
  end
49
51
 
50
- # The ubuntu rubygem package is woefully out of date, so install it manually
51
- after "rubber:install_packages", "rubber:base:install_rubygems"
52
- task :install_rubygems do
53
- ver = "1.3.5"
54
- src_url = "http://rubyforge.org/frs/download.php/60718/rubygems-#{ver}.tgz"
55
- rubber.sudo_script 'install_rubygems', <<-ENDSCRIPT
56
- if [[ `gem --version 2>&1` != "#{ver}" ]]; then
57
- wget -qNP /tmp #{src_url}
58
- tar -C /tmp -xzf /tmp/rubygems-#{ver}.tgz
59
- ruby -C /tmp/rubygems-#{ver} setup.rb
60
- ln -sf /usr/bin/gem1.8 /usr/bin/gem
61
- rm -rf /tmp/rubygems*
62
- gem source -l > /dev/null
52
+ after "rubber:base:install_rvm", "rubber:base:install_rvm_ruby"
53
+ task :install_rvm_ruby do
54
+ opts = get_host_options('rvm_ruby')
55
+ install_rvm_ruby_script = <<-ENDSCRIPT
56
+ rvm_ver=$1
57
+ if [[ ! `rvm list default 2> /dev/null` =~ "$rvm_ver" ]]; then
58
+ rvm install $rvm_ver
59
+ # need to set default after using once or something in env is broken
60
+ rvm use $rvm_ver &> /dev/null
61
+ rvm use $rvm_ver --default
63
62
  fi
64
63
  ENDSCRIPT
64
+ opts[:script_args] = '$CAPISTRANO:VAR$'
65
+ rubber.sudo_script "install_rvm_ruby", install_rvm_ruby_script, opts
65
66
  end
66
-
67
- # git in ubuntu 7.0.4 is very out of date and doesn't work well with capistrano
68
- after "rubber:install_packages", "rubber:base:install_git" if scm == "git"
69
- task :install_git do
70
- rubber.run_script 'install_git', <<-ENDSCRIPT
71
- if ! git --version &> /dev/null; then
72
- arch=`uname -m`
73
- if [ "$arch" = "x86_64" ]; then
74
- src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_amd64.deb"
75
- else
76
- src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_i386.deb"
77
- fi
78
- apt-get install liberror-perl libdigest-sha1-perl
79
- wget -qO /tmp/git.deb ${src}
80
- dpkg -i /tmp/git.deb
81
-
82
- if [[ "#{repository}" =~ "@" ]]; then
83
- # Get host key for src machine to prevent ssh from failing
84
- rm -f ~/.ssh/known_hosts
85
- ! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
86
- fi
67
+
68
+ after "rubber:install_packages", "rubber:base:configure_git" if scm == "git"
69
+ task :configure_git do
70
+ rubber.sudo_script 'configure_git', <<-ENDSCRIPT
71
+ if [[ "#{repository}" =~ "@" ]]; then
72
+ # Get host key for src machine to prevent ssh from failing
73
+ rm -f ~/.ssh/known_hosts
74
+ ! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
87
75
  fi
88
76
  ENDSCRIPT
89
77
  end
@@ -0,0 +1,97 @@
1
+ namespace :rubber do
2
+ namespace :util do
3
+
4
+ rubber.allow_optional_tasks(self)
5
+
6
+ desc <<-DESC
7
+ Backup database using rake task rubber:backup_db
8
+ DESC
9
+ task :backup do
10
+ master_instances = rubber_instances.for_role('db', :primary => true)
11
+ slaves = rubber_instances.for_role('db', {})
12
+
13
+ # Select only one instance for backup. Favor slave database.
14
+ selected_db_instance = (slaves+master_instances).first
15
+
16
+ task_name = "_backup_db_#{selected_db_instance.full_name}".to_sym()
17
+ task task_name, :hosts => selected_db_instance.full_name do
18
+ rsudo "cd #{current_path} && RUBBER_ENV=#{RUBBER_ENV} BACKUP_DIR=/mnt/db_backups DBUSER=#{rubber_env.db_user} DBPASS=#{rubber_env.db_pass} DBNAME=#{rubber_env.db_name} DBHOST=#{selected_db_instance.full_name} rake rubber:backup_db"
19
+ end
20
+ send task_name
21
+ end
22
+
23
+ desc <<-DESC
24
+ Restore database from s3 using rake task rubber:restore_db_s3
25
+ DESC
26
+ task :restore_s3 do
27
+ master_instances = rubber_instances.for_role('db', :primary => true)
28
+ slaves = rubber_instances.for_role('db', {})
29
+
30
+ for instance in master_instances+slaves
31
+ task_name = "_restore_db_s3_#{instance.full_name}".to_sym()
32
+ task task_name, :hosts => instance.full_name do
33
+ rsudo "cd #{current_path} && RUBBER_ENV=#{RUBBER_ENV} 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"
34
+ end
35
+ send task_name
36
+ end
37
+ end
38
+
39
+ desc <<-DESC
40
+ Overwrite ec2 production database with export from local production database.
41
+ DESC
42
+ task :local_to_ec2 do
43
+ require 'yaml'
44
+ master_instances = rubber_instances.for_role('db', :primary => true)
45
+ slaves = rubber_instances.for_role('db', {})
46
+
47
+ # Select only one instance for backup. Favor slave database.
48
+ selected_db_instance = (slaves+master_instances).first
49
+
50
+ task_name = "_load_local_to_#{selected_db_instance.full_name}".to_sym()
51
+ task task_name, :hosts => selected_db_instance.full_name do
52
+
53
+ # Dump Local to tmp folder
54
+ filename = "#{application}.local.#{Time.now.to_i}.sql.gz"
55
+ backup_file = "/tmp/#{filename}"
56
+ on_rollback { delete file }
57
+ FileUtils.mkdir_p(File.dirname(backup_file))
58
+
59
+ # Use database.yml to get connection params
60
+ db = YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__), '..','database.yml'))).result)[RUBBER_ENV]
61
+ user = db['username']
62
+ pass = db['passsword']
63
+ pass = nil if pass and pass.strip.size == 0
64
+ host = db['host']
65
+ name = db['database']
66
+
67
+ raise "No db_backup_cmd defined in rubber.yml, cannot backup!" unless rubber_env.db_backup_cmd
68
+ db_backup_cmd = rubber_env.db_backup_cmd.gsub(/%([^%]+)%/, '#{\1}')
69
+ db_backup_cmd = eval('%Q{' + db_backup_cmd + '}')
70
+
71
+ # dbdump (or backup app) needs to be in your path
72
+ puts "Backing up database with command:"
73
+ system(db_backup_cmd)
74
+ puts "Created backup: #{backup_file}"
75
+
76
+ # Upload Local to S3
77
+ cloud_provider = rubber_env.cloud_providers[rubber_env.cloud_provider]
78
+ s3_prefix = "db/"
79
+ backup_bucket = cloud_provider.backup_bucket
80
+ if backup_bucket
81
+ AWS::S3::Base.establish_connection!(:access_key_id => cloud_provider.access_key, :secret_access_key => cloud_provider.secret_access_key)
82
+ unless AWS::S3::Bucket.list.find { |b| b.name == backup_bucket }
83
+ AWS::S3::Bucket.create(backup_bucket)
84
+ end
85
+ dest = "#{s3_prefix}#{File.basename(backup_file)}"
86
+ puts "Saving db dump to S3: #{backup_bucket}:#{dest}"
87
+ AWS::S3::S3Object.store(dest, open(backup_file), backup_bucket)
88
+ end
89
+
90
+ send :restore_s3
91
+
92
+ end
93
+ send task_name
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,78 @@
1
+ # OPTIONAL: The dns provider to use. Need to exist in dns_providers below
2
+ # dns_provider: nettica
3
+
4
+ # OPTIONAL: The configuration for each dns provider (nettica|zerigo|dyndns)
5
+ # This lets rubber update a dynamic dns service with the instance alias and ip
6
+ #
7
+ dns_providers:
8
+ nettica:
9
+ user: joe
10
+ password: sekret
11
+ type: A
12
+ ttl: 300
13
+ zerigo:
14
+ email: foo@bar.com
15
+ token: hexxy
16
+ type: A
17
+ ttl: 300
18
+ dyndns:
19
+ user: joe
20
+ password: sekret
21
+ update_url: https://members.dyndns.org/nic/update?hostname=%host%&myip=%ip%'
22
+
23
+ # OPTIONAL: Lets you configure your dns service, for example to add other CNAMES
24
+ # or setup dns round robin, etc. Run "cap rubber:setup_dns_records"
25
+ # to apply them as rubber only sets up instance aliases as part of
26
+ # the standard lifecycle
27
+ #
28
+ # dns_records:
29
+ # # simple A record
30
+ # - host: bar
31
+ # data: 1.1.1.1
32
+ #
33
+ # # more detailed A record
34
+ # - host: bar
35
+ # domain: otherdomain.com
36
+ # data: 1.1.1.1
37
+ # type: A
38
+ # ttl: 300
39
+ #
40
+ # # tld A record
41
+ # - host: ''
42
+ # data: 1.1.1.1
43
+ # type: A
44
+ #
45
+ # # simple CNAME record
46
+ # - host: otherbar
47
+ # domain: foo.com
48
+ # data: bar.foo.com
49
+ # type: CNAME
50
+ # ttl: 300
51
+ #
52
+ # # 2 of the same A records is a round robin dns
53
+ # - host: rr
54
+ # domain: foo.com
55
+ # data: 1.1.1.1
56
+ # type: A
57
+ # ttl: 300
58
+ # - host: rr
59
+ # domain: foo.com
60
+ # data: 1.1.1.2
61
+ # type: A
62
+ # ttl: 300
63
+ #
64
+ # # A record, grabbing ip from instance config
65
+ # - host: baz
66
+ # domain: foo.com
67
+ # data: "#{rubber_instances.for_role('web').first.external_ip}"
68
+ # type: A
69
+ # ttl: 300
70
+ #
71
+ # # MX record
72
+ # - host: ''
73
+ # domain: foo.com
74
+ # data: mail.foo.com
75
+ # type: MX
76
+ # ttl: 300
77
+ # priority: 10
78
+