axtro-rubber 1.2.3 → 1.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (307) hide show
  1. data/CHANGELOG +210 -0
  2. data/VERSION +1 -1
  3. data/bin/vulcanize +16 -32
  4. data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +6 -6
  5. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +2 -2
  6. data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +3 -0
  7. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +29 -16
  8. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +1 -1
  9. data/generators/vulcanize/templates/base/Rakefile +21 -0
  10. data/generators/vulcanize/templates/base/config/deploy.rb +1 -0
  11. data/generators/vulcanize/templates/base/config/rubber/common/crontab +6 -1
  12. data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +2 -2
  13. data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +3 -4
  14. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +56 -48
  15. data/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  16. data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +0 -1
  17. data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +28 -0
  18. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +8 -13
  19. data/generators/vulcanize/templates/base/script/cron-runner +1 -1
  20. data/generators/vulcanize/templates/base/templates.rb +9 -0
  21. data/generators/vulcanize/templates/base/templates.yml +5 -0
  22. data/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  23. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
  24. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  25. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  26. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  27. data/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  28. data/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  29. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +2 -2
  30. data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/role/haproxy/haproxy-passenger.conf +2 -2
  31. data/generators/vulcanize/templates/{complete_passenger_mysql → complete_passenger}/config/rubber/rubber-complete.yml +0 -0
  32. data/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  33. data/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  34. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +1 -7
  35. data/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  36. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +3 -3
  37. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +1 -1
  38. data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +5 -5
  39. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +2 -2
  40. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +8 -3
  41. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +4 -0
  42. data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +5 -5
  43. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +1 -1
  44. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +5 -5
  45. data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +2 -1
  46. data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +5 -4
  47. data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +2 -2
  48. data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +1 -1
  49. data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +4 -2
  50. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +5 -5
  51. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +1 -1
  52. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +43 -8
  53. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
  54. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +6 -8
  55. data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +1 -0
  56. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +40 -27
  57. data/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  58. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +2 -2
  59. data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +2 -6
  60. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +1 -1
  61. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +19 -15
  62. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +2 -2
  63. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +2 -2
  64. data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +3 -3
  65. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +5 -5
  66. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +1 -1
  67. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +2 -2
  68. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +10 -1
  69. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +1 -1
  70. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +2 -2
  71. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +1 -1
  72. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +28 -3
  73. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +3 -3
  74. data/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  75. data/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  76. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  77. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  78. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  79. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  80. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  81. data/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  82. data/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  83. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +8 -7
  84. data/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  85. data/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  86. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +46 -27
  87. data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  88. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  89. data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +14 -6
  90. data/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  91. data/generators/vulcanize/templates/resque/templates.rb +1 -0
  92. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +8 -8
  93. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +7 -4
  94. data/generators/vulcanize/vulcanize_generator.rb +166 -49
  95. data/lib/generators/vulcanize/USAGE +6 -0
  96. data/lib/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
  97. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
  98. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
  99. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
  100. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  101. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +8 -0
  102. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
  103. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +79 -0
  104. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  105. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
  106. data/lib/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
  107. data/lib/generators/vulcanize/templates/apache/templates.yml +1 -0
  108. data/lib/generators/vulcanize/templates/base/Capfile +14 -0
  109. data/lib/generators/vulcanize/templates/base/Rakefile +21 -0
  110. data/lib/generators/vulcanize/templates/base/config/deploy.rb +56 -0
  111. data/lib/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
  112. data/lib/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  113. data/lib/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
  114. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +92 -0
  115. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  116. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
  117. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +28 -0
  118. data/lib/generators/vulcanize/templates/base/config/rubber/rubber.yml +235 -0
  119. data/lib/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
  120. data/lib/generators/vulcanize/templates/base/script/cron-rake +18 -0
  121. data/lib/generators/vulcanize/templates/base/script/cron-runner +18 -0
  122. data/lib/generators/vulcanize/templates/base/script/cron-sh +67 -0
  123. data/lib/generators/vulcanize/templates/base/templates.rb +9 -0
  124. data/lib/generators/vulcanize/templates/base/templates.yml +6 -0
  125. data/lib/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  126. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
  127. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  128. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  129. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  130. data/lib/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  131. data/lib/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  132. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  133. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
  134. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  135. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
  136. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
  137. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
  138. data/lib/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  139. data/lib/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  140. data/lib/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
  141. data/lib/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  142. data/lib/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
  143. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
  144. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
  145. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
  146. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
  147. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
  148. data/lib/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
  149. data/lib/generators/vulcanize/templates/cruise/templates.yml +1 -0
  150. data/lib/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
  151. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  152. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
  153. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
  154. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +11 -0
  155. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -0
  156. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
  157. data/lib/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
  158. data/lib/generators/vulcanize/templates/haproxy/templates.yml +1 -0
  159. data/lib/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  160. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  161. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  162. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  163. data/lib/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  164. data/lib/generators/vulcanize/templates/jetty/templates.yml +1 -0
  165. data/lib/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
  166. data/lib/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
  167. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
  168. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
  169. data/lib/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
  170. data/lib/generators/vulcanize/templates/memcached/templates.yml +1 -0
  171. data/lib/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
  172. data/lib/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
  173. data/lib/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
  174. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
  175. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
  176. data/lib/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
  177. data/lib/generators/vulcanize/templates/mongrel/templates.yml +1 -0
  178. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
  179. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +252 -0
  180. data/lib/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -0
  181. data/lib/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
  182. data/lib/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
  183. data/lib/generators/vulcanize/templates/monit/templates.yml +1 -0
  184. data/lib/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
  185. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
  186. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
  187. data/lib/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
  188. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
  189. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
  190. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +115 -0
  191. data/lib/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
  192. data/lib/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -0
  193. data/lib/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
  194. data/lib/generators/vulcanize/templates/munin/templates.yml +1 -0
  195. data/lib/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +12 -0
  196. data/lib/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
  197. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  198. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
  199. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
  200. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +163 -0
  201. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
  202. data/lib/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +47 -0
  203. data/lib/generators/vulcanize/templates/mysql/templates.yml +1 -0
  204. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
  205. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +177 -0
  206. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
  207. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
  208. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
  209. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
  210. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
  211. data/lib/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
  212. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
  213. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
  214. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
  215. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
  216. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
  217. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
  218. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
  219. data/lib/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
  220. data/lib/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
  221. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
  222. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
  223. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  224. data/{generators/vulcanize/templates/nginx_frontend → lib/generators/vulcanize/templates/nginx}/config/rubber/role/web_tools/nginx-tools.conf +0 -0
  225. data/{generators/vulcanize/templates/nginx_frontend → lib/generators/vulcanize/templates/nginx}/config/rubber/role/web_tools/tools-index.html +0 -0
  226. data/{generators/vulcanize/templates/nginx_frontend → lib/generators/vulcanize/templates/nginx}/config/rubber/role/web_tools/tools-nginx.auth +0 -0
  227. data/lib/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
  228. data/lib/generators/vulcanize/templates/nginx/templates.yml +1 -0
  229. data/lib/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +46 -0
  230. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  231. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +7 -0
  232. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  233. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
  234. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +35 -0
  235. data/lib/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
  236. data/lib/generators/vulcanize/templates/passenger/templates.yml +3 -0
  237. data/lib/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  238. data/lib/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +131 -0
  239. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  240. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  241. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  242. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  243. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +504 -0
  244. data/lib/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  245. data/lib/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  246. data/lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +37 -0
  247. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  248. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  249. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
  250. data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  251. data/lib/generators/vulcanize/templates/redis/templates.yml +1 -0
  252. data/lib/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  253. data/lib/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  254. data/lib/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
  255. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  256. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  257. data/lib/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
  258. data/lib/generators/vulcanize/templates/resque/script/resque_worker_management.rb +112 -0
  259. data/lib/generators/vulcanize/templates/resque/templates.rb +1 -0
  260. data/lib/generators/vulcanize/templates/resque/templates.yml +3 -0
  261. data/lib/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
  262. data/lib/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
  263. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  264. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +13 -0
  265. data/lib/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
  266. data/lib/generators/vulcanize/templates/sphinx/templates.yml +1 -0
  267. data/lib/generators/vulcanize/vulcanize_generator.rb +184 -0
  268. data/lib/rubber.rb +42 -6
  269. data/lib/rubber/cloud/aws.rb +8 -6
  270. data/lib/rubber/dns/dyndns.rb +6 -7
  271. data/lib/rubber/dns/zerigo.rb +66 -125
  272. data/lib/rubber/environment.rb +15 -7
  273. data/lib/rubber/generator.rb +37 -27
  274. data/lib/rubber/instance.rb +1 -1
  275. data/lib/rubber/railtie.rb +14 -0
  276. data/lib/rubber/recipes/rubber.rb +6 -0
  277. data/lib/rubber/recipes/rubber/deploy.rb +3 -3
  278. data/lib/rubber/recipes/rubber/instances.rb +28 -64
  279. data/lib/rubber/recipes/rubber/setup.rb +102 -56
  280. data/lib/rubber/recipes/rubber/utils.rb +39 -16
  281. data/lib/rubber/recipes/rubber/volumes.rb +6 -7
  282. data/lib/rubber/tasks/rubber.rb +1 -1
  283. data/lib/rubber/util.rb +36 -1
  284. data/rails/init.rb +1 -4
  285. data/test/environment_test.rb +9 -1
  286. data/test/generator_test.rb +49 -5
  287. data/test/instance_test.rb +1 -1
  288. data/test/test_helper.rb +6 -0
  289. data/test/util_test.rb +1 -1
  290. data/test/zerigo_test.rb +88 -0
  291. metadata +222 -62
  292. data/generators/vulcanize/templates/nginx_frontend/config/rubber/deploy-nginx_frontend.rb +0 -85
  293. data/generators/vulcanize/templates/nginx_frontend/config/rubber/role/nginx_frontend/logrotate-nginx_frontend +0 -14
  294. data/generators/vulcanize/templates/nginx_frontend/config/rubber/role/nginx_frontend/monit-nginx_frontend.conf +0 -8
  295. data/generators/vulcanize/templates/nginx_frontend/config/rubber/role/nginx_frontend/nginx.conf +0 -50
  296. data/generators/vulcanize/templates/nginx_frontend/config/rubber/role/nginx_frontend/nginx_frontend +0 -366
  297. data/generators/vulcanize/templates/nginx_frontend/config/rubber/rubber-nginx_frontend.yml +0 -22
  298. data/generators/vulcanize/templates/nginx_frontend/templates.yml +0 -1
  299. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb +0 -38
  300. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf +0 -19
  301. data/generators/vulcanize/templates/unicorn/config/rubber/deploy-unicorn.rb +0 -43
  302. data/generators/vulcanize/templates/unicorn/config/rubber/role/nginx_frontend/unicorn_nginx_server.conf +0 -90
  303. data/generators/vulcanize/templates/unicorn/config/rubber/role/unicorn/logrotate-unicorn +0 -16
  304. data/generators/vulcanize/templates/unicorn/config/rubber/role/unicorn/monit-unicorn.conf +0 -10
  305. data/generators/vulcanize/templates/unicorn/config/rubber/role/unicorn/unicorn +0 -327
  306. data/generators/vulcanize/templates/unicorn/config/rubber/role/unicorn/unicorn.conf +0 -86
  307. data/generators/vulcanize/templates/unicorn/config/rubber/rubber-unicorn.yml +0 -13
@@ -10,7 +10,7 @@ module Rubber
10
10
  include Enumerable
11
11
 
12
12
  def initialize(file)
13
- LOGGER.debug{"Reading rubber instances from #{file}"}
13
+ Rubber.logger.debug{"Reading rubber instances from #{file}"}
14
14
  @file = file
15
15
  @items = {}
16
16
  @artifacts = {'volumes' => {}, 'static_ips' => {}}
@@ -0,0 +1,14 @@
1
+ require 'rubber'
2
+ require 'rails'
3
+
4
+ module Rubber
5
+
6
+ class Railtie < Rails::Railtie
7
+
8
+ initializer "rubber.configure_rails_initialization" do
9
+ Rubber::initialize(Rails.root, Rails.env)
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -50,6 +50,11 @@ namespace :rubber do
50
50
  set :rubber_env, rubber_cfg.environment.bind()
51
51
  set :rubber_instances, rubber_cfg.instance
52
52
 
53
+ # Disable connecting to any Windows instance.
54
+ # pass -l to bash in :shell to that run also gets full env
55
+ # use a pty so we don't get "stdin: is not a tty" error output
56
+ set :default_run_options, :pty => true, :shell => "/bin/bash -l", :except => { :platform => 'windows' }
57
+
53
58
  set :cloud, Rubber::Cloud::get_provider(rubber_env.cloud_provider || "aws", rubber_env, self)
54
59
 
55
60
  load_roles() unless rubber_env.disable_auto_roles
@@ -57,6 +62,7 @@ namespace :rubber do
57
62
  # the private key in the same folder, the public key should have the
58
63
  # extension ".pub".
59
64
  ssh_options[:keys] = rubber_env.cloud_providers[rubber_env.cloud_provider].key_file
65
+ ssh_options[:timeout] = fetch(:ssh_timeout, 5)
60
66
  end
61
67
 
62
68
 
@@ -59,8 +59,8 @@ namespace :rubber do
59
59
  Sets permissions of files in application directory to be owned by app_user.
60
60
  DESC
61
61
  task :setup_app_permissions do
62
- run "find #{shared_path} -name cached-copy -prune -o -print | xargs chown #{rubber_env.app_user}:#{rubber_env.app_user}"
63
- run "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{current_path}/tmp"
62
+ rsudo "find #{shared_path} -name cached-copy -prune -o -print | xargs chown #{rubber_env.app_user}:#{rubber_env.app_user}"
63
+ rsudo "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{current_path}/tmp"
64
64
  end
65
65
 
66
66
  def run_config(options={})
@@ -84,7 +84,7 @@ namespace :rubber do
84
84
  put(File.read(secret), File.join(path, base, File.basename(secret)), :mode => "+r")
85
85
  end
86
86
 
87
- sudo "sh -c 'cd #{path} && #{extra_env} rake rubber:config'"
87
+ rsudo "cd #{path} && #{extra_env} rake rubber:config"
88
88
  end
89
89
 
90
90
  end
@@ -35,9 +35,7 @@ namespace :rubber do
35
35
  # Add in roles that the given set of roles depends on
36
36
  ir = Rubber::Configuration::RoleItem.expand_role_dependencies(ir, get_role_dependencies)
37
37
 
38
- user_data = env.cloud_providers[env.cloud_provider]["user_data"]
39
-
40
- create_instance(instance_alias, ir, create_spot_instance, user_data)
38
+ create_instance(instance_alias, ir, create_spot_instance)
41
39
  end
42
40
 
43
41
  desc <<-DESC
@@ -158,7 +156,7 @@ namespace :rubber do
158
156
 
159
157
  # Creates a new ec2 instance with the given alias and roles
160
158
  # Configures aliases (/etc/hosts) on local and remote machines
161
- def create_instance(instance_alias, instance_roles, create_spot_instance=false, user_data = nil)
159
+ def create_instance(instance_alias, instance_roles, create_spot_instance=false)
162
160
  fatal "Instance already exists: #{instance_alias}" if rubber_instances[instance_alias]
163
161
 
164
162
  role_names = instance_roles.collect{|x| x.name}
@@ -203,7 +201,7 @@ namespace :rubber do
203
201
 
204
202
  if !create_spot_instance || (create_spot_instance && max_wait_time < 0)
205
203
  logger.info "Creating instance #{ami}/#{ami_type}/#{security_groups.join(',') rescue 'Default'}/#{availability_zone || 'Default'}"
206
- instance_id = cloud.create_instance(ami, ami_type, security_groups, availability_zone, user_data)
204
+ instance_id = cloud.create_instance(ami, ami_type, security_groups, availability_zone)
207
205
  end
208
206
 
209
207
  logger.info "Instance #{instance_id} created"
@@ -218,59 +216,9 @@ namespace :rubber do
218
216
  while true do
219
217
  print "."
220
218
  sleep 2
221
- instance = cloud.describe_instances(instance_id).first
222
-
223
- if instance[:state] == "running"
224
- print "\n"
225
- logger.info "Instance running, fetching hostname/ip data"
226
- instance_item.external_host = instance[:external_host]
227
- instance_item.external_ip = instance[:external_ip]
228
- instance_item.internal_host = instance[:internal_host]
229
- instance_item.zone = instance[:zone]
230
- instance_item.platform = instance[:platform]
231
- rubber_instances.save()
232
-
233
- # setup amazon elastic ips if configured to do so
234
- setup_static_ips
235
-
236
- # Need to setup aliases so ssh doesn't give us errors when we
237
- # later try? to connect to same ip but using alias
238
- setup_local_aliases
239
-
240
- # re-load the roles since we may have just defined new ones
241
- load_roles() unless env.disable_auto_roles
242
-
243
- # Connect to newly created instance and grab its internal ip
244
- # so that we can update all aliases
245
-
246
- task :_get_ip, :hosts => instance_item.external_ip do
247
- # There's no good way to get the internal IP for a Windows host, so just set it to the external
248
- # and let the router handle mapping to the internal network.
249
- if instance_item.windows?
250
- instance_item.internal_ip = instance_item.external_ip
251
- else
252
- instance_item.internal_ip = capture(print_ip_command).strip
253
- end
254
-
255
- rubber_instances.save()
256
- end
257
219
 
258
- # even though instance is running, sometimes ssh hasn't started yet,
259
- # so retry on connect failure
260
- begin
261
- _get_ip
262
- rescue ConnectionError
263
- sleep 2
264
- logger.info "Failed to connect to #{instance_alias} (#{instance_item.external_ip}), retrying"
265
- retry
266
- end
267
-
268
- # Add the aliases for this instance to all other hosts
269
- setup_remote_aliases
270
- setup_dns_aliases
220
+ break if refresh_instance(instance_alias)
271
221
 
272
- break
273
- end
274
222
  end
275
223
  end
276
224
 
@@ -282,15 +230,21 @@ namespace :rubber do
282
230
  fatal "Instance does not exist: #{instance_alias}" if ! instance_item
283
231
 
284
232
  env = rubber_cfg.environment.bind(instance_item.role_names, instance_alias)
285
-
286
- instance = cloud.describe_instances(instance_item.instance_id).first
233
+
234
+ instance = cloud.describe_instances(instance_item.instance_id).first rescue {}
287
235
 
288
236
  if instance[:state] == "running"
289
- logger.info "\nInstance running, fetching hostname/ip data"
237
+ print "\n"
238
+ logger.info "Instance running, fetching hostname/ip data"
290
239
  instance_item.external_host = instance[:external_host]
291
240
  instance_item.external_ip = instance[:external_ip]
292
241
  instance_item.internal_host = instance[:internal_host]
293
242
  instance_item.zone = instance[:zone]
243
+ instance_item.platform = instance[:platform]
244
+ rubber_instances.save()
245
+
246
+ # turn back on root ssh access if we are using root as the capistrano user for connecting
247
+ enable_root_ssh(instance_item.external_ip, fetch(:initial_ssh_user, 'ubuntu')) if (user == 'root' && ! instance_item.windows?)
294
248
 
295
249
  # setup amazon elastic ips if configured to do so
296
250
  setup_static_ips
@@ -305,7 +259,14 @@ namespace :rubber do
305
259
  # Connect to newly created instance and grab its internal ip
306
260
  # so that we can update all aliases
307
261
  task :_get_ip, :hosts => instance_item.external_ip do
308
- instance_item.internal_ip = capture(print_ip_command).strip
262
+ # There's no good way to get the internal IP for a Windows host, so just set it to the external
263
+ # and let the router handle mapping to the internal network.
264
+ if instance_item.windows?
265
+ instance_item.internal_ip = instance_item.external_ip
266
+ else
267
+ instance_item.internal_ip = capture(print_ip_command).strip
268
+ end
269
+
309
270
  rubber_instances.save()
310
271
  end
311
272
 
@@ -323,7 +284,10 @@ namespace :rubber do
323
284
  # Add the aliases for this instance to all other hosts
324
285
  setup_remote_aliases
325
286
  setup_dns_aliases
287
+
288
+ return true
326
289
  end
290
+ return false
327
291
  end
328
292
 
329
293
 
@@ -337,10 +301,10 @@ namespace :rubber do
337
301
  value = Capistrano::CLI.ui.ask("About to DESTROY #{instance_alias} (#{instance_item.instance_id}) in mode #{RUBBER_ENV}. Are you SURE [yes/NO]?: ")
338
302
  fatal("Exiting", 0) if value != "yes"
339
303
 
340
- # if instance_item.static_ip
341
- # value = Capistrano::CLI.ui.ask("Instance has a static ip, do you want to release it? [y/N]?: ")
342
- # destroy_static_ip(instance_item.static_ip) if value =~ /^y/
343
- # end
304
+ if instance_item.static_ip
305
+ value = Capistrano::CLI.ui.ask("Instance has a static ip, do you want to release it? [y/N]?: ")
306
+ destroy_static_ip(instance_item.static_ip) if value =~ /^y/
307
+ end
344
308
 
345
309
  if instance_item.volumes
346
310
  value = Capistrano::CLI.ui.ask("Instance has persistent volumes, do you want to destroy them? [y/N]?: ")
@@ -1,14 +1,12 @@
1
1
  namespace :rubber do
2
2
 
3
- # Disable connecting to any Windows instance.
4
- set :default_run_options, :except => { :platform => 'windows' }
5
-
6
3
  desc <<-DESC
7
4
  Bootstraps instances by setting timezone, installing packages and gems
8
5
  DESC
9
6
  task :bootstrap do
10
- set_timezone
11
7
  link_bash
8
+ set_timezone
9
+ enable_multiverse
12
10
  upgrade_packages
13
11
  install_packages
14
12
  setup_volumes
@@ -17,6 +15,33 @@ namespace :rubber do
17
15
  deploy.setup
18
16
  end
19
17
 
18
+ # Sets up instance to allow root access (e.g. recent canonical AMIs)
19
+ def enable_root_ssh(ip, initial_ssh_user)
20
+ old_user = user
21
+ begin
22
+ set :user, initial_ssh_user
23
+
24
+ task :_allow_root_ssh, :hosts => ip do
25
+ rsudo "cp /home/#{initial_ssh_user}/.ssh/authorized_keys /root/.ssh/"
26
+ end
27
+
28
+ begin
29
+ _allow_root_ssh
30
+ rescue ConnectionError => e
31
+ if e.message =~ /Net::SSH::AuthenticationFailed/
32
+ logger.info "Can't connect as user #{initial_ssh_user} to #{ip}, assuming root allowed"
33
+ else
34
+ sleep 2
35
+ logger.info "Failed to connect to #{ip}, retrying"
36
+ retry
37
+ end
38
+ end
39
+ ensure
40
+ set :user, old_user
41
+ end
42
+
43
+ end
44
+
20
45
  desc <<-DESC
21
46
  Sets up aliases for instance hostnames based on contents of instance.yml.
22
47
  Generates /etc/hosts for local/remote machines and sets hostname on
@@ -167,7 +192,9 @@ namespace :rubber do
167
192
  put filtered, hosts_file
168
193
 
169
194
  # Setup hostname on instance so shell, etcs have nice display
170
- sudo "echo $CAPISTRANO:HOST$ > /etc/hostname && hostname $CAPISTRANO:HOST$"
195
+ rsudo "echo $CAPISTRANO:HOST$ > /etc/hostname && hostname $CAPISTRANO:HOST$"
196
+ # Newer ubuntus ec2-init script always resets hostname, so prevent it
197
+ rsudo "mkdir -p /etc/ec2-init && echo compat=0 > /etc/ec2-init/is-compat-env"
171
198
  end
172
199
 
173
200
  # TODO
@@ -221,12 +248,20 @@ namespace :rubber do
221
248
  gem_helper(false)
222
249
  end
223
250
 
251
+ desc <<-DESC
252
+ Install ruby gems defined in Gemfile
253
+ DESC
254
+ after "deploy:update_code", "rubber:install_bundler_gems" if Rubber::Util.is_bundler?
255
+ task :install_bundler_gems do
256
+ rsudo "cd #{current_release} && RAILS_ENV=#{RUBBER_ENV} bundle install --without development test"
257
+ end
258
+
224
259
  desc <<-DESC
225
260
  Install ruby gems defined in the rails environment.rb
226
261
  DESC
227
- after "rubber:config", "rubber:install_rails_gems" if Rubber::Util.is_rails?
262
+ after "rubber:config", "rubber:install_rails_gems" if (Rubber::Util::is_rails2? && !Rubber::Util.is_bundler?)
228
263
  task :install_rails_gems do
229
- sudo "sh -c 'cd #{current_path} && RAILS_ENV=#{RUBBER_ENV} rake gems:install'"
264
+ rsudo "cd #{current_release} && RAILS_ENV=#{RUBBER_ENV} rake gems:install"
230
265
  end
231
266
 
232
267
  desc <<-DESC
@@ -248,46 +283,43 @@ namespace :rubber do
248
283
 
249
284
  logger.info "Installing gems:#{expanded_gem_list}"
250
285
  open("/tmp/gem_helper", "w") {|f| f.write(gem_helper_script)}
251
- system "sh /tmp/gem_helper install #{expanded_gem_list}"
286
+ system "ruby /tmp/gem_helper install #{expanded_gem_list}"
252
287
  end
253
288
 
289
+ set :gem_sources_helper_script, <<-'ENDSCRIPT'
290
+ sources = ARGV
291
+
292
+ installed = []
293
+ `gem sources -l`.each_line do |line|
294
+ line = line.strip
295
+ installed << line if line.size > 0 && line =~ /^[^*]/
296
+ end
297
+
298
+ to_install = sources - installed
299
+ to_remove = installed - sources
300
+
301
+ if to_install.size > 0
302
+ to_install.each do |source|
303
+ system "gem sources -a #{source}"
304
+ fail "Unable to add gem sources" if $?.exitstatus > 0
305
+ end
306
+ end
307
+ if to_remove.size > 0
308
+ to_remove.each do |source|
309
+ system "gem sources -r #{source}"
310
+ fail "Unable to remove gem sources" if $?.exitstatus > 0
311
+ end
312
+ end
313
+ ENDSCRIPT
314
+
254
315
  desc <<-DESC
255
316
  Setup ruby gems sources. Set 'gemsources' in rubber.yml to \
256
317
  be an array of URI strings.
257
318
  DESC
258
319
  task :setup_gem_sources do
259
320
  if rubber_env.gemsources
260
- script = prepare_script 'gem_sources_helper', <<-'ENDSCRIPT'
261
- ruby - $@ <<-'EOF'
262
-
263
- sources = ARGV
264
-
265
- installed = []
266
- `gem sources -l`.grep(/^[^*]/) do |line|
267
- line = line.strip
268
- installed << line if line.size > 0
269
- end
270
-
271
- to_install = sources - installed
272
- to_remove = installed - sources
273
-
274
- if to_install.size > 0
275
- to_install.each do |source|
276
- system "gem sources -a #{source}"
277
- fail "Unable to add gem sources" if $?.exitstatus > 0
278
- end
279
- end
280
- if to_remove.size > 0
281
- to_remove.each do |source|
282
- system "gem sources -r #{source}"
283
- fail "Unable to remove gem sources" if $?.exitstatus > 0
284
- end
285
- end
286
-
287
- 'EOF'
288
- ENDSCRIPT
289
-
290
- sudo "sh #{script} #{rubber_env.gemsources.join(' ')}"
321
+ script = prepare_script 'gem_sources_helper', gem_sources_helper_script, nil
322
+ rsudo "ruby #{script} #{rubber_env.gemsources.join(' ')}"
291
323
  end
292
324
  end
293
325
 
@@ -296,7 +328,7 @@ namespace :rubber do
296
328
  You can override this task if you don't want this to happen
297
329
  DESC
298
330
  task :link_bash do
299
- sudo("ln -sf /bin/bash /bin/sh")
331
+ rsudo "ln -sf /bin/bash /bin/sh"
300
332
  end
301
333
 
302
334
  desc <<-DESC
@@ -310,10 +342,28 @@ namespace :rubber do
310
342
  DESC
311
343
  task :set_timezone do
312
344
  opts = get_host_options('timezone')
313
- sudo "bash -c 'echo $CAPISTRANO:VAR$ > /etc/timezone'", opts
314
- sudo "cp /usr/share/zoneinfo/$CAPISTRANO:VAR$ /etc/localtime", opts
345
+ rsudo "echo $CAPISTRANO:VAR$ > /etc/timezone", opts
346
+ rsudo "cp /usr/share/zoneinfo/$CAPISTRANO:VAR$ /etc/localtime", opts
315
347
  # restart syslog so that times match timezone
316
- sudo "/etc/init.d/sysklogd restart"
348
+ sudo_script 'restart_syslog', <<-ENDSCRIPT
349
+ if [[ -x /etc/init.d/sysklogd ]]; then
350
+ /etc/init.d/sysklogd restart
351
+ elif [[ -x /etc/init.d/rsyslog ]]; then
352
+ service rsyslog restart
353
+ fi
354
+ ENDSCRIPT
355
+ end
356
+
357
+ desc <<-DESC
358
+ Enable the ubuntu multiverse source for getting packages like
359
+ ec2-ami-tools used for bundling images
360
+ DESC
361
+ task :enable_multiverse do
362
+ sudo_script 'enable_multiverse', <<-ENDSCRIPT
363
+ if ! grep -qc multiverse /etc/apt/sources.list /etc/apt/sources.list.d/* &> /dev/null; then
364
+ cat /etc/apt/sources.list | sed 's/main universe/multiverse/' > /etc/apt/sources.list.d/rubber-multiverse-source.list
365
+ fi
366
+ ENDSCRIPT
317
367
  end
318
368
 
319
369
  def update_dyndns(instance_item)
@@ -345,16 +395,16 @@ namespace :rubber do
345
395
  expanded_pkg_list.join(' ')
346
396
  end
347
397
 
348
- sudo "apt-get -q update"
398
+ rsudo "apt-get -q update"
349
399
  if upgrade
350
- sudo "/bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -q -y --force-yes dist-upgrade'"
400
+ rsudo "export DEBIAN_FRONTEND=noninteractive; apt-get -q -o Dpkg::Options::=--force-confold -y --force-yes dist-upgrade"
351
401
  else
352
- sudo "/bin/sh -c 'export DEBIAN_FRONTEND=noninteractive; apt-get -q -y --force-yes install $CAPISTRANO:VAR$'", opts
402
+ rsudo "export DEBIAN_FRONTEND=noninteractive; apt-get -q -o Dpkg::Options::=--force-confold -y --force-yes install $CAPISTRANO:VAR$", opts
353
403
  end
354
404
  end
355
405
 
356
406
  def custom_package(url_base, name, ver, install_test)
357
- rubber.run_script "install_#{name}", <<-ENDSCRIPT
407
+ rubber.sudo_script "install_#{name}", <<-ENDSCRIPT
358
408
  if [[ #{install_test} ]]; then
359
409
  arch=`uname -m`
360
410
  if [ "$arch" = "x86_64" ]; then
@@ -363,7 +413,7 @@ namespace :rubber do
363
413
  src="#{url_base}/#{name}_#{ver}_i386.deb"
364
414
  fi
365
415
  src_file="${src##*/}"
366
- wget -qP /tmp ${src}
416
+ wget -qNP /tmp ${src}
367
417
  dpkg -i /tmp/${src_file}
368
418
  fi
369
419
  ENDSCRIPT
@@ -389,8 +439,6 @@ namespace :rubber do
389
439
  # calls to rubygems
390
440
  #
391
441
  set :gem_helper_script, <<-'ENDSCRIPT'
392
- ruby - $@ <<-'EOF'
393
-
394
442
  gem_cmd = ARGV[0]
395
443
  gems = ARGV[1..-1]
396
444
  cmd = "gem #{gem_cmd} --no-rdoc --no-ri"
@@ -408,7 +456,7 @@ namespace :rubber do
408
456
  end
409
457
 
410
458
  installed = {}
411
- `gem list --local`.each do |line|
459
+ `gem list --local`.each_line do |line|
412
460
  parts = line.scan(/(.*) \((.*)\)/).first
413
461
  next unless parts && parts.size == 2
414
462
  installed[parts[0]] = parts[1].split(",")
@@ -429,8 +477,6 @@ namespace :rubber do
429
477
  system "#{cmd} #{gem_list}"
430
478
  fail "Unable to install gems" if $?.exitstatus > 0
431
479
  end
432
-
433
- 'EOF'
434
480
  ENDSCRIPT
435
481
 
436
482
  # Helper for installing gems,allows one to respond to prompts
@@ -450,11 +496,11 @@ namespace :rubber do
450
496
  end
451
497
 
452
498
  if opts.size > 0
453
- script = prepare_script('gem_helper', gem_helper_script)
454
- sudo "sh #{script} #{cmd} $CAPISTRANO:VAR$", opts do |ch, str, data|
499
+ script = prepare_script('gem_helper', gem_helper_script, nil)
500
+ rsudo "ruby #{script} #{cmd} $CAPISTRANO:VAR$", opts do |ch, str, data|
455
501
  handle_gem_prompt(ch, data, str)
456
502
  end
457
503
  end
458
504
  end
459
505
 
460
- end
506
+ end