rubber 1.15.0 → 2.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (574) hide show
  1. data/.travis.yml +10 -0
  2. data/CHANGELOG +68 -1
  3. data/Gemfile +4 -0
  4. data/{COPYING → LICENSE} +0 -0
  5. data/Rakefile +89 -0
  6. data/bin/rubber +17 -0
  7. data/lib/rubber.rb +12 -6
  8. data/lib/rubber/cli.rb +30 -0
  9. data/lib/rubber/cloud.rb +2 -1
  10. data/lib/rubber/cloud/aws.rb +58 -298
  11. data/lib/rubber/cloud/aws_table_store.rb +127 -0
  12. data/lib/rubber/cloud/fog.rb +313 -0
  13. data/lib/rubber/cloud/fog_storage.rb +143 -0
  14. data/lib/rubber/commands/config.rb +70 -0
  15. data/lib/rubber/commands/cron.rb +127 -0
  16. data/lib/rubber/commands/util.rb +308 -0
  17. data/lib/rubber/commands/vulcanize.rb +197 -0
  18. data/lib/rubber/configuration.rb +20 -9
  19. data/lib/rubber/dns.rb +2 -1
  20. data/lib/rubber/dns/base.rb +6 -8
  21. data/lib/rubber/dns/fog.rb +117 -0
  22. data/lib/rubber/dns/nettica.rb +6 -1
  23. data/lib/rubber/dns/zerigo.rb +8 -103
  24. data/lib/rubber/environment.rb +25 -6
  25. data/lib/rubber/generator.rb +2 -0
  26. data/lib/rubber/instance.rb +121 -19
  27. data/lib/rubber/recipes/rubber.rb +3 -4
  28. data/lib/rubber/recipes/rubber/deploy.rb +12 -12
  29. data/lib/rubber/recipes/rubber/instances.rb +30 -31
  30. data/lib/rubber/recipes/rubber/security_groups.rb +2 -2
  31. data/lib/rubber/recipes/rubber/setup.rb +139 -42
  32. data/lib/rubber/recipes/rubber/utils.rb +12 -7
  33. data/lib/rubber/recipes/rubber/volumes.rb +2 -2
  34. data/lib/rubber/tag.rb +3 -8
  35. data/lib/rubber/util.rb +43 -22
  36. data/lib/rubber/version.rb +4 -0
  37. data/rubber.gemspec +44 -0
  38. data/{generators/vulcanize/templates → templates}/apache/config/rubber/deploy-apache.rb +2 -2
  39. data/{generators/vulcanize/templates → templates}/apache/config/rubber/role/apache/deflate.conf +0 -0
  40. data/{generators/vulcanize/templates → templates}/apache/config/rubber/role/apache/expires.conf +0 -0
  41. data/{generators/vulcanize/templates → templates}/apache/config/rubber/role/apache/headers.conf +0 -0
  42. data/{generators/vulcanize/templates → templates}/apache/config/rubber/role/apache/ports.conf +0 -0
  43. data/{generators/vulcanize/templates → templates}/apache/config/rubber/role/apache/setenvif.conf +0 -0
  44. data/{generators/vulcanize/templates → templates}/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +51 -23
  45. data/{lib/generators/vulcanize/templates → templates}/apache/config/rubber/role/web_tools/tools-apache.auth +1 -1
  46. data/templates/apache/config/rubber/role/web_tools/tools-index.html +38 -0
  47. data/{generators/vulcanize/templates → templates}/apache/config/rubber/rubber-apache.yml +0 -0
  48. data/{generators/vulcanize/templates → templates}/apache/templates.yml +0 -0
  49. data/{lib/generators/vulcanize/templates → templates}/base/Capfile +6 -0
  50. data/{lib/generators/vulcanize/templates → templates}/base/config/deploy.rb +13 -3
  51. data/templates/base/config/rubber/common/crontab +21 -0
  52. data/{generators/vulcanize/templates → templates}/base/config/rubber/common/rsyslog.conf +0 -0
  53. data/{generators/vulcanize/templates → templates}/base/config/rubber/common/rubber.profile +4 -4
  54. data/{lib/generators/vulcanize/templates → templates}/base/config/rubber/deploy-setup.rb +1 -1
  55. data/{lib/generators/vulcanize/templates → templates}/base/config/rubber/deploy-util.rb +17 -23
  56. data/{lib/generators/vulcanize/templates → templates}/base/config/rubber/rubber-dns.yml +7 -0
  57. data/{lib/generators/vulcanize/templates → templates}/base/config/rubber/rubber-rvm.yml +6 -6
  58. data/{lib/generators/vulcanize/templates → templates}/base/config/rubber/rubber.yml +54 -20
  59. data/templates/base/script/rubber +8 -0
  60. data/templates/base/templates.rb +7 -0
  61. data/templates/base/templates.yml +1 -0
  62. data/{lib/generators/vulcanize/templates → templates}/cassandra/config/rubber/deploy-cassandra.rb +1 -1
  63. data/{generators/vulcanize/templates → templates}/cassandra/config/rubber/role/cassandra/cassandra.in.sh +0 -0
  64. data/{generators/vulcanize/templates → templates}/cassandra/config/rubber/role/cassandra/cassandra.yaml +0 -0
  65. data/{generators/vulcanize/templates → templates}/cassandra/config/rubber/role/cassandra/log4j-server.properties +0 -0
  66. data/{generators/vulcanize/templates → templates}/cassandra/config/rubber/rubber-cassandra.yml +0 -0
  67. data/{generators/vulcanize/templates → templates}/cassandra/templates.yml +0 -0
  68. data/templates/collectd/config/rubber/deploy-collectd.rb +48 -0
  69. data/templates/collectd/config/rubber/role/collectd/collectd.conf +69 -0
  70. data/templates/collectd/config/rubber/role/collectd/filters.conf +35 -0
  71. data/templates/collectd/config/rubber/role/collectd/thresholds.conf +76 -0
  72. data/templates/collectd/config/rubber/role/collectd/types.db +5 -0
  73. data/templates/collectd/config/rubber/role/passenger/collectd-passenger.conf +7 -0
  74. data/templates/collectd/config/rubber/role/passenger/collectd-passenger.rb.conf +77 -0
  75. data/{lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf → templates/collectd/config/rubber/role/passenger/passenger-status-sudoers.conf} +1 -1
  76. data/templates/collectd/config/rubber/role/postgresql/collectd-postgresql.conf +22 -0
  77. data/templates/collectd/config/rubber/role/postgresql_slave/collectd-postgresql-threshold.conf +23 -0
  78. data/templates/collectd/config/rubber/rubber-collectd.yml +8 -0
  79. data/templates/collectd/script/collectd/collectd-runner.rb +107 -0
  80. data/templates/collectd/script/collectd/role/examples/example_db_query.rb +19 -0
  81. data/templates/collectd/script/collectd/role/examples/example_simple.rb +1 -0
  82. data/templates/collectd/script/collectd/role/postgresql_slave/replication_status.rb +31 -0
  83. data/templates/collectd/script/collectd/role/redis/redis_info.rb +28 -0
  84. data/templates/collectd/script/collectd/role/resque_worker/global_worker_stats.rb +12 -0
  85. data/templates/collectd/script/collectd/role/resque_worker/host_worker_stats.rb +70 -0
  86. data/templates/collectd/script/collectd/role/resque_worker/resque_jobs_processed.rb +8 -0
  87. data/templates/collectd/templates.yml +2 -0
  88. data/{generators/vulcanize/templates → templates}/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +0 -0
  89. data/{generators/vulcanize/templates → templates}/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +5 -5
  90. data/{lib/generators/vulcanize/templates → templates}/complete_mongrel_mysql/config/rubber/rubber-complete.yml +1 -1
  91. data/{lib/generators/vulcanize/templates → templates}/complete_mongrel_mysql/templates.yml +2 -2
  92. data/{generators/vulcanize/templates → templates}/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +0 -0
  93. data/{lib/generators/vulcanize/templates → templates}/complete_passenger/config/rubber/rubber-complete.yml +1 -1
  94. data/{generators/vulcanize/templates → templates}/complete_passenger/templates.rb +0 -0
  95. data/{generators/vulcanize/templates → templates}/complete_passenger/templates.yml +4 -2
  96. data/{generators/vulcanize/templates → templates}/complete_passenger_mysql/templates.yml +0 -0
  97. data/{generators/vulcanize/templates → templates}/complete_passenger_nginx/config/rubber/role/haproxy/haproxy-passenger.conf +0 -0
  98. data/{generators/vulcanize/templates → templates}/complete_passenger_nginx/config/rubber/rubber-complete.yml +0 -0
  99. data/{generators/vulcanize/templates → templates}/complete_passenger_nginx/templates.rb +0 -0
  100. data/{generators/vulcanize/templates → templates}/complete_passenger_nginx/templates.yml +2 -2
  101. data/{generators/vulcanize/templates → templates}/complete_passenger_nginx_mysql/templates.yml +0 -0
  102. data/{generators/vulcanize/templates → templates}/complete_passenger_nginx_postgresql/templates.yml +0 -0
  103. data/{generators/vulcanize/templates → templates}/complete_passenger_postgresql/templates.yml +0 -0
  104. data/{generators/vulcanize/templates → templates}/cruise/config/rubber/deploy-cruise.rb +0 -0
  105. data/{generators/vulcanize/templates → templates}/cruise/config/rubber/role/cruise/cruise +0 -0
  106. data/{generators/vulcanize/templates → templates}/cruise/config/rubber/role/cruise/my.cnf +0 -0
  107. data/{generators/vulcanize/templates → templates}/cruise/config/rubber/role/cruise/production.rb +0 -0
  108. data/{generators/vulcanize/templates → templates}/cruise/config/rubber/role/cruise/site_config.rb +1 -1
  109. data/{generators/vulcanize/templates → templates}/cruise/config/rubber/role/web_tools/cruise-nginx.conf +0 -0
  110. data/{generators/vulcanize/templates → templates}/cruise/config/rubber/rubber-cruise.yml +6 -0
  111. data/{generators/vulcanize/templates → templates}/cruise/templates.yml +0 -0
  112. data/templates/elasticsearch/config/rubber/deploy-elasticsearch.rb +47 -0
  113. data/templates/elasticsearch/config/rubber/role/elasticsearch/elasticsearch-upstart.conf +23 -0
  114. data/templates/elasticsearch/config/rubber/role/elasticsearch/elasticsearch.yml +348 -0
  115. data/templates/elasticsearch/config/rubber/role/elasticsearch/logging.yml +48 -0
  116. data/templates/elasticsearch/config/rubber/rubber-elasticsearch.yml +12 -0
  117. data/templates/elasticsearch/templates.yml +2 -0
  118. data/templates/graphite/config/rubber/deploy-graphite.rb +255 -0
  119. data/templates/graphite/config/rubber/role/collectd/graphite-collectd.conf +19 -0
  120. data/templates/graphite/config/rubber/role/graphite_server/carbon.conf +232 -0
  121. data/templates/graphite/config/rubber/role/graphite_server/graphite-collectd-ping.conf +11 -0
  122. data/templates/graphite/config/rubber/role/graphite_server/graphite_server-upstart.conf +16 -0
  123. data/templates/graphite/config/rubber/role/graphite_server/storage-schemas.conf +19 -0
  124. data/templates/graphite/config/rubber/role/graphite_web/crontab +8 -0
  125. data/templates/graphite/config/rubber/role/graphite_web/dashboard.conf +60 -0
  126. data/templates/graphite/config/rubber/role/graphite_web/graphite-vhost.conf +62 -0
  127. data/templates/graphite/config/rubber/role/graphite_web/graphite.wsgi +10 -0
  128. data/templates/graphite/config/rubber/role/graphite_web/local_settings.py +98 -0
  129. data/templates/graphite/config/rubber/rubber-graphite.yml +20 -0
  130. data/templates/graphite/templates.yml +1 -0
  131. data/templates/graylog/config/initializers/graylog.rb +53 -0
  132. data/templates/graylog/config/rubber/deploy-graylog.rb +118 -0
  133. data/templates/graylog/config/rubber/role/common/graylog-rsyslog.conf +32 -0
  134. data/templates/graylog/config/rubber/role/graylog_server/graylog2.conf +67 -0
  135. data/templates/graylog/config/rubber/role/graylog_server/graylog_server-upstart.conf +22 -0
  136. data/templates/graylog/config/rubber/role/graylog_web/crontab +9 -0
  137. data/templates/graylog/config/rubber/role/graylog_web/email.yml +16 -0
  138. data/templates/graylog/config/rubber/role/graylog_web/general.yml +27 -0
  139. data/templates/graylog/config/rubber/role/graylog_web/graylog_web-upstart.conf +21 -0
  140. data/templates/graylog/config/rubber/role/graylog_web/mongoid.yml +28 -0
  141. data/templates/graylog/config/rubber/rubber-graylog.yml +42 -0
  142. data/templates/graylog/templates.rb +5 -0
  143. data/templates/graylog/templates.yml +5 -0
  144. data/{lib/generators/vulcanize/templates → templates}/haproxy/config/rubber/deploy-haproxy.rb +2 -2
  145. data/{generators/vulcanize/templates → templates}/haproxy/config/rubber/role/haproxy/haproxy-base.conf +0 -0
  146. data/{generators/vulcanize/templates → templates}/haproxy/config/rubber/role/haproxy/haproxy-default.conf +0 -0
  147. data/{generators/vulcanize/templates → templates}/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +0 -0
  148. data/{generators/vulcanize/templates → templates}/haproxy/config/rubber/role/haproxy/syslogd-default.conf +0 -0
  149. data/{generators/vulcanize/templates → templates}/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +0 -0
  150. data/templates/haproxy/config/rubber/role/web_tools/rubber-web-tools-haproxy.html +18 -0
  151. data/{generators/vulcanize/templates → templates}/haproxy/config/rubber/rubber-haproxy.yml +0 -0
  152. data/{generators/vulcanize/templates → templates}/haproxy/templates.yml +0 -0
  153. data/{generators/vulcanize/templates → templates}/jetty/config/rubber/deploy-jetty.rb +0 -0
  154. data/{generators/vulcanize/templates → templates}/jetty/config/rubber/role/jetty/jetty.sh +0 -0
  155. data/{generators/vulcanize/templates → templates}/jetty/config/rubber/role/jetty/jetty.xml +0 -0
  156. data/{generators/vulcanize/templates → templates}/jetty/config/rubber/rubber-jetty.yml +0 -0
  157. data/{generators/vulcanize/templates → templates}/jetty/templates.yml +0 -0
  158. data/{generators/vulcanize/templates → templates}/memcached/config/memcached.yml +0 -0
  159. data/{generators/vulcanize/templates → templates}/memcached/config/rubber/common/memcached.yml +2 -2
  160. data/{generators/vulcanize/templates → templates}/memcached/config/rubber/role/memcached/memcached.conf +0 -0
  161. data/{generators/vulcanize/templates → templates}/memcached/config/rubber/rubber-memcached.yml +0 -0
  162. data/{generators/vulcanize/templates → templates}/memcached/templates.yml +0 -0
  163. data/{generators/vulcanize/templates → templates}/minimal_mysql/templates.yml +0 -0
  164. data/{generators/vulcanize/templates → templates}/minimal_nodb/templates.yml +0 -0
  165. data/{generators/vulcanize/templates → templates}/minimal_passenger_nginx/config/rubber/rubber-complete.yml +0 -0
  166. data/{generators/vulcanize/templates → templates}/minimal_passenger_nginx/templates.yml +0 -0
  167. data/{lib/generators/vulcanize/templates → templates}/mongodb/config/rubber/deploy-mongodb.rb +17 -14
  168. data/templates/mongodb/config/rubber/role/mongodb/mongodb-defaults.conf +5 -0
  169. data/{lib/generators/vulcanize/templates → templates}/mongodb/config/rubber/role/mongodb/mongodb.conf +4 -1
  170. data/{generators/vulcanize/templates → templates}/mongodb/config/rubber/rubber-mongodb.yml +0 -0
  171. data/templates/mongodb/templates.yml +1 -0
  172. data/{generators/vulcanize/templates → templates}/mongrel/config/rubber/deploy-mongrel.rb +1 -1
  173. data/{generators/vulcanize/templates → templates}/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +3 -3
  174. data/{lib/generators/vulcanize/templates → templates}/mongrel/config/rubber/rubber-mongrel.yml +1 -1
  175. data/{generators/vulcanize/templates → templates}/mongrel/templates.yml +0 -0
  176. data/{lib/generators/vulcanize/templates → templates}/monit/config/rubber/deploy-monit.rb +4 -4
  177. data/{lib/generators/vulcanize/templates/apache → templates/monit}/config/rubber/role/apache/monit-apache.conf +1 -1
  178. data/{generators/vulcanize/templates/cassandra → templates/monit}/config/rubber/role/cassandra/monit-cassandra.conf +1 -1
  179. data/templates/monit/config/rubber/role/elasticsearch/monit-elasticsearch.conf +8 -0
  180. data/templates/monit/config/rubber/role/graphite_server/monit-graphite_server.conf +8 -0
  181. data/templates/monit/config/rubber/role/graylog_server/monit-graylog_server.conf +8 -0
  182. data/templates/monit/config/rubber/role/graylog_web/monit-graylog_web.conf +8 -0
  183. data/{generators/vulcanize/templates/haproxy → templates/monit}/config/rubber/role/haproxy/monit-haproxy.conf +1 -1
  184. data/{generators/vulcanize/templates/jetty → templates/monit}/config/rubber/role/jetty/monit-jetty.conf +1 -1
  185. data/{lib/generators/vulcanize/templates/mongodb/config/rubber/role/mongodb/monit-mongodb.cnf → templates/monit/config/rubber/role/mongodb/monit-mongodb.conf} +2 -2
  186. data/{generators/vulcanize/templates/mongrel → templates/monit}/config/rubber/role/mongrel/monit-mongrel.conf +4 -4
  187. data/{generators/vulcanize/templates/monit/config/rubber/common → templates/monit/config/rubber/role/monit}/monit-default.conf +0 -0
  188. data/{generators/vulcanize/templates/base/config/rubber/common → templates/monit/config/rubber/role/monit}/monit-postfix.conf +0 -0
  189. data/{generators/vulcanize/templates/monit/config/rubber/common → templates/monit/config/rubber/role/monit}/monit.conf +0 -0
  190. data/{generators/vulcanize/templates/munin/config/rubber/common → templates/monit/config/rubber/role/munin}/monit-munin.conf +0 -0
  191. data/{lib/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf → templates/monit/config/rubber/role/mysql/monit-mysql.conf} +1 -1
  192. data/{lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf → templates/monit/config/rubber/role/mysql_proxy/monit-mysql_proxy.conf} +1 -1
  193. data/{generators/vulcanize/templates/nginx → templates/monit}/config/rubber/role/nginx/monit-nginx.conf +1 -1
  194. data/{generators/vulcanize/templates/passenger_nginx → templates/monit}/config/rubber/role/passenger_nginx/monit-nginx.conf +1 -1
  195. data/{lib/generators/vulcanize/templates/postgresql/config/rubber/role/db → templates/monit/config/rubber/role/postgresql}/monit-postgresql.conf +1 -1
  196. data/templates/monit/config/rubber/role/redis/monit-redis.conf +8 -0
  197. data/templates/monit/config/rubber/role/resque_web/monit-resque_web.conf +10 -0
  198. data/templates/monit/config/rubber/role/resque_worker/monit-resque_pool.conf +8 -0
  199. data/{generators/vulcanize/templates/sphinx → templates/monit}/config/rubber/role/sphinx/monit-sphinx.conf +4 -4
  200. data/{generators/vulcanize/templates → templates}/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +0 -0
  201. data/templates/monit/config/rubber/role/web_tools/rubber-web-tools-monit.html +19 -0
  202. data/templates/monit/config/rubber/rubber-monit.yml +11 -0
  203. data/{generators/vulcanize/templates → templates}/monit/templates.yml +1 -0
  204. data/templates/munin/config/rubber/deploy-munin.rb +81 -0
  205. data/{generators/vulcanize/templates/memcached → templates/munin}/config/rubber/role/memcached/memcached_munin_plugin +0 -0
  206. data/{generators/vulcanize/templates/munin/config/rubber/common → templates/munin/config/rubber/role/munin}/munin-node.conf +0 -0
  207. data/{generators/vulcanize/templates/munin/config/rubber/common → templates/munin/config/rubber/role/munin}/munin-plugins.conf +0 -0
  208. data/{generators/vulcanize/templates/mysql → templates/munin}/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +0 -0
  209. data/{generators/vulcanize/templates/passenger → templates/munin}/config/rubber/role/passenger/munin-passenger-memory.conf +0 -0
  210. data/{generators/vulcanize/templates/passenger → templates/munin}/config/rubber/role/passenger/munin-passenger-sudoers.conf +0 -0
  211. data/{generators/vulcanize/templates/passenger → templates/munin}/config/rubber/role/passenger/munin-passenger.conf +0 -0
  212. data/{generators/vulcanize/templates/passenger_nginx → templates/munin}/config/rubber/role/passenger_nginx/munin-passenger-memory.conf +0 -0
  213. data/{generators/vulcanize/templates/passenger_nginx → templates/munin}/config/rubber/role/passenger_nginx/munin-passenger-sudoers.conf +0 -0
  214. data/{generators/vulcanize/templates/passenger_nginx → templates/munin}/config/rubber/role/passenger_nginx/munin-passenger.conf +0 -0
  215. data/{generators/vulcanize/templates/postgresql/config/rubber/role/db → templates/munin/config/rubber/role/postgresql}/munin-postgresql.conf +0 -0
  216. data/{generators/vulcanize/templates → templates}/munin/config/rubber/role/web_tools/munin-nginx.conf +0 -0
  217. data/{lib/generators/vulcanize/templates → templates}/munin/config/rubber/role/web_tools/munin-plugins.conf +3 -3
  218. data/{generators/vulcanize/templates → templates}/munin/config/rubber/role/web_tools/munin.conf +0 -0
  219. data/templates/munin/config/rubber/role/web_tools/rubber-web-tools-munin.html +16 -0
  220. data/templates/munin/config/rubber/rubber-munin.yml +12 -0
  221. data/{lib/generators/vulcanize/templates → templates}/munin/script/munin/example_mysql_query.rb +1 -1
  222. data/{lib/generators/vulcanize/templates → templates}/munin/script/munin/example_simple.rb +1 -1
  223. data/{generators/vulcanize/templates → templates}/munin/templates.yml +1 -0
  224. data/{generators/vulcanize/templates → templates}/mysql/config/rubber/common/database.yml +3 -3
  225. data/{lib/generators/vulcanize/templates → templates}/mysql/config/rubber/deploy-mysql.rb +1 -15
  226. data/{generators/vulcanize/templates → templates}/mysql/config/rubber/role/db/apparmor-mysql.conf +0 -0
  227. data/{lib/generators/vulcanize/templates → templates}/mysql/config/rubber/role/db/crontab +3 -1
  228. data/{generators/vulcanize/templates → templates}/mysql/config/rubber/role/db/my.cnf +0 -0
  229. data/{generators/vulcanize/templates → templates}/mysql/config/rubber/rubber-mysql.yml +9 -10
  230. data/{generators/vulcanize/templates → templates}/mysql/templates.yml +0 -0
  231. data/{lib/generators/vulcanize/templates → templates}/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +1 -1
  232. data/{generators/vulcanize/templates → templates}/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +3 -3
  233. data/{generators/vulcanize/templates → templates}/mysql_cluster/config/rubber/role/mysql_data/my.cnf +0 -0
  234. data/{generators/vulcanize/templates → templates}/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +0 -0
  235. data/{generators/vulcanize/templates → templates}/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +0 -0
  236. data/{lib/generators/vulcanize/templates → templates}/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +6 -3
  237. data/{generators/vulcanize/templates → templates}/mysql_cluster/templates.yml +0 -0
  238. data/{generators/vulcanize/templates → templates}/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +0 -0
  239. data/{lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common → templates/mysql_proxy/config/rubber/mysql_proxy}/database.yml +3 -3
  240. data/{generators/vulcanize/templates/mysql_proxy/config/rubber/common → templates/mysql_proxy/config/rubber/mysql_proxy}/mysql-proxy +0 -0
  241. data/{generators/vulcanize/templates/mysql_proxy/config/rubber/common → templates/mysql_proxy/config/rubber/mysql_proxy}/mysql-proxy.conf +0 -0
  242. data/{generators/vulcanize/templates/mysql_proxy/config/rubber/common → templates/mysql_proxy/config/rubber/mysql_proxy}/mysql-proxy.lua +0 -0
  243. data/{generators/vulcanize/templates → templates}/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +3 -0
  244. data/{generators/vulcanize/templates → templates}/mysql_proxy/templates.yml +0 -0
  245. data/{generators/vulcanize/templates → templates}/nginx/config/rubber/deploy-nginx.rb +0 -0
  246. data/{generators/vulcanize/templates → templates}/nginx/config/rubber/role/nginx/crontab +1 -1
  247. data/{generators/vulcanize/templates → templates}/nginx/config/rubber/role/nginx/nginx.conf +0 -0
  248. data/{lib/generators/vulcanize/templates → templates}/nginx/config/rubber/role/web_tools/nginx-tools.conf +8 -5
  249. data/{generators/vulcanize/templates → templates}/nginx/config/rubber/role/web_tools/tools-index.html +7 -1
  250. data/{generators/vulcanize/templates → templates}/nginx/config/rubber/role/web_tools/tools-nginx.auth +1 -1
  251. data/{generators/vulcanize/templates → templates}/nginx/config/rubber/rubber-nginx.yml +0 -0
  252. data/{generators/vulcanize/templates → templates}/nginx/templates.yml +0 -0
  253. data/{generators/vulcanize/templates → templates}/passenger/config/rubber/deploy-passenger.rb +0 -0
  254. data/{generators/vulcanize/templates → templates}/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +5 -5
  255. data/{lib/generators/vulcanize/templates → templates}/passenger/config/rubber/role/passenger/passenger.conf +2 -2
  256. data/{lib/generators/vulcanize/templates → templates}/passenger/config/rubber/rubber-passenger.yml +2 -1
  257. data/{generators/vulcanize/templates → templates}/passenger/templates.yml +0 -0
  258. data/{lib/generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/deploy-passenger_nginx.rb +1 -2
  259. data/{lib/generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/passenger_nginx/application.conf +3 -3
  260. data/{generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/passenger_nginx/crontab +1 -1
  261. data/{generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/passenger_nginx/nginx +0 -0
  262. data/{lib/generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/passenger_nginx/nginx.conf +2 -2
  263. data/{generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/passenger_nginx/passenger_nginx.conf +2 -2
  264. data/{generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/web_tools/nginx-tools.conf +8 -5
  265. data/{lib/generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/web_tools/tools-index.html +7 -1
  266. data/{generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/role/web_tools/tools-nginx.auth +1 -1
  267. data/{lib/generators/vulcanize/templates → templates}/passenger_nginx/config/rubber/rubber-passenger_nginx.yml +1 -1
  268. data/{generators/vulcanize/templates → templates}/passenger_nginx/templates.yml +0 -0
  269. data/{lib/generators/vulcanize/templates → templates}/postgresql/config/rubber/common/database.yml +2 -2
  270. data/{lib/generators/vulcanize/templates → templates}/postgresql/config/rubber/deploy-postgresql.rb +27 -47
  271. data/{generators/vulcanize/templates → templates}/postgresql/config/rubber/role/db/crontab +3 -1
  272. data/templates/postgresql/config/rubber/role/db/pg_hba.conf +98 -0
  273. data/{generators/vulcanize/templates → templates}/postgresql/config/rubber/role/db/postgresql-sysctl.conf +0 -0
  274. data/{lib/generators/vulcanize/templates → templates}/postgresql/config/rubber/role/db/postgresql.conf +50 -20
  275. data/{lib/generators/vulcanize/templates → templates}/postgresql/config/rubber/role/postgresql_slave/recovery.conf +34 -19
  276. data/{generators/vulcanize/templates → templates}/postgresql/config/rubber/rubber-postgresql.yml +13 -13
  277. data/{generators/vulcanize/templates → templates}/postgresql/templates.yml +0 -0
  278. data/templates/redis/config/rubber/deploy-redis.rb +79 -0
  279. data/{lib/generators/vulcanize/templates → templates}/redis/config/rubber/role/redis/crontab +3 -1
  280. data/{generators/vulcanize/templates → templates}/redis/config/rubber/role/redis/redis-sysctl.conf +0 -0
  281. data/templates/redis/config/rubber/role/redis/redis-upstart.conf +23 -0
  282. data/{generators/vulcanize/templates → templates}/redis/config/rubber/role/redis/redis.conf +62 -9
  283. data/templates/redis/config/rubber/rubber-redis.yml +17 -0
  284. data/{generators/vulcanize/templates → templates}/redis/templates.yml +0 -0
  285. data/{generators/vulcanize/templates → templates}/resque/config/initializers/resque.rb +0 -0
  286. data/templates/resque/config/resque-pool.yml +4 -0
  287. data/templates/resque/config/rubber/common/resque.yml +5 -0
  288. data/templates/resque/config/rubber/deploy-resque.rb +190 -0
  289. data/templates/resque/config/rubber/role/resque_web/resque-web-upstart.conf +20 -0
  290. data/templates/resque/config/rubber/role/resque_worker/resque-pool-upstart.conf +50 -0
  291. data/templates/resque/config/rubber/role/resque_worker/resque-pool.yml +6 -0
  292. data/{generators/vulcanize/templates → templates}/resque/config/rubber/rubber-resque.yml +11 -1
  293. data/templates/resque/lib/tasks/resque.rake +18 -0
  294. data/templates/resque/templates.rb +2 -0
  295. data/{generators/vulcanize/templates → templates}/resque/templates.yml +0 -0
  296. data/{lib/generators/vulcanize/templates → templates}/sphinx/config/rubber/common/sphinx.yml +9 -9
  297. data/{generators/vulcanize/templates → templates}/sphinx/config/rubber/deploy-sphinx.rb +1 -1
  298. data/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  299. data/{generators/vulcanize/templates → templates}/sphinx/config/rubber/rubber-sphinx.yml +0 -0
  300. data/{generators/vulcanize/templates → templates}/sphinx/templates.yml +0 -0
  301. data/templates/unicorn/config/rubber/deploy-unicorn.rb +35 -0
  302. data/templates/unicorn/config/rubber/role/nginx/unicorn_nginx.conf +56 -0
  303. data/templates/unicorn/config/rubber/role/unicorn/unicorn.rb +79 -0
  304. data/templates/unicorn/config/rubber/rubber-unicorn.yml +5 -0
  305. data/templates/unicorn/templates.yml +3 -0
  306. data/test/cloud/aws_table_store_test.rb +172 -0
  307. data/test/cloud/aws_test.rb +33 -0
  308. data/test/cloud/fog_storage_test.rb +183 -0
  309. data/test/cloud/fog_test.rb +34 -0
  310. data/test/command_test.rb +85 -0
  311. data/test/dns/fog_test.rb +131 -0
  312. data/test/environment_test.rb +135 -0
  313. data/test/fixtures/basic/common/bar.conf +4 -0
  314. data/test/fixtures/basic/common/foo.conf +4 -0
  315. data/test/fixtures/basic/host/host1/foo.conf +4 -0
  316. data/test/fixtures/basic/host/host2/foo.conf +4 -0
  317. data/test/fixtures/basic/role/role1/foo.conf +4 -0
  318. data/test/fixtures/basic/role/role2/foo.conf +4 -0
  319. data/test/fixtures/basic/rubber-extra.yml +1 -0
  320. data/test/fixtures/basic/rubber.yml +26 -0
  321. data/test/fixtures/expansion/rubber.yml +34 -0
  322. data/test/fixtures/generator_order/common/a_first.conf +5 -0
  323. data/test/fixtures/generator_order/common/z_last.conf +5 -0
  324. data/test/fixtures/generator_order/host/host1/a_first.conf +5 -0
  325. data/test/fixtures/generator_order/host/host1/z_last.conf +5 -0
  326. data/test/fixtures/generator_order/role/role1/a_first.conf +5 -0
  327. data/test/fixtures/generator_order/role/role1/z_last.conf +5 -0
  328. data/test/fixtures/generator_order/role/role2/a_first.conf +5 -0
  329. data/test/fixtures/generator_order/role/role2/z_last.conf +5 -0
  330. data/test/fixtures/instance_expansion/instance-test.yml +20 -0
  331. data/test/fixtures/instance_expansion/rubber.yml +1 -0
  332. data/test/fixtures/nested/rubber.yml +9 -0
  333. data/test/fixtures/secret/rubber.yml +2 -0
  334. data/test/fixtures/secret/secret.yml +2 -0
  335. data/test/generator_test.rb +365 -0
  336. data/test/instance_test.rb +293 -0
  337. data/test/test-rails-template.rb +35 -0
  338. data/test/test_helper.rb +19 -0
  339. data/test/util_test.rb +79 -0
  340. metadata +490 -508
  341. data/VERSION +0 -1
  342. data/bin/vulcanize +0 -25
  343. data/generators/vulcanize/USAGE +0 -6
  344. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +0 -7
  345. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +0 -7
  346. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +0 -34
  347. data/generators/vulcanize/templates/base/Capfile +0 -14
  348. data/generators/vulcanize/templates/base/Rakefile +0 -27
  349. data/generators/vulcanize/templates/base/config/deploy.rb +0 -56
  350. data/generators/vulcanize/templates/base/config/rubber/common/crontab +0 -21
  351. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +0 -96
  352. data/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +0 -97
  353. data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +0 -78
  354. data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +0 -39
  355. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +0 -263
  356. data/generators/vulcanize/templates/base/lib/tasks/rubber.rake +0 -15
  357. data/generators/vulcanize/templates/base/script/cron-rake +0 -18
  358. data/generators/vulcanize/templates/base/script/cron-runner +0 -18
  359. data/generators/vulcanize/templates/base/script/cron-sh +0 -67
  360. data/generators/vulcanize/templates/base/templates.rb +0 -11
  361. data/generators/vulcanize/templates/base/templates.yml +0 -6
  362. data/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +0 -88
  363. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +0 -41
  364. data/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +0 -6
  365. data/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +0 -40
  366. data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +0 -45
  367. data/generators/vulcanize/templates/mongodb/config/rubber/deploy-mongodb.rb +0 -53
  368. data/generators/vulcanize/templates/mongodb/config/rubber/role/mongodb/mongodb.conf +0 -89
  369. data/generators/vulcanize/templates/mongodb/config/rubber/role/mongodb/monit-mongodb.cnf +0 -10
  370. data/generators/vulcanize/templates/mongodb/templates.yml +0 -3
  371. data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +0 -9
  372. data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +0 -33
  373. data/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +0 -6
  374. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +0 -46
  375. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +0 -31
  376. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +0 -8
  377. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +0 -55
  378. data/generators/vulcanize/templates/munin/script/munin/example_simple.rb +0 -24
  379. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +0 -169
  380. data/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +0 -14
  381. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +0 -10
  382. data/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +0 -13
  383. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +0 -10
  384. data/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +0 -32
  385. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +0 -16
  386. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +0 -10
  387. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +0 -55
  388. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +0 -41
  389. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +0 -15
  390. data/generators/vulcanize/templates/passenger_nginx/config/rubber/deploy-passenger_nginx.rb +0 -86
  391. data/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/application.conf +0 -30
  392. data/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx.conf +0 -65
  393. data/generators/vulcanize/templates/passenger_nginx/config/rubber/role/web_tools/tools-index.html +0 -34
  394. data/generators/vulcanize/templates/passenger_nginx/config/rubber/rubber-passenger_nginx.yml +0 -20
  395. data/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +0 -12
  396. data/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +0 -160
  397. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +0 -10
  398. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +0 -90
  399. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +0 -544
  400. data/generators/vulcanize/templates/postgresql/config/rubber/role/postgresql_slave/recovery.conf +0 -120
  401. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +0 -88
  402. data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +0 -15
  403. data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +0 -8
  404. data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +0 -13
  405. data/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +0 -5
  406. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +0 -71
  407. data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +0 -14
  408. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +0 -19
  409. data/generators/vulcanize/templates/resque/script/resque_worker_management.rb +0 -144
  410. data/generators/vulcanize/templates/resque/templates.rb +0 -1
  411. data/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +0 -46
  412. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +0 -11
  413. data/generators/vulcanize/vulcanize_generator.rb +0 -184
  414. data/lib/generators/vulcanize/USAGE +0 -6
  415. data/lib/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +0 -51
  416. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +0 -10
  417. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +0 -9
  418. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +0 -6
  419. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +0 -8
  420. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +0 -52
  421. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +0 -79
  422. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +0 -34
  423. data/lib/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +0 -6
  424. data/lib/generators/vulcanize/templates/apache/templates.yml +0 -1
  425. data/lib/generators/vulcanize/templates/base/Rakefile +0 -27
  426. data/lib/generators/vulcanize/templates/base/config/rubber/common/crontab +0 -21
  427. data/lib/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +0 -8
  428. data/lib/generators/vulcanize/templates/base/config/rubber/common/rsyslog.conf +0 -71
  429. data/lib/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +0 -13
  430. data/lib/generators/vulcanize/templates/base/lib/tasks/rubber.rake +0 -15
  431. data/lib/generators/vulcanize/templates/base/script/cron-rake +0 -18
  432. data/lib/generators/vulcanize/templates/base/script/cron-runner +0 -18
  433. data/lib/generators/vulcanize/templates/base/script/cron-sh +0 -67
  434. data/lib/generators/vulcanize/templates/base/templates.rb +0 -11
  435. data/lib/generators/vulcanize/templates/base/templates.yml +0 -6
  436. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +0 -60
  437. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +0 -210
  438. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +0 -45
  439. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +0 -8
  440. data/lib/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +0 -18
  441. data/lib/generators/vulcanize/templates/cassandra/templates.yml +0 -1
  442. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +0 -23
  443. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +0 -113
  444. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +0 -21
  445. data/lib/generators/vulcanize/templates/complete_passenger/templates.rb +0 -9
  446. data/lib/generators/vulcanize/templates/complete_passenger/templates.yml +0 -9
  447. data/lib/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +0 -4
  448. data/lib/generators/vulcanize/templates/complete_passenger_nginx/config/rubber/role/haproxy/haproxy-passenger.conf +0 -21
  449. data/lib/generators/vulcanize/templates/complete_passenger_nginx/config/rubber/rubber-complete.yml +0 -38
  450. data/lib/generators/vulcanize/templates/complete_passenger_nginx/templates.rb +0 -8
  451. data/lib/generators/vulcanize/templates/complete_passenger_nginx/templates.yml +0 -8
  452. data/lib/generators/vulcanize/templates/complete_passenger_nginx_mysql/templates.yml +0 -4
  453. data/lib/generators/vulcanize/templates/complete_passenger_nginx_postgresql/templates.yml +0 -4
  454. data/lib/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +0 -4
  455. data/lib/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +0 -72
  456. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +0 -40
  457. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +0 -165
  458. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +0 -8
  459. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +0 -76
  460. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +0 -11
  461. data/lib/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +0 -18
  462. data/lib/generators/vulcanize/templates/cruise/templates.yml +0 -1
  463. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +0 -26
  464. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +0 -8
  465. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +0 -8
  466. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +0 -11
  467. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +0 -21
  468. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +0 -10
  469. data/lib/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +0 -7
  470. data/lib/generators/vulcanize/templates/haproxy/templates.yml +0 -1
  471. data/lib/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +0 -59
  472. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +0 -589
  473. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +0 -199
  474. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +0 -8
  475. data/lib/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +0 -10
  476. data/lib/generators/vulcanize/templates/jetty/templates.yml +0 -1
  477. data/lib/generators/vulcanize/templates/memcached/config/memcached.yml +0 -28
  478. data/lib/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +0 -14
  479. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +0 -52
  480. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +0 -249
  481. data/lib/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +0 -7
  482. data/lib/generators/vulcanize/templates/memcached/templates.yml +0 -1
  483. data/lib/generators/vulcanize/templates/minimal_mysql/templates.yml +0 -7
  484. data/lib/generators/vulcanize/templates/minimal_nodb/templates.yml +0 -6
  485. data/lib/generators/vulcanize/templates/minimal_passenger_nginx/config/rubber/rubber-complete.yml +0 -37
  486. data/lib/generators/vulcanize/templates/minimal_passenger_nginx/templates.yml +0 -4
  487. data/lib/generators/vulcanize/templates/mongodb/config/rubber/rubber-mongodb.yml +0 -8
  488. data/lib/generators/vulcanize/templates/mongodb/templates.yml +0 -3
  489. data/lib/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +0 -75
  490. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +0 -12
  491. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +0 -20
  492. data/lib/generators/vulcanize/templates/mongrel/templates.yml +0 -1
  493. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +0 -15
  494. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +0 -252
  495. data/lib/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +0 -11
  496. data/lib/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +0 -6
  497. data/lib/generators/vulcanize/templates/monit/templates.yml +0 -1
  498. data/lib/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +0 -8
  499. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +0 -48
  500. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +0 -11
  501. data/lib/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +0 -46
  502. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +0 -8
  503. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +0 -116
  504. data/lib/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +0 -8
  505. data/lib/generators/vulcanize/templates/munin/templates.yml +0 -1
  506. data/lib/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +0 -12
  507. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +0 -46
  508. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +0 -163
  509. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +0 -51
  510. data/lib/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +0 -47
  511. data/lib/generators/vulcanize/templates/mysql/templates.yml +0 -1
  512. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +0 -177
  513. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +0 -15
  514. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +0 -39
  515. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +0 -10
  516. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +0 -23
  517. data/lib/generators/vulcanize/templates/mysql_cluster/templates.yml +0 -1
  518. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +0 -154
  519. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +0 -10
  520. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +0 -5
  521. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +0 -52
  522. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +0 -11
  523. data/lib/generators/vulcanize/templates/mysql_proxy/templates.yml +0 -1
  524. data/lib/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +0 -45
  525. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +0 -9
  526. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +0 -7
  527. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +0 -42
  528. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +0 -30
  529. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +0 -7
  530. data/lib/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +0 -10
  531. data/lib/generators/vulcanize/templates/nginx/templates.yml +0 -1
  532. data/lib/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +0 -51
  533. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +0 -34
  534. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +0 -47
  535. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +0 -48
  536. data/lib/generators/vulcanize/templates/passenger/templates.yml +0 -3
  537. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/crontab +0 -8
  538. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/monit-nginx.conf +0 -7
  539. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/munin-passenger-memory.conf +0 -34
  540. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/munin-passenger-sudoers.conf +0 -8
  541. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/munin-passenger.conf +0 -47
  542. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx +0 -101
  543. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/passenger_nginx/passenger_nginx.conf +0 -30
  544. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/web_tools/nginx-tools.conf +0 -55
  545. data/lib/generators/vulcanize/templates/passenger_nginx/config/rubber/role/web_tools/tools-nginx.auth +0 -7
  546. data/lib/generators/vulcanize/templates/passenger_nginx/templates.yml +0 -1
  547. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +0 -14
  548. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/munin-postgresql.conf +0 -7
  549. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +0 -90
  550. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +0 -6
  551. data/lib/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +0 -45
  552. data/lib/generators/vulcanize/templates/postgresql/templates.yml +0 -1
  553. data/lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +0 -88
  554. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +0 -8
  555. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis-sysctl.conf +0 -7
  556. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +0 -434
  557. data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +0 -13
  558. data/lib/generators/vulcanize/templates/redis/templates.yml +0 -1
  559. data/lib/generators/vulcanize/templates/resque/config/initializers/resque.rb +0 -15
  560. data/lib/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +0 -5
  561. data/lib/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +0 -71
  562. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +0 -14
  563. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +0 -19
  564. data/lib/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +0 -18
  565. data/lib/generators/vulcanize/templates/resque/script/resque_worker_management.rb +0 -144
  566. data/lib/generators/vulcanize/templates/resque/templates.rb +0 -1
  567. data/lib/generators/vulcanize/templates/resque/templates.yml +0 -3
  568. data/lib/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +0 -112
  569. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +0 -11
  570. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +0 -13
  571. data/lib/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +0 -6
  572. data/lib/generators/vulcanize/templates/sphinx/templates.yml +0 -1
  573. data/lib/generators/vulcanize/vulcanize_generator.rb +0 -184
  574. data/lib/rubber/tasks/rubber.rb +0 -281
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - jruby-18mode # JRuby in 1.8 mode
7
+ - jruby-19mode # JRuby in 1.9 mode
8
+ - rbx-18mode
9
+ # - rbx-19mode
10
+ # script: bundle exec rspec spec
data/CHANGELOG CHANGED
@@ -1,4 +1,72 @@
1
+ 2.0.0.pre1 (02/03/2012)
2
+ ----------
3
+
4
+ New Features:
5
+ ============
6
+
7
+ Refactored cloud layer to use fog, implement rubber use of aws/s3 with fog
8
+ Abstract out s3 to go through rubber cloud layer (fog)
9
+ Allow simpledb, s3 or alternate file for instance storage, with backups to same
10
+ Added Graylog recipe
11
+ Added Elasticsearch recipe
12
+ Added Unicorn recipe [Thanks Alex Kremer]
13
+ Added Graphite recipe
14
+ Added Collectd recipe
15
+ Added Graylog to complete_passenger template
16
+ Make collectd/graphite default instead of munin
17
+ Use resque-pool to manage resque workers
18
+ Option to reboot if neccessary after package update
19
+ Added a rubber binary and used it for running everything (cron, etc, removed dependency on rake)
20
+
21
+ Improvements:
22
+ ============
23
+
24
+ Start using upstart for all daemons (complete_passenger_postgresql, resque, graylog)
25
+ Better discovery of roles, default staging instance to these roles
26
+ Replace global RUBBER_* vars in ruby with Rubber.*
27
+ Bump image to latest 10.04
28
+ check harder when determining project roles <7570d47> [Matt Conway]
29
+ Cleanup crosscutting templates (monit, munin, collectd) to be self contained
30
+ Remove hard dependency on nettica and lazy load it
31
+ Upgraded config for PostgreSQL 9.1. [Thanks Kevin Menard]
32
+ Upgraded to redis 2.4. [Thanks Kevin Menard]
33
+ Bump rvm/ruby/rake/rubygems versions
34
+ Bump passenger version
35
+ Asset pipeline support for rails 3.1, cleanup some rails detection issues
36
+ Extract fog dns from zerigo to allow other providers
37
+ Respawn cap/rake with bundler if needed
38
+ Proxy services on their own tools subhost to avoid issues with rewriting paths in CSS and JS [Thanks Kevin Menard]
39
+ Automate web tools proxy mappings for IP aliases in /etc/host, dns, and web_tools index and vhosts files
40
+ Added a rails template for creating a rails app to test rubber
41
+ Include instance_type in rubber:describe
42
+ Replaced zerigo_dns gem usage with fog [Thanks Kevin Menard]
43
+
44
+
45
+ Bug Fixes:
46
+ ==========
47
+
48
+ fix mongo monit to remove pidfile or mongo won't start
49
+ fix mongo bootstrap
50
+ make start/stop consistent, only restart when bootstrap necessary
51
+ fix redis bootstrap
52
+ fix resque_web bootstrap
53
+ update redis to use upstart, thereby removing hackish dual install
54
+ fix rvm installer url
55
+ add back in base postgresql role
56
+ fix db backup host
57
+ validate config set, create image bucket on bundle
58
+ made setup_remote_aliases update /etc/hosts for each host directly, preserve ordering to be consistent with setup_local_aliases
59
+ Fix volume mounting [Thanks Alex Kremer]
60
+ We shouldn't have a dependency on plpythonu. [Thanks Kevin Menard]
61
+ Fixes to nginx/passenger [Thanks Ajay Kumar G]
62
+ make sure open4 gets bundled
63
+ fix create_staging for pre-existing instance
64
+ Ensure Zerigo makes calls using XML in 3.1 [Thanks Alex Kremer]
65
+ Fix suggestion in rubber.yml on how to list availability zones. [Thanks Maxim Chernyak aka hakunin]
66
+ Locked the default version of Ruby down to a particular patch release so by default an entire cluster will use the same ruby [Thanks Kevin Menard]
67
+
1
68
  1.15.0 (09/13/2011)
69
+ -----
2
70
 
3
71
  New Features:
4
72
  ============
@@ -32,7 +100,6 @@ Fixed compatibility issues with the Psych parser used in Ruby 1.9.2 (thanks Kevi
32
100
  Fixed timing issue with multiple resque workers starting (thanks Matt Conway)
33
101
  Fixed an issue with hostnames that happen to be monit commands (thanks Michael Glass)
34
102
 
35
-
36
103
  1.14.1 (06/02/2011)
37
104
  -----
38
105
 
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rubber.gemspec
4
+ gemspec
File without changes
@@ -0,0 +1,89 @@
1
+ gemfile = File.expand_path(File.join(__FILE__, '..', 'Gemfile'))
2
+ if File.exist?(gemfile) && ENV['BUNDLE_GEMFILE'].nil?
3
+ puts "Respawning with 'bundle exec rake'"
4
+ exec("bundle", "exec", "rake", *ARGV)
5
+ end
6
+
7
+ require 'bundler'
8
+ Bundler::GemHelper.install_tasks
9
+
10
+ require 'rake'
11
+ require 'rake/testtask'
12
+
13
+ task :my_release => ['changelog', 'release'] do
14
+ end
15
+
16
+ task :changelog do
17
+
18
+ helper = Bundler::GemHelper.new(Dir.pwd)
19
+ version = "v#{helper.gemspec.version}"
20
+
21
+ changelog_file = 'CHANGELOG'
22
+ entries = ""
23
+
24
+ # Get a list of current tags
25
+ tags = `git tag -l`.split
26
+ tags = tags.sort_by {|t| t[1..-1].split(".").collect {|s| s.to_i } }
27
+ newest_tag = tags[-1]
28
+
29
+ if version == newest_tag
30
+ puts "You need to update version, same as most recent tag: #{version}"
31
+ exit
32
+ end
33
+
34
+ # If we already have a changelog, make the last tag be the
35
+ # last one in the changelog, and the next one be the one
36
+ # following that in the tag list
37
+ newest_changelog_version = nil
38
+ if File.exist?(changelog_file)
39
+ entries = File.read(changelog_file)
40
+ head = entries.split.first
41
+ if head =~ /\d\.\d\.\d/
42
+ newest_changelog_version = "v#{head}"
43
+
44
+ if version == newest_changelog_version
45
+ puts "You need to update version, same as most recent changelog: #{version}"
46
+ exit
47
+ end
48
+
49
+ end
50
+ end
51
+
52
+ # Generate changelog from repo
53
+ log=`git log --pretty='format:%s <%h> [%cn]' #{newest_tag}..HEAD`
54
+
55
+ # Strip out maintenance entries
56
+ log = log.lines.to_a.delete_if do |l|
57
+ l =~ /^Regenerated? gemspec/ ||
58
+ l =~ /^version bump/i ||
59
+ l =~ /^Updated changelog/ ||
60
+ l =~ /^Merged? branch/
61
+ end
62
+
63
+ # Write out changelog file
64
+ File.open(changelog_file, 'w') do |out|
65
+ out.puts version.gsub(/^v/, '')
66
+ out.puts "-----"
67
+ out.puts "\n"
68
+ out.puts log
69
+ out.puts "\n"
70
+ out.puts entries
71
+ end
72
+
73
+ # Commit and push
74
+ unless ENV['NO_PUSH']
75
+ sh "git ci -m'Updated changelog' #{changelog_file}"
76
+ sh "git push"
77
+ end
78
+ end
79
+
80
+ desc 'Test the rubber plugin.'
81
+ Rake::TestTask.new(:test) do |t|
82
+ t.libs << 'lib'
83
+ t.libs << 'test'
84
+ t.pattern = 'test/**/*_test.rb'
85
+ t.verbose = true
86
+ end
87
+
88
+ desc 'Default: run unit tests.'
89
+ task :default => :test
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ env = ENV['RUBBER_ENV'] ||= 'development'
3
+ root = File.expand_path(ENV['RUBBER_ROOT'] || '.')
4
+
5
+ # Only load gemfile if there and contains rubber in order
6
+ # to allow vulcanize to work in bootstrap case
7
+ gemfile = ENV['BUNDLE_GEMFILE'] || "#{root}/Gemfile"
8
+ if File.exists?(gemfile) && File.read(gemfile).lines.grep(/^[^#]*gem.*["']rubber["']/).size > 0
9
+ require "bundler"
10
+ Bundler.setup(:default, env.to_sym)
11
+ end
12
+
13
+ require 'rubber'
14
+ Rubber::initialize(root, env)
15
+
16
+ require 'rubber/cli'
17
+ Rubber::CLI.run
@@ -2,8 +2,6 @@ $:.unshift(File.dirname(__FILE__))
2
2
 
3
3
  module Rubber
4
4
 
5
- @@version = File.read(File.join(File.dirname(__FILE__), '..', 'VERSION')).chomp
6
-
7
5
  def self.initialize(project_root, project_env)
8
6
  return if defined?(RUBBER_ROOT) && defined?(RUBBER_ENV)
9
7
 
@@ -17,7 +15,7 @@ module Rubber
17
15
  # We actually do NOT want the entire rails environment because it
18
16
  # complicates bootstrap (i.e. can't run config to create db because full
19
17
  # rails env needs db to exist as some plugin accesses model or something)
20
- rails_boot_file = File.join(RUBBER_ROOT, 'config', 'boot.rb')
18
+ rails_boot_file = File.join(Rubber.root, 'config', 'boot.rb')
21
19
  require(rails_boot_file) if File.exists? rails_boot_file
22
20
  end
23
21
 
@@ -44,7 +42,7 @@ module Rubber
44
42
  end
45
43
 
46
44
  def self.version
47
- @@version
45
+ Rubber::VERSION
48
46
  end
49
47
 
50
48
  def self.logger
@@ -58,9 +56,17 @@ module Rubber
58
56
  def self.instances
59
57
  Rubber::Configuration.rubber_instances
60
58
  end
59
+
60
+ def self.cloud(capistrano = nil)
61
+ # sharing a Net::HTTP instance across threads doesn't work, so
62
+ # create a new instance per thread
63
+ Rubber::ThreadSafeProxy.new { Rubber::Cloud::get_provider(self.config.cloud_provider || "aws", self.config, capistrano) }
64
+ end
65
+
61
66
  end
62
67
 
63
68
 
69
+ require 'rubber/version'
64
70
  require 'rubber/thread_safe_proxy'
65
71
  require 'rubber/configuration'
66
72
  require 'rubber/environment'
@@ -70,8 +76,8 @@ require 'rubber/util'
70
76
  require 'rubber/cloud'
71
77
  require 'rubber/dns'
72
78
 
73
- if Rubber::Util::is_rails3?
79
+ if defined?(Rails::Railtie)
74
80
  module Rubber
75
81
  require 'rubber/railtie'
76
82
  end
77
- end
83
+ end
@@ -0,0 +1,30 @@
1
+ require "clamp"
2
+
3
+ # require all the rubber commands
4
+ files = Dir[File.expand_path(File.join(File.dirname(__FILE__), 'commands/*.rb'))]
5
+ files.each do |f|
6
+ require f
7
+ end
8
+
9
+ module Rubber
10
+
11
+ class CLI < Clamp::Command
12
+
13
+ # setup clamp subcommands for each rubber command
14
+ command_classes = []
15
+ Rubber::Commands.constants.each do |c|
16
+ clazz = Rubber::Commands.const_get(c)
17
+ if clazz.class == Class && clazz.ancestors.include?(Clamp::Command) &&
18
+ clazz.respond_to?(:subcommand_name) && clazz.respond_to?(:subcommand_description)
19
+ subcommand clazz.subcommand_name, clazz.subcommand_description, clazz
20
+ end
21
+ end
22
+
23
+ option ["-v", "--version"], :flag, "print version" do
24
+ puts Rubber.version
25
+ exit 0
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -6,7 +6,8 @@ module Rubber
6
6
  def self.get_provider(provider, env, capistrano)
7
7
  require "rubber/cloud/#{provider}"
8
8
  clazz = Rubber::Cloud.const_get(provider.capitalize)
9
- return clazz.new(env, capistrano)
9
+ provider_env = env.cloud_providers[provider]
10
+ return clazz.new(provider_env, capistrano)
10
11
  end
11
12
 
12
13
  end
@@ -1,236 +1,48 @@
1
- require 'rubygems'
2
- require 'AWS'
3
- require 'aws/s3'
1
+ require 'rubber/cloud/fog'
2
+ require 'rubber/cloud/aws_table_store'
4
3
 
5
4
  module Rubber
6
5
  module Cloud
7
-
8
- class Aws < Base
9
-
6
+
7
+ class Aws < Fog
8
+
10
9
  def initialize(env, capistrano)
10
+
11
+ credentials = {
12
+ :aws_access_key_id => env.access_key,
13
+ :aws_secret_access_key => env.secret_access_key
14
+ }
15
+
16
+ @table_store = ::Fog::AWS::SimpleDB.new(credentials)
17
+
18
+ credentials[:region] = env.region
19
+ @elb = ::Fog::AWS::ELB.new(credentials)
20
+
21
+ credentials[:provider] = 'AWS'
22
+ env['credentials'] = credentials
11
23
  super(env, capistrano)
12
- @aws_env = env.cloud_providers.aws
13
- @ec2 = AWS::EC2::Base.new(:access_key_id => @aws_env.access_key, :secret_access_key => @aws_env.secret_access_key, :server => @aws_env.server_endpoint)
14
- @ec2elb = AWS::ELB::Base.new(:access_key_id => @aws_env.access_key, :secret_access_key => @aws_env.secret_access_key, :server => @aws_env.server_endpoint)
15
- AWS::S3::Base.establish_connection!(:access_key_id => @aws_env.access_key, :secret_access_key => @aws_env.secret_access_key, :server => @aws_env.server_endpoint)
16
- end
17
-
18
- def create_instance(ami, ami_type, security_groups, availability_zone)
19
- response = @ec2.run_instances(:image_id => ami, :key_name => @aws_env.key_name, :instance_type => ami_type, :security_group => security_groups, :availability_zone => availability_zone)
20
- instance_id = response.instancesSet.item[0].instanceId
21
- return instance_id
22
- end
23
-
24
- def create_spot_instance_request(spot_price, ami, ami_type, security_groups, availability_zone)
25
- response = @ec2.request_spot_instances(:spot_price => spot_price, :image_id => ami, :key_name => @aws_env.key_name, :instance_type => ami_type, :security_group => security_groups, :availability_zone => availability_zone)
26
- request_id = response.spotInstanceRequestSet.item[0].spotInstanceRequestId
27
- return request_id
28
- end
29
-
30
- def describe_instances(instance_id=nil)
31
- instances = []
32
- opts = {}
33
- opts[:instance_id] = instance_id if instance_id
34
-
35
- response = @ec2.describe_instances(opts)
36
- response.reservationSet.item.each do |ritem|
37
- ritem.instancesSet.item.each do |item|
38
- instance = {}
39
- instance[:id] = item.instanceId
40
- instance[:external_host] = item.dnsName
41
- instance[:external_ip] = item.ipAddress
42
- instance[:internal_host] = item.privateDnsName
43
- instance[:internal_ip] = item.privateIpAddress
44
- instance[:state] = item.instanceState.name
45
- instance[:zone] = item.placement.availabilityZone
46
- instance[:platform] = item.platform || 'linux'
47
- instance[:root_device_type] = item.rootDeviceType
48
- instances << instance
49
- end
50
- end if response.reservationSet
51
-
52
- return instances
53
- end
54
-
55
- def destroy_instance(instance_id)
56
- response = @ec2.terminate_instances(:instance_id => instance_id)
57
- end
58
-
59
- def reboot_instance(instance_id)
60
- response = @ec2.reboot_instances(:instance_id => instance_id)
61
24
  end
62
-
63
- def stop_instance(instance_id)
64
- # Don't force the stop process. I.e., allow the instance to flush its file system operations.
65
- response = @ec2.stop_instances(:instance_id => instance_id, :force => false)
66
- end
67
-
68
- def start_instance(instance_id)
69
- response = @ec2.start_instances(:instance_id => instance_id)
70
- end
71
-
72
- def describe_availability_zones
73
- zones = []
74
- response = @ec2.describe_availability_zones()
75
- response.availabilityZoneInfo.item.each do |item|
76
- zone = {}
77
- zone[:name] = item.zoneName
78
- zone[:state] =item.zoneState
79
- zones << zone
80
- end if response.availabilityZoneInfo
81
- return zones
82
- end
83
-
84
- def create_security_group(group_name, group_description)
85
- @ec2.create_security_group(:group_name => group_name, :group_description => group_description)
86
- end
87
-
88
- def describe_security_groups(group_name=nil)
89
- groups = []
90
-
91
- opts = {}
92
- opts[:group_name] = group_name if group_name
93
- response = @ec2.describe_security_groups(opts)
94
-
95
- response.securityGroupInfo.item.each do |item|
96
- group = {}
97
- group[:name] = item.groupName
98
- group[:description] = item.groupDescription
99
-
100
- item.ipPermissions.item.each do |ip_item|
101
- group[:permissions] ||= []
102
- rule = {}
103
-
104
- rule[:protocol] = ip_item.ipProtocol
105
- rule[:from_port] = ip_item.fromPort
106
- rule[:to_port] = ip_item.toPort
107
-
108
- ip_item.groups.item.each do |rule_group|
109
- rule[:source_groups] ||= []
110
- source_group = {}
111
- source_group[:account] = rule_group.userId
112
- source_group[:name] = rule_group.groupName
113
- rule[:source_groups] << source_group
114
- end if ip_item.groups
115
-
116
- ip_item.ipRanges.item.each do |ip_range|
117
- rule[:source_ips] ||= []
118
- rule[:source_ips] << ip_range.cidrIp
119
- end if ip_item.ipRanges
120
-
121
- group[:permissions] << rule
122
- end if item.ipPermissions
123
-
124
- groups << group
125
-
126
- end if response.securityGroupInfo
127
-
128
- return groups
129
- end
130
-
131
- def add_security_group_rule(group_name, protocol, from_port, to_port, source)
132
- opts = {:group_name => group_name}
133
- if source.instance_of? Hash
134
- opts = opts.merge(:source_security_group_name => source[:name], :source_security_group_owner_id => source[:account])
135
- else
136
- opts = opts.merge(:ip_protocol => protocol, :from_port => from_port, :to_port => to_port, :cidr_ip => source)
137
- end
138
- @ec2.authorize_security_group_ingress(opts)
139
- end
140
-
141
- def remove_security_group_rule(group_name, protocol, from_port, to_port, source)
142
- opts = {:group_name => group_name}
143
- if source.instance_of? Hash
144
- opts = opts.merge(:source_security_group_name => source[:name], :source_security_group_owner_id => source[:account])
145
- else
146
- opts = opts.merge(:ip_protocol => protocol, :from_port => from_port, :to_port => to_port, :cidr_ip => source)
147
- end
148
- @ec2.revoke_security_group_ingress(opts)
25
+
26
+ def table_store(table_key)
27
+ return Rubber::Cloud::AwsTableStore.new(@table_store, table_key)
149
28
  end
150
-
151
- def destroy_security_group(group_name)
152
- @ec2.delete_security_group(:group_name => group_name)
153
- end
154
-
155
- def create_static_ip
156
- response = @ec2.allocate_address()
157
- return response.publicIp
158
- end
159
-
160
- def attach_static_ip(ip, instance_id)
161
- response = @ec2.associate_address(:instance_id => instance_id, :public_ip => ip)
162
- return response.return == "true"
163
- end
164
-
165
- def detach_static_ip(ip)
166
- response = @ec2.disassociate_address(:public_ip => ip)
167
- return response.return == "true"
168
- end
169
-
170
- def describe_static_ips(ip=nil)
171
- ips = []
172
- opts = {}
173
- opts[:public_ip] = ip if ip
174
- response = @ec2.describe_addresses(opts)
175
- response.addressesSet.item.each do |item|
176
- ip = {}
177
- ip[:instance_id] = item.instanceId
178
- ip[:ip] = item.publicIp
179
- ips << ip
180
- end if response.addressesSet
181
- return ips
182
- end
183
-
184
- def destroy_static_ip(ip)
185
- response = @ec2.release_address(:public_ip => ip)
186
- return response.return == "true"
187
- end
188
-
189
- def create_volume(size, zone)
190
- response = @ec2.create_volume(:size => size.to_s, :availability_zone => zone)
191
- return response.volumeId
192
- end
193
-
194
- def attach_volume(volume_id, instance_id, device)
195
- response = @ec2.attach_volume(:volume_id => volume_id, :instance_id => instance_id, :device => device)
196
- return response.status
197
- end
198
-
199
- def detach_volume(volume_id)
200
- @ec2.detach_volume(:volume_id => volume_id, :force => 'true')
201
- end
202
-
203
- def describe_volumes(volume_id=nil)
204
- volumes = []
205
- opts = {}
206
- opts[:volume_id] = volume_id if volume_id
207
- response = @ec2.describe_volumes(opts)
208
- response.volumeSet.item.each do |item|
209
- volume = {}
210
- volume[:id] = item.volumeId
211
- volume[:status] = item.status
212
- if item.attachmentSet
213
- attach = item.attachmentSet.item[0]
214
- volume[:attachment_instance_id] = attach.instanceId
215
- volume[:attachment_status] = attach.status
216
- end
217
- volumes << volume
218
- end if response.volumeSet
219
- return volumes
220
- end
221
-
222
- def destroy_volume(volume_id)
223
- @ec2.delete_volume(:volume_id => volume_id)
224
- end
225
-
29
+
226
30
  def create_image(image_name)
227
- ec2_key = @aws_env.key_file
228
- ec2_pk = @aws_env.pk_file
229
- ec2_cert = @aws_env.cert_file
31
+ ec2_key = env.key_file
32
+ ec2_pk = env.pk_file
33
+ ec2_cert = env.cert_file
230
34
  ec2_key_dest = "/mnt/#{File.basename(ec2_key)}"
231
35
  ec2_pk_dest = "/mnt/#{File.basename(ec2_pk)}"
232
36
  ec2_cert_dest = "/mnt/#{File.basename(ec2_cert)}"
233
37
 
38
+ # validate all needed config set
39
+ ["key_file", "pk_file", "cert_file", "account", "secret_access_key", "image_bucket"].each do |k|
40
+ raise "Set #{k} in rubber.yml" unless "#{env[k]}".strip.size > 0
41
+ end
42
+ raise "create_image can only be called from a capistrano scope" unless capistrano
43
+
44
+ storage(env.image_bucket).ensure_bucket
45
+
234
46
  capistrano.put(File.read(ec2_key), ec2_key_dest)
235
47
  capistrano.put(File.read(ec2_pk), ec2_pk_dest)
236
48
  capistrano.put(File.read(ec2_cert), ec2_cert_dest)
@@ -242,7 +54,7 @@ module Rubber
242
54
  rvm use system
243
55
  export RUBYLIB=/usr/lib/site_ruby/
244
56
  unset RUBYOPT
245
- nohup ec2-bundle-vol --batch -d /mnt -k #{ec2_pk_dest} -c #{ec2_cert_dest} -u #{@aws_env.account} -p #{image_name} -r #{arch} &> /tmp/ec2-bundle-vol.log &
57
+ nohup ec2-bundle-vol --batch -d /mnt -k #{ec2_pk_dest} -c #{ec2_cert_dest} -u #{env.account} -p #{image_name} -r #{arch} &> /tmp/ec2-bundle-vol.log &
246
58
  sleep 1
247
59
 
248
60
  echo "Creating image from instance volume..."
@@ -258,106 +70,54 @@ module Rubber
258
70
  export RUBYLIB=/usr/lib/site_ruby/
259
71
  unset RUBYOPT
260
72
  echo "Uploading image to S3..."
261
- ec2-upload-bundle --batch -b #{@aws_env.image_bucket} -m /mnt/#{image_name}.manifest.xml -a #{@aws_env.access_key} -s #{@aws_env.secret_access_key}
73
+ ec2-upload-bundle --batch -b #{env.image_bucket} -m /mnt/#{image_name}.manifest.xml -a #{env.access_key} -s #{env.secret_access_key}
262
74
  CMD
263
75
 
264
- image_location = "#{@aws_env.image_bucket}/#{image_name}.manifest.xml"
265
- response = @ec2.register_image(:image_location => image_location)
266
- return response.imageId
267
- end
268
-
269
- def describe_images(image_id=nil)
270
- images = []
271
- opts = {:owner_id => 'self'}
272
- opts[:image_id] = image_id if image_id
273
- response = @ec2.describe_images(opts)
274
- response.imagesSet.item.each do |item|
275
- image = {}
276
- image[:id] = item.imageId
277
- image[:location] = item.imageLocation
278
- image[:root_device_type] = item.rootDeviceType
279
- images << image
280
- end if response.imagesSet
281
- return images
76
+ image_location = "#{env.image_bucket}/#{image_name}.manifest.xml"
77
+ response = @compute_provider.register_image(image_name,
78
+ "rubber bundled image",
79
+ image_location)
80
+ return response.body["imageId"]
282
81
  end
283
82
 
284
83
  def destroy_image(image_id)
285
- image = describe_images(image_id).first
84
+ image = @compute_provider.images.get(image_id)
286
85
  raise "Could not find image: #{image_id}, aborting destroy_image" if image.nil?
287
- image_location = image[:location]
288
- bucket = image_location.split('/').first
289
- image_name = image_location.split('/').last.gsub(/\.manifest\.xml$/, '')
290
86
 
291
- @ec2.deregister_image(:image_id => image_id)
87
+ location_parts = image.location.split('/')
88
+ bucket = location_parts.first
89
+ image_name = location_parts.last.gsub(/\.manifest\.xml$/, '')
292
90
 
293
- s3_bucket = AWS::S3::Bucket.find(bucket)
294
- s3_bucket.objects(:prefix => image_name).clone.each do |obj|
295
- obj.delete
296
- end
297
- if s3_bucket.empty?
298
- s3_bucket.delete
299
- end
300
- end
91
+ image.deregister
301
92
 
302
- def destroy_spot_instance_request(request_id)
303
- @ec2.cancel_spot_instance_requests :spot_instance_request_id => request_id
93
+ storage(bucket).walk_tree(image_name) do |f|
94
+ f.destroy
95
+ end
304
96
  end
305
97
 
306
98
  def describe_load_balancers(name=nil)
307
99
  lbs = []
308
- opts = {}
309
- opts[:load_balancer_names] = name if name
310
- response = @ec2elb.describe_load_balancers(opts)
311
- response.describeLoadBalancersResult.member.each do |member|
100
+ response = name.nil? ? @elb.load_balancers.all() : [@elb.load_balancers.get(name)].compact
101
+ response.each do |item|
312
102
  lb = {}
313
- lb[:name] = member.loadBalancerName
314
- lb[:dns_name] = member.dNSName
103
+ lb[:name] = item.id
104
+ lb[:dns_name] = item.dns_name
105
+ lb[:zones] = item.availability_zones
315
106
 
316
- member.availabilityZones.member.each do |zone|
317
- lb[:zones] ||= []
318
- lb[:zones] << zone
319
- end
320
-
321
- member.listeners.member.each do |member|
107
+ item.listeners.each do |litem|
322
108
  listener = {}
323
- listener[:protocol] = member.protocol
324
- listener[:port] = member.loadBalancerPort
325
- listener[:instance_port] = member.instancePort
109
+ listener[:protocol] = litem.protocol
110
+ listener[:port] = litem.lb_portPort
111
+ listener[:instance_port] = litem.instance_port
326
112
  lb[:listeners] ||= []
327
113
  lb[:listeners] << listener
328
114
  end
329
115
 
330
116
  lbs << lb
331
- end if response.describeLoadBalancersResult
117
+ end
332
118
  return lbs
333
119
  end
334
120
 
335
- def describe_spot_instance_requests(request_id=nil)
336
- requests = []
337
- opts = {}
338
- opts[:spot_instance_request_id] = request_id if request_id
339
- response = @ec2.describe_spot_instance_requests(opts)
340
- response.spotInstanceRequestSet.item.each do |item|
341
- request = {}
342
- request[:id] = item.spotInstanceRequestId
343
- request[:spot_price] = item.spotPrice
344
- request[:state] = item.state
345
- request[:created_at] = item.createTime
346
- request[:type] = item.launchSpecification.instanceType
347
- request[:image_id] = item.launchSpecification.imageId
348
- request[:instance_id] = item.instanceId
349
- requests << request
350
- end if response.spotInstanceRequestSet
351
- return requests
352
- end
353
-
354
- # resource_id is any Amazon resource ID (e.g., instance ID or volume ID)
355
- # tags is a hash of tag_name => tag_value pairs
356
- def create_tags(resource_id, tags)
357
- # Tags needs to be an array of hashes, not one big hash, so break it down.
358
- @ec2.create_tags(:resource_id => resource_id, :tag => tags.collect { |k, v| { k.to_s => v.to_s } })
359
- end
360
-
361
121
  end
362
122
 
363
123
  end