nirvdrum-rubber 1.1.7 → 2.0.0.rails3.beta6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (291) hide show
  1. data/CHANGELOG +82 -0
  2. data/VERSION +1 -1
  3. data/bin/vulcanize +10 -33
  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 +19 -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 +28 -49
  14. data/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  15. data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +0 -1
  16. data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +25 -0
  17. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +21 -13
  18. data/generators/vulcanize/templates/base/script/cron-runner +1 -1
  19. data/generators/vulcanize/templates/base/templates.rb +1 -0
  20. data/generators/vulcanize/templates/base/templates.yml +5 -0
  21. data/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  22. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +58 -0
  23. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  24. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  25. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  26. data/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  27. data/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  28. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +2 -2
  29. data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/role/haproxy/haproxy-passenger.conf +2 -2
  30. data/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  31. data/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  32. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +1 -7
  33. data/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  34. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +3 -3
  35. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +1 -1
  36. data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +5 -5
  37. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +2 -2
  38. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +8 -3
  39. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +4 -0
  40. data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +5 -5
  41. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +1 -1
  42. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +4 -4
  43. data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +2 -1
  44. data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +5 -4
  45. data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +2 -2
  46. data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +1 -1
  47. data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +4 -2
  48. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +5 -5
  49. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +1 -1
  50. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +1 -0
  51. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
  52. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +6 -8
  53. data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +1 -0
  54. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +40 -27
  55. data/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  56. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +2 -2
  57. data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +2 -6
  58. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +2 -1
  59. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +19 -15
  60. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +2 -2
  61. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +2 -2
  62. data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +3 -3
  63. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +5 -5
  64. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +2 -2
  65. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +10 -1
  66. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +1 -1
  67. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +2 -2
  68. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +1 -1
  69. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +28 -3
  70. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +3 -3
  71. data/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  72. data/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  73. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  74. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  75. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  76. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  77. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  78. data/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  79. data/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  80. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +8 -7
  81. data/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  82. data/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  83. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +46 -27
  84. data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  85. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  86. data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +14 -6
  87. data/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  88. data/generators/vulcanize/templates/resque/templates.rb +1 -0
  89. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +8 -8
  90. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +7 -4
  91. data/generators/vulcanize/vulcanize_generator.rb +139 -49
  92. data/lib/generators/vulcanize/USAGE +6 -0
  93. data/lib/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
  94. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
  95. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
  96. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
  97. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  98. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +8 -0
  99. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
  100. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +79 -0
  101. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  102. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
  103. data/lib/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
  104. data/lib/generators/vulcanize/templates/apache/templates.yml +1 -0
  105. data/lib/generators/vulcanize/templates/base/Capfile +14 -0
  106. data/lib/generators/vulcanize/templates/base/Rakefile +19 -0
  107. data/lib/generators/vulcanize/templates/base/config/deploy.rb +55 -0
  108. data/lib/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
  109. data/lib/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  110. data/lib/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
  111. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +63 -0
  112. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  113. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
  114. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +25 -0
  115. data/lib/generators/vulcanize/templates/base/config/rubber/rubber.yml +235 -0
  116. data/lib/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
  117. data/lib/generators/vulcanize/templates/base/script/cron-rake +18 -0
  118. data/lib/generators/vulcanize/templates/base/script/cron-runner +18 -0
  119. data/lib/generators/vulcanize/templates/base/script/cron-sh +67 -0
  120. data/lib/generators/vulcanize/templates/base/templates.rb +1 -0
  121. data/lib/generators/vulcanize/templates/base/templates.yml +6 -0
  122. data/lib/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  123. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +58 -0
  124. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  125. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  126. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  127. data/lib/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  128. data/lib/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  129. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  130. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
  131. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  132. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
  133. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
  134. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
  135. data/lib/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  136. data/lib/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  137. data/lib/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
  138. data/lib/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  139. data/lib/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
  140. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
  141. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
  142. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
  143. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
  144. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
  145. data/lib/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
  146. data/lib/generators/vulcanize/templates/cruise/templates.yml +1 -0
  147. data/lib/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
  148. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  149. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
  150. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
  151. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +11 -0
  152. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -0
  153. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
  154. data/lib/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
  155. data/lib/generators/vulcanize/templates/haproxy/templates.yml +1 -0
  156. data/lib/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  157. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  158. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  159. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  160. data/lib/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  161. data/lib/generators/vulcanize/templates/jetty/templates.yml +1 -0
  162. data/lib/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
  163. data/lib/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
  164. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
  165. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
  166. data/lib/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
  167. data/lib/generators/vulcanize/templates/memcached/templates.yml +1 -0
  168. data/lib/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
  169. data/lib/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
  170. data/lib/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
  171. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
  172. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
  173. data/lib/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
  174. data/lib/generators/vulcanize/templates/mongrel/templates.yml +1 -0
  175. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
  176. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +252 -0
  177. data/lib/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -0
  178. data/lib/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
  179. data/lib/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
  180. data/lib/generators/vulcanize/templates/monit/templates.yml +1 -0
  181. data/lib/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
  182. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
  183. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
  184. data/lib/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
  185. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
  186. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
  187. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +81 -0
  188. data/lib/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
  189. data/lib/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -0
  190. data/lib/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
  191. data/lib/generators/vulcanize/templates/munin/templates.yml +1 -0
  192. data/lib/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +12 -0
  193. data/lib/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
  194. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  195. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
  196. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
  197. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +163 -0
  198. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
  199. data/lib/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +47 -0
  200. data/lib/generators/vulcanize/templates/mysql/templates.yml +1 -0
  201. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
  202. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +177 -0
  203. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
  204. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
  205. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
  206. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
  207. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
  208. data/lib/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
  209. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
  210. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
  211. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
  212. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
  213. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
  214. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
  215. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
  216. data/lib/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
  217. data/lib/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
  218. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
  219. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
  220. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  221. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
  222. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  223. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  224. data/lib/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
  225. data/lib/generators/vulcanize/templates/nginx/templates.yml +1 -0
  226. data/lib/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +46 -0
  227. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  228. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +7 -0
  229. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  230. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
  231. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +35 -0
  232. data/lib/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
  233. data/lib/generators/vulcanize/templates/passenger/templates.yml +3 -0
  234. data/lib/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  235. data/lib/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  236. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  237. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  238. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  239. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  240. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  241. data/lib/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  242. data/lib/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  243. data/lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +37 -0
  244. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  245. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  246. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
  247. data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  248. data/lib/generators/vulcanize/templates/redis/templates.yml +1 -0
  249. data/lib/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  250. data/lib/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  251. data/lib/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
  252. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  253. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  254. data/lib/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
  255. data/lib/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  256. data/lib/generators/vulcanize/templates/resque/templates.rb +1 -0
  257. data/lib/generators/vulcanize/templates/resque/templates.yml +3 -0
  258. data/lib/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
  259. data/lib/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
  260. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  261. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +13 -0
  262. data/lib/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
  263. data/lib/generators/vulcanize/templates/sphinx/templates.yml +1 -0
  264. data/lib/generators/vulcanize/vulcanize_generator.rb +157 -0
  265. data/lib/rubber/cloud/aws.rb +7 -2
  266. data/lib/rubber/dns/zerigo.rb +60 -125
  267. data/lib/rubber/environment.rb +6 -6
  268. data/lib/rubber/generator.rb +33 -25
  269. data/lib/rubber/instance.rb +11 -1
  270. data/lib/rubber/railtie.rb +14 -0
  271. data/lib/rubber/recipes/rubber/deploy.rb +3 -3
  272. data/lib/rubber/recipes/rubber/instances.rb +12 -1
  273. data/lib/rubber/recipes/rubber/setup.rb +96 -55
  274. data/lib/rubber/recipes/rubber/spot_requests.rb +6 -0
  275. data/lib/rubber/recipes/rubber/static_ips.rb +83 -0
  276. data/lib/rubber/recipes/rubber/utils.rb +39 -16
  277. data/lib/rubber/recipes/rubber/volumes.rb +4 -4
  278. data/lib/rubber/recipes/rubber.rb +16 -9
  279. data/lib/rubber/util.rb +28 -1
  280. data/lib/rubber.rb +47 -7
  281. data/rails/init.rb +1 -4
  282. data/test/environment_test.rb +3 -0
  283. data/test/generator_test.rb +47 -0
  284. data/test/instance_test.rb +3 -0
  285. data/test/test_helper.rb +6 -0
  286. data/test/util_test.rb +3 -0
  287. data/test/zerigo_test.rb +87 -0
  288. metadata +275 -50
  289. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb +0 -38
  290. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf +0 -19
  291. /data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/rubber-complete.yml +0 -0
@@ -0,0 +1,177 @@
1
+
2
+ namespace :rubber do
3
+
4
+ namespace :mysql_cluster do
5
+
6
+ rubber.allow_optional_tasks(self)
7
+
8
+ after "rubber:create", "rubber:mysql_cluster:set_db_role"
9
+
10
+ # Capistrano needs db:primary role for migrate to work
11
+ task :set_db_role do
12
+ sql_instances = rubber_instances.for_role("mysql_sql")
13
+ sql_instances.each do |instance|
14
+ if ! instance.role_names.find {|n| n == 'db'}
15
+ role = Rubber::Configuration::RoleItem.new('db')
16
+ primary_exists = rubber_instances.for_role("db", "primary" => true).size > 0
17
+ role.options["primary"] = true unless primary_exists
18
+ instance.roles << role
19
+ end
20
+ end
21
+ rubber_instances.save()
22
+ load_roles() unless rubber_env.disable_auto_roles
23
+ end
24
+
25
+ before "rubber:install_packages", "rubber:mysql_cluster:install"
26
+
27
+ task :install, :roles => [:mysql_mgm, :mysql_data, :mysql_sql] do
28
+ # Setup apt sources to get a newer version of mysql cluster
29
+ # https://launchpad.net/~mysql-cge-testing/+archive
30
+ #
31
+
32
+ sources = <<-SOURCES
33
+ # for mysql cluster 6.2
34
+ # deb http://ppa.launchpad.net/mysql-cge-testing/ubuntu hardy main
35
+ # deb-src http://ppa.launchpad.net/mysql-cge-testing/ubuntu hardy main
36
+
37
+ # for mysql cluster 6.3
38
+ deb http://ppa.launchpad.net/ndb-bindings/ubuntu hardy main
39
+ deb-src http://ppa.launchpad.net/ndb-bindings/ubuntu hardy main
40
+ SOURCES
41
+ sources.gsub!(/^ */, '')
42
+ put(sources, "/etc/apt/sources.list.d/mysql_cluster.list")
43
+ end
44
+
45
+ after "rubber:bootstrap", "rubber:mysql_cluster:bootstrap"
46
+
47
+ task :bootstrap, :roles => [:mysql_mgm, :mysql_data, :mysql_sql] do
48
+ # mysql package install starts mysql, so stop it
49
+ rsudo "service mysql stop" rescue nil
50
+
51
+ # After everything installed on machines, we need the source tree
52
+ # on hosts in order to run rubber:config for bootstrapping the db
53
+ rubber.update_code_for_bootstrap
54
+
55
+ # Conditionaly bootstrap for each node/role only if that node has not
56
+ # been boostrapped for that role before
57
+
58
+ rubber_instances.for_role("mysql_mgm").each do |ic|
59
+ task_name = "_bootstrap_mysql_mgm_#{ic.full_name}".to_sym()
60
+ task task_name, :hosts => ic.full_name do
61
+ exists = capture("if grep -c rubber.*mysql_mgm /etc/mysql/ndb_mgmd.cnf &> /dev/null; then echo exists; fi")
62
+ if exists.strip.size == 0
63
+ rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_mgm", :deploy_path => release_path)
64
+ rsudo "service mysql-ndb-mgm start"
65
+ end
66
+ end
67
+ send task_name
68
+ end
69
+
70
+ rubber_instances.for_role("mysql_data").each do |ic|
71
+ task_name = "_bootstrap_mysql_data_#{ic.full_name}".to_sym()
72
+ task task_name, :hosts => ic.full_name do
73
+ exists = capture("if grep -c rubber.*mysql_data /etc/mysql/my.cnf &> /dev/null; then echo exists; fi")
74
+ if exists.strip.size == 0
75
+ rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_data", :deploy_path => release_path)
76
+ rsudo "service mysql-ndb start-initial"
77
+ end
78
+ end
79
+ send task_name
80
+ end
81
+
82
+ rubber_instances.for_role("mysql_sql").each do |ic|
83
+ task_name = "_bootstrap_mysql_sql_#{ic.full_name}".to_sym()
84
+ task task_name, :hosts => ic.full_name do
85
+ exists = capture("if grep -c rubber.*mysql_sql /etc/mysql/my.cnf &> /dev/null; then echo exists; fi")
86
+ if exists.strip.size == 0
87
+ rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_sql", :deploy_path => release_path)
88
+ rsudo "service mysql start"
89
+ env = rubber_cfg.environment.bind()
90
+ # For mysql 5.0 cluster, need to create users and database for EVERY sql node
91
+ pass = "identified by '#{env.db_pass}'" if env.db_pass
92
+ rubber.sudo_script "create_mysql_sql_db", <<-ENDSCRIPT
93
+ mysql -u root -e "create database #{env.db_name};"
94
+ mysql -u root -e "grant all on *.* to '#{env.db_user}'@'%' #{pass};"
95
+ mysql -u root -e "grant select on *.* to '#{env.db_slave_user}'@'%' #{pass};"
96
+ mysql -u root -e "grant replication slave on *.* to '#{env.db_replicator_user}'@'%' #{pass};"
97
+ mysql -u root -e "flush privileges;"
98
+ ENDSCRIPT
99
+
100
+ end
101
+ end
102
+ send task_name
103
+ end
104
+
105
+ end
106
+
107
+ desc <<-DESC
108
+ Starts the mysql cluster management daemon on the management node
109
+ DESC
110
+ task :start_mgm, :roles => :mysql_mgm do
111
+ rsudo "service mysql-ndb-mgm start"
112
+ end
113
+
114
+ desc <<-DESC
115
+ Starts the mysql cluster storage daemon on the data nodes
116
+ DESC
117
+ task :start_data, :roles => :mysql_data do
118
+ rsudo "service mysql-ndb start"
119
+ end
120
+
121
+ desc <<-DESC
122
+ Starts the mysql cluster sql daemon on the sql nodes
123
+ DESC
124
+ task :start_sql, :roles => :mysql_sql do
125
+ rsudo "service mysql start"
126
+ end
127
+
128
+ desc <<-DESC
129
+ Stops the mysql cluster management daemon on the management node
130
+ DESC
131
+ task :stop_mgm, :roles => :mysql_mgm do
132
+ rsudo "service mysql-ndb-mgm stop"
133
+ end
134
+
135
+ desc <<-DESC
136
+ Stops the mysql cluster storage daemon on the data nodes
137
+ DESC
138
+ task :stop_data, :roles => :mysql_data do
139
+ rsudo "service mysql-ndb stop"
140
+ end
141
+
142
+ desc <<-DESC
143
+ Stops the mysql cluster sql daemon on the sql nodes
144
+ DESC
145
+ task :stop_sql, :roles => :mysql_sql do
146
+ rsudo "service mysql stop"
147
+ end
148
+
149
+ desc <<-DESC
150
+ Stops all the mysql cluster daemons
151
+ DESC
152
+ task :stop do
153
+ stop_sql
154
+ stop_data
155
+ stop_mgm
156
+ end
157
+
158
+ desc <<-DESC
159
+ Starts all the mysql cluster daemons
160
+ DESC
161
+ task :start do
162
+ start_mgm
163
+ start_data
164
+ start_sql
165
+ end
166
+
167
+ desc <<-DESC
168
+ Restarts all the mysql cluster daemons
169
+ DESC
170
+ task :restart do
171
+ stop
172
+ start
173
+ end
174
+
175
+ end
176
+
177
+ end
@@ -0,0 +1,15 @@
1
+ <%
2
+
3
+ mgm_nodes = rubber_instances.for_role('mysql_mgm')
4
+ mgm_host = mgm_nodes.first.full_name
5
+
6
+ @path = "/etc/mysql/my.cnf"
7
+ @post = <<-POST
8
+ mkdir -p #{rubber_env.db_data_dir}
9
+ POST
10
+ %>
11
+
12
+ # Generated by rubber for mysql_data role
13
+
14
+ [mysql_cluster]
15
+ ndb-connectstring=<%= mgm_host %>
@@ -0,0 +1,39 @@
1
+ <%
2
+ data_nodes = rubber_instances.for_role('mysql_data')
3
+ sql_nodes = rubber_instances.for_role('mysql_sql')
4
+
5
+ @path = "/etc/mysql/ndb_mgmd.cnf"
6
+ %>
7
+
8
+ # Generated by rubber for mysql_mgm role
9
+
10
+ # You can use the following formula for obtaining a rough estimate of how much
11
+ # RAM is needed for each data node in the cluster:
12
+ # (SizeofDatabase ? NumberOfReplicas ? 1.1 ) / NumberOfDataNodes
13
+
14
+ [NDBD DEFAULT]
15
+ NoOfReplicas=<%= data_nodes.size == 1 ? 1 : 2 %>
16
+
17
+ [MYSQLD DEFAULT]
18
+ [NDB_MGMD DEFAULT]
19
+ [TCP DEFAULT]
20
+
21
+ # Managment Server
22
+ [NDB_MGMD]
23
+ HostName=<%= rubber_env.full_host %>
24
+
25
+ # Data Nodes (Where your data is stored)
26
+ <% data_nodes.each do |data_node| %>
27
+ [NDBD]
28
+ HostName=<%= data_node.full_name %>
29
+ DataDir=<%= rubber_env.db_data_dir %>
30
+ <% end %>
31
+
32
+ # SQL Nodes (what your clients connect to)
33
+ <% sql_nodes.each do |sql_node| %>
34
+ [MYSQLD]
35
+ HostName=<%= sql_node.full_name %>
36
+ <% end %>
37
+
38
+ # One extra sql_node for use by things like ndb_restore from mgm node itself.
39
+ [MYSQLD]
@@ -0,0 +1,10 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-mysql_cluster_sql.conf'
3
+ %>
4
+
5
+ check process mysql_cluster_sql with pidfile /var/lib/mysql/<%= rubber_env.full_host %>.pid
6
+ group mysql_cluster_sql-<%= RUBBER_ENV %>
7
+ start program = "/usr/sbin/service mysql start"
8
+ stop program = "/usr/sbin/service mysql stop"
9
+ if failed host 127.0.0.1 port 3306 protocol mysql then alert
10
+ if 5 restarts within 5 cycles then timeout
@@ -0,0 +1,23 @@
1
+ <%
2
+ @path = "/etc/mysql/my.cnf"
3
+
4
+ # When sql nodes on same hosts as data nodes, then this config needs to be
5
+ # additive - the mysql_data node gets generated first due to generator order
6
+ self_instance = rubber_instances[rubber_env.host]
7
+ if self_instance.role_names.include?('mysql_data')
8
+ @additive = ['# mysql_sql start', '# mysql_sql end']
9
+ end
10
+
11
+ mgm_nodes = rubber_instances.for_role('mysql_mgm')
12
+ mgm_host = mgm_nodes.first.full_name
13
+ %>
14
+
15
+ # Generated by rubber for mysql_sql role
16
+
17
+ [client]
18
+ default-character-set = utf8
19
+
20
+ [mysqld]
21
+ default-character-set = utf8
22
+ ndbcluster
23
+ ndb-connectstring=<%= mgm_host %>
@@ -0,0 +1,32 @@
1
+ # MySQL user accounts and privileges are not automatically propagated between different MySQL servers accessing the same MySQL Cluster. Therefore, you must make sure that these are copied between the SQL nodes yourself.
2
+
3
+ # REQUIRED: The credentials for creating/accessong your app's database
4
+ #
5
+ db_user: "#{app_name}"
6
+ db_pass:
7
+ db_name: "#{app_name}_#{RUBBER_ENV}"
8
+
9
+ # REQUIRED: The command to use to do a full backup of your database using
10
+ # "rake rubber:backup_db"
11
+ db_backup_cmd: "nice mysqldump -h %host% -u %user% --password=%pass% %name% | gzip -c > %backup_file%"
12
+ # REQUIRED: The command to use to restore the database using
13
+ # "rake rubber:restore_db_s3"
14
+ # This command will receive the data generated by db_backup_cmd via
15
+ # its standard input
16
+ db_restore_cmd: "zcat - | mysql -h %host% -u %user% --password=%pass% %name%"
17
+
18
+
19
+ # REQUIRED: The directory the data nodes store the db data in
20
+ #
21
+ db_data_dir: /mnt/mysql_cluster_data
22
+
23
+ packages: [mysql-client, libmysql-ruby]
24
+
25
+
26
+ roles:
27
+ mysql_sql:
28
+ packages: [mysql-server]
29
+ mysql_mgm:
30
+ packages: [mysql-server]
31
+ mysql_data:
32
+ packages: [mysql-server]
@@ -0,0 +1 @@
1
+ description: The mysql cluster module
@@ -0,0 +1,16 @@
1
+ <%
2
+ @path = "#{RUBBER_ROOT}/config/database.yml"
3
+ %>
4
+
5
+ # Sets up rails to talk to mysql-proxy load balancer running on localhost,
6
+ # which then then balances requests between sql nodes in the cluster
7
+ <%= RUBBER_ENV %>:
8
+ adapter: mysql
9
+ encoding: utf8
10
+ database: <%= rubber_env.db_name %>
11
+ username: <%= rubber_env.db_user %>
12
+ password: <%= rubber_env.db_pass %>
13
+ host: 127.0.0.1
14
+ port: 4040
15
+
16
+
@@ -0,0 +1,10 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-mysql_proxy.conf'
3
+ %>
4
+
5
+ check process mysql_proxy with pidfile /var/run/mysql-proxy.pid
6
+ group mysql_proxy-<%= RUBBER_ENV %>
7
+ start program = "/usr/sbin/service mysql-proxy start"
8
+ stop program = "/usr/sbin/service mysql-proxy stop"
9
+ if failed host 127.0.0.1 port 4040 protocol mysql then alert
10
+ if 5 restarts within 5 cycles then timeout
@@ -0,0 +1,153 @@
1
+ <%
2
+ @path = "/etc/init.d/mysql-proxy"
3
+ @perms = 0755
4
+ %>#! /bin/sh
5
+ ### BEGIN INIT INFO
6
+ # Provides: mysql-proxy
7
+ # Required-Start: $local_fs $remote_fs
8
+ # Required-Stop: $local_fs $remote_fs
9
+ # Default-Start: 2 3 4 5
10
+ # Default-Stop: S 0 1 6
11
+ # Short-Description: mysql-proxy daemon
12
+ # Description: Starts local proxy server
13
+ ### END INIT INFO
14
+
15
+ # Author: Matt Conway (http://github.com/wr0ngway/rubber)
16
+ #
17
+
18
+ # PATH should only include /usr/* if it runs after the mountnfs.sh script
19
+ PATH=/usr/sbin:/usr/bin:/sbin:/bin
20
+ DESC="mysql-proxy"
21
+ NAME=mysql-proxy
22
+ DAEMON=/usr/sbin/$NAME
23
+ PIDFILE=/var/run/$NAME.pid
24
+ DAEMON_ARGS="--daemon --pid-file=${PIDFILE}"
25
+ SCRIPTNAME=/etc/init.d/$NAME
26
+
27
+ # Exit if the package is not installed
28
+ [ -x "$DAEMON" ] || exit 0
29
+
30
+ # Read configuration variable file if it is present
31
+ [ -r /etc/default/$NAME ] && . /etc/default/$NAME
32
+
33
+ # Load the VERBOSE setting and other rcS variables
34
+ [ -f /etc/default/rcS ] && . /etc/default/rcS
35
+
36
+ # Define LSB log_* functions.
37
+ # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
38
+ . /lib/lsb/init-functions
39
+
40
+ #
41
+ # Function that starts the daemon/service
42
+ #
43
+ do_start()
44
+ {
45
+ # Return
46
+ # 0 if daemon has been started
47
+ # 1 if daemon was already running
48
+ # 2 if daemon could not be started
49
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
50
+ || return 1
51
+ start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON -- \
52
+ $DAEMON_ARGS \
53
+ || return 2
54
+ # Add code here, if necessary, that waits for the process to be ready
55
+ # to handle requests from services started subsequently which depend
56
+ # on this one. As a last resort, sleep for some time.
57
+ }
58
+
59
+ #
60
+ # Function that stops the daemon/service
61
+ #
62
+ do_stop()
63
+ {
64
+ # Return
65
+ # 0 if daemon has been stopped
66
+ # 1 if daemon was already stopped
67
+ # 2 if daemon could not be stopped
68
+ # other if a failure occurred
69
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
70
+ RETVAL="$?"
71
+ [ "$RETVAL" = 2 ] && return 2
72
+ # Wait for children to finish too if this is a daemon that forks
73
+ # and if the daemon is only ever run from this initscript.
74
+ # If the above conditions are not satisfied then add some other code
75
+ # that waits for the process to drop all resources that could be
76
+ # needed by services started subsequently. A last resort is to
77
+ # sleep for some time.
78
+ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
79
+ [ "$?" = 2 ] && return 2
80
+ # Many daemons don't delete their pidfiles when they exit.
81
+ rm -f $PIDFILE
82
+ return "$RETVAL"
83
+ }
84
+
85
+ #
86
+ # Function that sends a SIGHUP to the daemon/service
87
+ #
88
+ do_reload() {
89
+ #
90
+ # If the daemon can reload its configuration without
91
+ # restarting (for example, when it is sent a SIGHUP),
92
+ # then implement that here.
93
+ #
94
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
95
+ return 0
96
+ }
97
+
98
+ case "$1" in
99
+ start)
100
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
101
+ do_start
102
+ case "$?" in
103
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
104
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
105
+ esac
106
+ ;;
107
+ stop)
108
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
109
+ do_stop
110
+ case "$?" in
111
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
112
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
113
+ esac
114
+ ;;
115
+ #reload|force-reload)
116
+ #
117
+ # If do_reload() is not implemented then leave this commented out
118
+ # and leave 'force-reload' as an alias for 'restart'.
119
+ #
120
+ #log_daemon_msg "Reloading $DESC" "$NAME"
121
+ #do_reload
122
+ #log_end_msg $?
123
+ #;;
124
+ restart|force-reload)
125
+ #
126
+ # If the "reload" option is implemented then remove the
127
+ # 'force-reload' alias
128
+ #
129
+ log_daemon_msg "Restarting $DESC" "$NAME"
130
+ do_stop
131
+ case "$?" in
132
+ 0|1)
133
+ do_start
134
+ case "$?" in
135
+ 0) log_end_msg 0 ;;
136
+ 1) log_end_msg 1 ;; # Old process is still running
137
+ *) log_end_msg 1 ;; # Failed to start
138
+ esac
139
+ ;;
140
+ *)
141
+ # Failed to stop
142
+ log_end_msg 1
143
+ ;;
144
+ esac
145
+ ;;
146
+ *)
147
+ #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
148
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
149
+ exit 3
150
+ ;;
151
+ esac
152
+
153
+ :
@@ -0,0 +1,10 @@
1
+ <%
2
+ @path = "/etc/default/mysql-proxy"
3
+
4
+ proxy_cmd = "--proxy-lua-script=/etc/mysql/mysql-proxy.lua"
5
+ rubber_instances.for_role(rubber_env.mysql_proxy_role).each do |ic|
6
+ proxy_cmd << " --proxy-backend-addresses=#{ic.full_name}:3306"
7
+ end
8
+ %>
9
+
10
+ DAEMON_ARGS="${DAEMON_ARGS} <%= proxy_cmd %>"
@@ -0,0 +1,5 @@
1
+ <%
2
+ @path = "/etc/mysql/mysql-proxy.lua"
3
+ %>
4
+
5
+ -- we could put a lua script here if we needed to customize mysql-proxy behavior
@@ -0,0 +1,52 @@
1
+
2
+ namespace :rubber do
3
+
4
+ namespace :mysql_proxy do
5
+
6
+ rubber.allow_optional_tasks(self)
7
+
8
+ # mysql-proxy needs to get stopped last and started first so that
9
+ # other processes that use db aren't affected
10
+ after "deploy:stop", "rubber:mysql_proxy:stop"
11
+ before "deploy:start", "rubber:mysql_proxy:start"
12
+ before "deploy:restart", "rubber:mysql_proxy:restart"
13
+
14
+ before "rubber:install_packages", "rubber:mysql_proxy:install"
15
+
16
+ task :install do
17
+ # Setup apt sources to getmysql-proxy (needs to happen for all roles)
18
+ # https://launchpad.net/~mysql-cge-testing/+archive
19
+ #
20
+ sources = <<-SOURCES
21
+ deb http://ppa.launchpad.net/ndb-bindings/ubuntu hardy main
22
+ deb-src http://ppa.launchpad.net/ndb-bindings/ubuntu hardy main
23
+ SOURCES
24
+ sources.gsub!(/^ */, '')
25
+ put(sources, "/etc/apt/sources.list.d/mysql_proxy.list")
26
+ end
27
+
28
+ desc <<-DESC
29
+ Starts the mysql proxy daemon
30
+ DESC
31
+ task :start do
32
+ rsudo "service mysql-proxy start"
33
+ end
34
+
35
+ desc <<-DESC
36
+ Stops the mysql proxy daemon
37
+ DESC
38
+ task :stop do
39
+ rsudo "service mysql-proxy stop"
40
+ end
41
+
42
+ desc <<-DESC
43
+ Restarts the mysql proxy daemon
44
+ DESC
45
+ task :restart do
46
+ rsudo "service mysql-proxy restart"
47
+ end
48
+
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,11 @@
1
+ # MySQL user accounts and privileges are not automatically propagated between different MySQL servers accessing the same MySQL Cluster. Therefore, you must make sure that these are copied between the SQL nodes yourself.
2
+
3
+ # Uses db credtial variables from mysql/mysql_cluster
4
+ # db_user, db_pass, db_name
5
+
6
+ # REQUIRED: The role of the servers mysql_proxy load balances sql requests to.
7
+ # e.g. 'mysql_sql' for mysql_cluster, or 'db' for both mysql master/slave,
8
+ # or 'mysql_master' for just master
9
+ mysql_proxy_role: mysql_sql
10
+
11
+ packages: [mysql-proxy]
@@ -0,0 +1 @@
1
+ description: The mysql_proxy module for load balancing to mysql servers
@@ -0,0 +1,45 @@
1
+
2
+ namespace :rubber do
3
+
4
+ namespace :nginx do
5
+
6
+ rubber.allow_optional_tasks(self)
7
+
8
+ # serial_task can only be called after roles defined - not normally a problem, but
9
+ # rubber auto-roles don't get defined till after all tasks are defined
10
+ on :load do
11
+ rubber.serial_task self, :serial_restart, :roles => :nginx do
12
+ rsudo "service nginx restart"
13
+ end
14
+ rubber.serial_task self, :serial_reload, :roles => :nginx do
15
+ rsudo "if ! ps ax | grep -v grep | grep -c nginx &> /dev/null; then service nginx start; else service nginx reload; fi"
16
+ end
17
+ end
18
+
19
+ before "deploy:stop", "rubber:nginx:stop"
20
+ after "deploy:start", "rubber:nginx:start"
21
+ after "deploy:restart", "rubber:nginx:reload"
22
+
23
+ desc "Stops the nginx web server"
24
+ task :stop, :roles => :nginx do
25
+ rsudo "service nginx stop; exit 0"
26
+ end
27
+
28
+ desc "Starts the nginx web server"
29
+ task :start, :roles => :nginx do
30
+ rsudo "service nginx start"
31
+ end
32
+
33
+ desc "Restarts the nginx web server"
34
+ task :restart, :roles => :nginx do
35
+ serial_restart
36
+ end
37
+
38
+ desc "Reloads the nginx web server"
39
+ task :reload, :roles => :nginx do
40
+ serial_reload
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,9 @@
1
+ <%
2
+ @read_cmd = 'crontab -l'
3
+ @write_cmd = 'crontab -'
4
+ @additive = ["# rubber-nginx-start", "# rubber-nginx-end"]
5
+ %>
6
+
7
+ # Roll the nginx logs at midnight
8
+ 0 0 * * * LOG_DIR=/mnt/nginx/log <%= RUBBER_ROOT %>/script/cron-rake rubber:rotate_logs
9
+
@@ -0,0 +1,8 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-nginx.conf'
3
+ %>
4
+ <% PIDFILE = "/var/run/nginx.pid" %>
5
+ check process nginx with pidfile <%= PIDFILE %>
6
+ group nginx-<%= RUBBER_ENV %>
7
+ start program = "/usr/sbin/service nginx start"
8
+ stop program = "/usr/sbin/service nginx stop"
@@ -0,0 +1,42 @@
1
+ <%
2
+ @path = "/etc/nginx/nginx.conf"
3
+ @post = "mkdir -p /mnt/nginx/logs"
4
+ %>
5
+
6
+ user www-data;
7
+ worker_processes 10;
8
+
9
+ pid /var/run/nginx.pid;
10
+
11
+ events
12
+ {
13
+ worker_connections 1024;
14
+ }
15
+
16
+ http
17
+ {
18
+ include /etc/nginx/mime.types;
19
+ default_type application/octet-stream;
20
+
21
+ sendfile on;
22
+ tcp_nopush on;
23
+ tcp_nodelay off;
24
+
25
+ gzip on;
26
+ gzip_http_version 1.0;
27
+ gzip_comp_level 2;
28
+ gzip_proxied any;
29
+ gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
30
+
31
+ # configure log format like to Apache's "combined" log format
32
+ log_format main
33
+ '$remote_addr - $remote_user [$time_local] '
34
+ '"$request" $status $body_bytes_sent "$http_referer" '
35
+ '"$http_user_agent" "$http_cookie"';
36
+
37
+ # default log files
38
+ error_log /mnt/nginx/logs/error.log notice;
39
+ access_log /mnt/nginx/logs/access.log main;
40
+
41
+ include /etc/nginx/rubber/*.conf;
42
+ }