rubber-jcarnegie 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. data/CHANGELOG +477 -0
  2. data/COPYING +339 -0
  3. data/README +6 -0
  4. data/TODO +11 -0
  5. data/VERSION +1 -0
  6. data/bin/vulcanize +25 -0
  7. data/generators/vulcanize/USAGE +6 -0
  8. data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
  9. data/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
  10. data/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
  11. data/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
  12. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  13. data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +8 -0
  14. data/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
  15. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +79 -0
  16. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  17. data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
  18. data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
  19. data/generators/vulcanize/templates/apache/templates.yml +1 -0
  20. data/generators/vulcanize/templates/base/Capfile +14 -0
  21. data/generators/vulcanize/templates/base/Rakefile +23 -0
  22. data/generators/vulcanize/templates/base/config/deploy.rb +56 -0
  23. data/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
  24. data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  25. data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
  26. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +92 -0
  27. data/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  28. data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
  29. data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +33 -0
  30. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +241 -0
  31. data/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
  32. data/generators/vulcanize/templates/base/script/cron-rake +18 -0
  33. data/generators/vulcanize/templates/base/script/cron-runner +18 -0
  34. data/generators/vulcanize/templates/base/script/cron-sh +67 -0
  35. data/generators/vulcanize/templates/base/templates.rb +11 -0
  36. data/generators/vulcanize/templates/base/templates.yml +6 -0
  37. data/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  38. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
  39. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  40. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  41. data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  42. data/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  43. data/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  44. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  45. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
  46. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  47. data/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
  48. data/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
  49. data/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
  50. data/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  51. data/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  52. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
  53. data/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  54. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
  55. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
  56. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
  57. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
  58. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
  59. data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
  60. data/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
  61. data/generators/vulcanize/templates/cruise/templates.yml +1 -0
  62. data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
  63. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  64. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
  65. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
  66. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +11 -0
  67. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -0
  68. data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
  69. data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
  70. data/generators/vulcanize/templates/haproxy/templates.yml +1 -0
  71. data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  72. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  73. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  74. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  75. data/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  76. data/generators/vulcanize/templates/jetty/templates.yml +1 -0
  77. data/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
  78. data/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
  79. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
  80. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
  81. data/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
  82. data/generators/vulcanize/templates/memcached/templates.yml +1 -0
  83. data/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
  84. data/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
  85. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
  86. data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
  87. data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
  88. data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
  89. data/generators/vulcanize/templates/mongrel/templates.yml +1 -0
  90. data/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
  91. data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +252 -0
  92. data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -0
  93. data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
  94. data/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
  95. data/generators/vulcanize/templates/monit/templates.yml +1 -0
  96. data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
  97. data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
  98. data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
  99. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
  100. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
  101. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
  102. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +115 -0
  103. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
  104. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -0
  105. data/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
  106. data/generators/vulcanize/templates/munin/templates.yml +1 -0
  107. data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +12 -0
  108. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
  109. data/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  110. data/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
  111. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
  112. data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +163 -0
  113. data/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
  114. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +47 -0
  115. data/generators/vulcanize/templates/mysql/templates.yml +1 -0
  116. data/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
  117. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +177 -0
  118. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
  119. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
  120. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
  121. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
  122. data/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
  123. data/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
  124. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
  125. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
  126. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
  127. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
  128. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
  129. data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
  130. data/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
  131. data/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
  132. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
  133. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
  134. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
  135. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  136. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
  137. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  138. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  139. data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
  140. data/generators/vulcanize/templates/nginx/templates.yml +1 -0
  141. data/generators/vulcanize/templates/node/INSTALL_NOTES +20 -0
  142. data/generators/vulcanize/templates/node/config/rubber/deploy-node.rb +33 -0
  143. data/generators/vulcanize/templates/node/config/rubber/rubber-node.yml +1 -0
  144. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +45 -0
  145. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  146. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +8 -0
  147. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  148. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +48 -0
  149. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +41 -0
  150. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
  151. data/generators/vulcanize/templates/passenger/templates.yml +3 -0
  152. data/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  153. data/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +158 -0
  154. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  155. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  156. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/munin-postgresql.conf +7 -0
  157. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  158. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  159. data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +531 -0
  160. data/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  161. data/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  162. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +76 -0
  163. data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  164. data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  165. data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +320 -0
  166. data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +9 -0
  167. data/generators/vulcanize/templates/redis/templates.yml +1 -0
  168. data/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  169. data/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  170. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
  171. data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  172. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  173. data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
  174. data/generators/vulcanize/templates/resque/script/resque_worker_management.rb +144 -0
  175. data/generators/vulcanize/templates/resque/templates.rb +1 -0
  176. data/generators/vulcanize/templates/resque/templates.yml +3 -0
  177. data/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
  178. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
  179. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  180. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +13 -0
  181. data/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
  182. data/generators/vulcanize/templates/sphinx/templates.yml +1 -0
  183. data/generators/vulcanize/vulcanize_generator.rb +184 -0
  184. data/lib/capistrano/hostcmd.rb +12 -0
  185. data/lib/generators/vulcanize/USAGE +6 -0
  186. data/lib/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
  187. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
  188. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
  189. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
  190. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
  191. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +8 -0
  192. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
  193. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +79 -0
  194. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
  195. data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
  196. data/lib/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
  197. data/lib/generators/vulcanize/templates/apache/templates.yml +1 -0
  198. data/lib/generators/vulcanize/templates/base/Capfile +14 -0
  199. data/lib/generators/vulcanize/templates/base/Rakefile +23 -0
  200. data/lib/generators/vulcanize/templates/base/config/deploy.rb +56 -0
  201. data/lib/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
  202. data/lib/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  203. data/lib/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
  204. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +92 -0
  205. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
  206. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
  207. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +33 -0
  208. data/lib/generators/vulcanize/templates/base/config/rubber/rubber.yml +241 -0
  209. data/lib/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
  210. data/lib/generators/vulcanize/templates/base/script/cron-rake +18 -0
  211. data/lib/generators/vulcanize/templates/base/script/cron-runner +18 -0
  212. data/lib/generators/vulcanize/templates/base/script/cron-sh +67 -0
  213. data/lib/generators/vulcanize/templates/base/templates.rb +11 -0
  214. data/lib/generators/vulcanize/templates/base/templates.yml +6 -0
  215. data/lib/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
  216. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
  217. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
  218. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
  219. data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
  220. data/lib/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
  221. data/lib/generators/vulcanize/templates/cassandra/templates.yml +1 -0
  222. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  223. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
  224. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  225. data/lib/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
  226. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
  227. data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
  228. data/lib/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
  229. data/lib/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
  230. data/lib/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
  231. data/lib/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
  232. data/lib/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
  233. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
  234. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
  235. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
  236. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
  237. data/lib/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
  238. data/lib/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
  239. data/lib/generators/vulcanize/templates/cruise/templates.yml +1 -0
  240. data/lib/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
  241. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  242. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
  243. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
  244. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +11 -0
  245. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -0
  246. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
  247. data/lib/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
  248. data/lib/generators/vulcanize/templates/haproxy/templates.yml +1 -0
  249. data/lib/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  250. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  251. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  252. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  253. data/lib/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  254. data/lib/generators/vulcanize/templates/jetty/templates.yml +1 -0
  255. data/lib/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
  256. data/lib/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
  257. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
  258. data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
  259. data/lib/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
  260. data/lib/generators/vulcanize/templates/memcached/templates.yml +1 -0
  261. data/lib/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
  262. data/lib/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
  263. data/lib/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
  264. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
  265. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
  266. data/lib/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
  267. data/lib/generators/vulcanize/templates/mongrel/templates.yml +1 -0
  268. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
  269. data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +252 -0
  270. data/lib/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -0
  271. data/lib/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
  272. data/lib/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
  273. data/lib/generators/vulcanize/templates/monit/templates.yml +1 -0
  274. data/lib/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
  275. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
  276. data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
  277. data/lib/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
  278. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
  279. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
  280. data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +115 -0
  281. data/lib/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
  282. data/lib/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -0
  283. data/lib/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
  284. data/lib/generators/vulcanize/templates/munin/templates.yml +1 -0
  285. data/lib/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +12 -0
  286. data/lib/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
  287. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
  288. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
  289. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
  290. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +163 -0
  291. data/lib/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
  292. data/lib/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +47 -0
  293. data/lib/generators/vulcanize/templates/mysql/templates.yml +1 -0
  294. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
  295. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +177 -0
  296. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
  297. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
  298. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
  299. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
  300. data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
  301. data/lib/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
  302. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
  303. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
  304. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
  305. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
  306. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
  307. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
  308. data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
  309. data/lib/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
  310. data/lib/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
  311. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
  312. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
  313. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  314. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
  315. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  316. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  317. data/lib/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
  318. data/lib/generators/vulcanize/templates/nginx/templates.yml +1 -0
  319. data/lib/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +45 -0
  320. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  321. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +8 -0
  322. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  323. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +48 -0
  324. data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +41 -0
  325. data/lib/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
  326. data/lib/generators/vulcanize/templates/passenger/templates.yml +3 -0
  327. data/lib/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
  328. data/lib/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +158 -0
  329. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
  330. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
  331. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/munin-postgresql.conf +7 -0
  332. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
  333. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
  334. data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +531 -0
  335. data/lib/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
  336. data/lib/generators/vulcanize/templates/postgresql/templates.yml +1 -0
  337. data/lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +76 -0
  338. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  339. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  340. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +320 -0
  341. data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +9 -0
  342. data/lib/generators/vulcanize/templates/redis/templates.yml +1 -0
  343. data/lib/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
  344. data/lib/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
  345. data/lib/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
  346. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
  347. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
  348. data/lib/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
  349. data/lib/generators/vulcanize/templates/resque/script/resque_worker_management.rb +144 -0
  350. data/lib/generators/vulcanize/templates/resque/templates.rb +1 -0
  351. data/lib/generators/vulcanize/templates/resque/templates.yml +3 -0
  352. data/lib/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
  353. data/lib/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
  354. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  355. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +13 -0
  356. data/lib/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
  357. data/lib/generators/vulcanize/templates/sphinx/templates.yml +1 -0
  358. data/lib/generators/vulcanize/vulcanize_generator.rb +184 -0
  359. data/lib/rubber.rb +76 -0
  360. data/lib/rubber/capistrano.rb +1 -0
  361. data/lib/rubber/cloud.rb +13 -0
  362. data/lib/rubber/cloud/aws.rb +362 -0
  363. data/lib/rubber/cloud/base.rb +16 -0
  364. data/lib/rubber/configuration.rb +47 -0
  365. data/lib/rubber/dns.rb +13 -0
  366. data/lib/rubber/dns/base.rb +84 -0
  367. data/lib/rubber/dns/dyndns.rb +77 -0
  368. data/lib/rubber/dns/nettica.rb +117 -0
  369. data/lib/rubber/dns/zerigo.rb +115 -0
  370. data/lib/rubber/environment.rb +177 -0
  371. data/lib/rubber/generator.rb +209 -0
  372. data/lib/rubber/instance.rb +176 -0
  373. data/lib/rubber/railtie.rb +14 -0
  374. data/lib/rubber/recipes/rubber.rb +96 -0
  375. data/lib/rubber/recipes/rubber/bundles.rb +30 -0
  376. data/lib/rubber/recipes/rubber/deploy.rb +90 -0
  377. data/lib/rubber/recipes/rubber/instances.rb +453 -0
  378. data/lib/rubber/recipes/rubber/load_balancers.rb +44 -0
  379. data/lib/rubber/recipes/rubber/security_groups.rb +189 -0
  380. data/lib/rubber/recipes/rubber/setup.rb +534 -0
  381. data/lib/rubber/recipes/rubber/spot_requests.rb +23 -0
  382. data/lib/rubber/recipes/rubber/static_ips.rb +190 -0
  383. data/lib/rubber/recipes/rubber/tags.rb +12 -0
  384. data/lib/rubber/recipes/rubber/utils.rb +226 -0
  385. data/lib/rubber/recipes/rubber/volumes.rb +265 -0
  386. data/lib/rubber/tag.rb +16 -0
  387. data/lib/rubber/tasks/rubber.rb +279 -0
  388. data/lib/rubber/util.rb +72 -0
  389. data/rails/init.rb +6 -0
  390. data/test/environment_test.rb +144 -0
  391. data/test/generator_test.rb +370 -0
  392. data/test/instance_test.rb +96 -0
  393. data/test/test_helper.rb +14 -0
  394. data/test/util_test.rb +19 -0
  395. data/test/zerigo_test.rb +88 -0
  396. metadata +540 -0
@@ -0,0 +1,72 @@
1
+
2
+
3
+ module Rubber
4
+ module Util
5
+
6
+ def self.symbolize_keys(map)
7
+ map.inject({}) do |options, (key, value)|
8
+ options[key.to_sym || key] = value
9
+ options
10
+ end
11
+ end
12
+
13
+ def self.stringify(val)
14
+ case val
15
+ when String
16
+ val
17
+ when Hash
18
+ val.inject({}) {|h, a| h[stringify(a[0])] = stringify(a[1]); h}
19
+ when Enumerable
20
+ val.collect {|v| stringify(v)}
21
+ else
22
+ val.to_s
23
+ end
24
+
25
+ end
26
+
27
+ # Opens the file for writing by root
28
+ def self.sudo_open(path, perms, &block)
29
+ open("|sudo tee #{path} > /dev/null", perms, &block)
30
+ end
31
+
32
+ def self.is_rails?
33
+ File.exist?(File.join(RUBBER_ROOT, 'config', 'boot.rb'))
34
+ end
35
+
36
+ def self.is_rails2?
37
+ defined?(Rails) && defined?(Rails::VERSION) && Rails::VERSION::MAJOR == 2
38
+ end
39
+
40
+ def self.is_rails3?
41
+ defined?(Rails) && defined?(Rails::VERSION) && Rails::VERSION::MAJOR == 3
42
+ end
43
+
44
+ def self.is_bundler?
45
+ File.exist?(File.join(RUBBER_ROOT, 'Gemfile'))
46
+ end
47
+
48
+ def self.rubber_as_plugin?
49
+ File.exist?(File.join(RUBBER_ROOT, 'vendor/plugins/rubber'))
50
+ end
51
+
52
+ def self.prompt(name, desc, required=false, default=nil)
53
+ value = ENV.delete(name)
54
+ msg = "#{desc}"
55
+ msg << " [#{default}]" if default
56
+ msg << ": "
57
+ unless value
58
+ print msg
59
+ value = gets
60
+ end
61
+ value = value.size == 0 ? default : value
62
+ self.fatal "#{name} is required, pass using environment or enter at prompt" if required && ! value
63
+ return value
64
+ end
65
+
66
+ def self.fatal(msg, code=1)
67
+ puts msg
68
+ exit code
69
+ end
70
+
71
+ end
72
+ end
data/rails/init.rb ADDED
@@ -0,0 +1,6 @@
1
+ # this file just makes it easy to refer to rubber config
2
+ # variables in your apps's config'
3
+ #
4
+
5
+ require "rubber"
6
+ Rubber::initialize(Rails.root, Rails.env)
@@ -0,0 +1,144 @@
1
+ require 'rubygems'
2
+ gem 'test-unit'
3
+
4
+ require 'test/unit'
5
+ require 'tempfile'
6
+ require File.expand_path(File.join(__FILE__, '..', 'test_helper'))
7
+
8
+ class EnvironmentTest < Test::Unit::TestCase
9
+ include Rubber::Configuration
10
+
11
+ def test_known_roles
12
+ env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
13
+ assert_equal ['role1', 'role2'], env.known_roles, "list of know roles not correct"
14
+ end
15
+
16
+ def test_env
17
+ env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
18
+ e = env.bind()
19
+ assert_equal 'val1', e['var1'], 'env not retrieving right val'
20
+ assert_equal 'val2', e['var2'], 'env not retrieving right val'
21
+ assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
22
+ assert_equal 'val2', e.var2, 'env not retrieving right val for method missing'
23
+
24
+ assert_equal 'val3', e.var3, 'env not retrieving right val for config in supplemental file'
25
+
26
+ e = env.bind('role1', 'nohost')
27
+ assert_equal 'val1', e['var1'], 'env not retrieving right val'
28
+ assert_equal 'role1val2', e['var2'], 'env not retrieving right val'
29
+ assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
30
+ assert_equal 'role1val2', e.var2, 'env not retrieving right val for method missing'
31
+
32
+ e = env.bind('role1', 'host1')
33
+ assert_equal 'val1', e['var1'], 'env not retrieving right val'
34
+ assert_equal 'host1val2', e['var2'], 'env not retrieving right val'
35
+ assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
36
+ assert_equal 'host1val2', e.var2, 'env not retrieving right val for method missing'
37
+
38
+ e = env.bind('norole', 'host1')
39
+ assert_equal 'val1', e['var1'], 'env not retrieving right val'
40
+ assert_equal 'host1val2', e['var2'], 'env not retrieving right val'
41
+ assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
42
+ assert_equal 'host1val2', e.var2, 'env not retrieving right val for method missing'
43
+ end
44
+
45
+ def test_host_override
46
+ env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
47
+ e = env.bind('norole', 'host2')
48
+ assert_equal 'host2val3', e['var3'], 'env not retrieving right val'
49
+ assert_equal %w[host2val4a host2val4b], e['var4'], 'env not retrieving right val'
50
+ assert_equal [{'var51a' => 'val51a', 'var52a' => 'val52a'}, {'var53' => 'val53'}, {'var54' => 'val54'}], e['var5'], 'env not retrieving right val'
51
+ end
52
+
53
+ def test_combine
54
+ env = Rubber::Configuration::Environment
55
+ assert_equal "new", env.combine("old", "new"), "Last should win for scalar combine"
56
+ assert_equal 5, env.combine(1, 5), "Last should win for scalar combine"
57
+ assert_equal [1, 2, 3, 4], env.combine([1, 2, 3], [3, 4]), "Arrays should be unioned when combined"
58
+ assert_equal({1 => "1", 2 => "2", 3 => "3", 4 => "4"}, env.combine({1 => "1", 2 => "2"}, {3 => "3", 4 => "4"}), "Maps should be unioned when combined")
59
+ assert_equal({1 => "2"}, env.combine({1 => "1"}, {1 => "2"}), "Last should win for scalars in maps when combined")
60
+ assert_equal({1 => {1 => "1", 2 => "2"}}, env.combine({1 => {1 => "1"}}, {1 => {2 => "2"}}), "Maps should be unioned recursively when combined")
61
+ end
62
+
63
+ def test_expansion
64
+ env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/expansion")
65
+ e = env.bind()
66
+ assert_equal 'val1', e['var1']
67
+ assert_equal 'val2', e['var2']
68
+ assert_equal 'val1', e['var3']
69
+ assert_equal '4 is val2', e['var4']
70
+ assert_equal 'val1', e['var5']
71
+ assert_equal %w[lv1 lv2 val1], e['list1']
72
+ expected = {'mk1' => 'mv1', 'mk2' => 'mv2', 'mk3' => 'val2'}
73
+ e.map1.each do |k, v|
74
+ assert_equal expected[k], v
75
+ end
76
+
77
+ e = env.bind('role1', 'nohost')
78
+ assert_equal 'role1val1', e['var1']
79
+ assert_equal 'role1val1', e['var3']
80
+ assert_equal %w[lv1 lv2 role1val1 role1lv1 role1val2], e['list1']
81
+
82
+ e = env.bind('role1', 'host1')
83
+ assert_equal 'host1val1', e['var1']
84
+ assert_equal 'host1val1', e['var3']
85
+ assert_equal %w[lv1 lv2 host1val1 role1lv1 host1val2 host1lv1], e['list1'] # lists are additive
86
+
87
+ e = env.bind('norole', 'host1')
88
+ assert_equal 'host1val1', e['var1']
89
+ assert_equal 'host1val1', e['var3']
90
+ assert_equal %w[lv1 lv2 host1val1 host1lv1 host1val2], e['list1']
91
+ end
92
+
93
+ def test_bool_expansion
94
+ env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/expansion")
95
+ e = env.bind()
96
+ assert_equal true, e['truevar']
97
+ assert_equal false, e['falsevar']
98
+ assert_equal true, e['truevar_exp']
99
+ assert 'true' != e['truevar_exp']
100
+ assert_equal false, e['falsevar_exp']
101
+ assert 'false' != e['falsevar_exp']
102
+ assert_equal 'true thing', e['faketruevar_exp']
103
+ end
104
+
105
+ def test_secret_env
106
+ env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
107
+ e = env.bind()
108
+ assert_nil e['rubber_secret'], 'env should not have secret set'
109
+
110
+ fixture_dir = File.expand_path("#{File.dirname(__FILE__)}/fixtures/secret")
111
+ env = Rubber::Configuration::Environment.new(fixture_dir)
112
+ e = env.bind()
113
+ assert_equal "#{fixture_dir}/secret.yml", e['rubber_secret'], 'env should have secret set'
114
+ assert_equal "secret_val", e['secret_key'], 'env should have gotten setting from secret file'
115
+ end
116
+
117
+ def test_nested_ref
118
+ env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/nested")
119
+ e = env.bind()
120
+ assert_equal 'val1', e.var1, 'env not retrieving right val'
121
+ assert_equal 'val3', e.var2.var3, 'env not retrieving right val'
122
+ assert_equal({'var5' => 'val5'}, e.var2.var4, 'env not retrieving right val')
123
+ assert_equal ['val6a', 'val6b'], e.var2.var6, 'env not retrieving right val'
124
+ assert_equal 'val1', e.var2.var7, 'env not retrieving right val'
125
+ assert_equal 'val3', e.var2.var8, 'env not retrieving right val'
126
+ assert_equal 'val5', e.var2.var9, 'env not retrieving right val'
127
+ end
128
+
129
+ def test_instances_in_expansion
130
+ instance = InstanceItem.new('host1', 'domain.com', [RoleItem.new('role1')], '')
131
+ instance.external_ip = "1.2.3.4"
132
+ instances = Instance.new(Tempfile.new('testforinstanceexpansion').path)
133
+ instances.add(instance)
134
+
135
+ File.expects(:exist?).returns(true)
136
+ YAML.expects(:load_file).returns({'var1' =>'"#{rubber_instances.for_role("role1").first.external_ip}"'})
137
+ Rubber::Configuration.expects(:rubber_instances).returns(instances)
138
+ env = Rubber::Configuration::Environment.new(nil)
139
+ e = env.bind()
140
+
141
+ assert_equal "\"1.2.3.4\"", e['var1']
142
+ end
143
+
144
+ end
@@ -0,0 +1,370 @@
1
+ require 'rubygems'
2
+ gem 'test-unit'
3
+
4
+ require 'test/unit'
5
+ require 'tempfile'
6
+ require File.expand_path(File.join(__FILE__, '..', 'test_helper'))
7
+
8
+ class GeneratorTest < Test::Unit::TestCase
9
+ include Rubber::Configuration
10
+
11
+ def test_validate
12
+ assert_raise RuntimeError do
13
+ src = <<-SRC
14
+ hello
15
+ SRC
16
+ Generator.new(nil, nil, nil).transform(src)
17
+ end
18
+ assert_raise RuntimeError do
19
+ src = <<-SRC
20
+ <%
21
+ @read_cmd = 'ls'
22
+ %>
23
+ hello
24
+ SRC
25
+ Generator.new(nil, nil, nil).transform(src)
26
+ end
27
+ assert_raise RuntimeError do
28
+ src = <<-SRC
29
+ <%
30
+ @write_cmd = 'cat'
31
+ %>
32
+ hello
33
+ SRC
34
+ Generator.new(nil, nil, nil).transform(src)
35
+ end
36
+ end
37
+
38
+ def test_simple_transform
39
+ out_file = Tempfile.new('testsimple')
40
+ src = <<-SRC
41
+ <%
42
+ @path = '#{out_file.path}'
43
+ %>
44
+ hello
45
+ SRC
46
+
47
+ Generator.new(nil, nil, nil).transform(src)
48
+ assert File.exists?(out_file.path), "transform did not generate an output file"
49
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
50
+ end
51
+
52
+ def test_additive_transform
53
+ out_file = Tempfile.new('testadditive')
54
+ open(out_file.path, 'w') { |f| f.write("howdy\n")}
55
+ src = <<-SRC
56
+ <%
57
+ @path = '#{out_file.path}'
58
+ @additive = ['#start', '#end']
59
+ %>
60
+ hello
61
+ SRC
62
+
63
+ Generator.new(nil, nil, nil).transform(src)
64
+ assert File.exists?(out_file.path), "transform did not generate an output file"
65
+ assert_equal "howdy\n#start \n hello\n#end", File.read(out_file.path).strip, "transformed contents are incorrect"
66
+
67
+ src += "neato\n"
68
+ open(out_file.path, 'a') { |f| f.write("again\n")}
69
+ Generator.new(nil, nil, nil).transform(src)
70
+ assert File.exists?(out_file.path), "transform did not generate an output file"
71
+ assert_equal "howdy\n#start \n hello\nneato\n#end\nagain", File.read(out_file.path).strip, "transformed contents are incorrect"
72
+ end
73
+
74
+ def test_post_command
75
+ out_file = Tempfile.new('testpost')
76
+ post_file = out_file.path + '.post'
77
+ src = <<-SRC
78
+ <%
79
+ @path = '#{out_file.path}'
80
+ @post = 'touch #{post_file}'
81
+ %>
82
+ hello
83
+ SRC
84
+
85
+ Generator.new(nil, nil, nil).transform(src)
86
+ assert File.exists?(out_file.path), "transform did not generate an output file"
87
+ assert File.exists?(post_file), "transform did not execute post"
88
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
89
+
90
+ FileUtils.rm_f(post_file)
91
+ Generator.new(nil, nil, nil).transform(src)
92
+ assert File.exists?(out_file.path), "transform did not generate an output file"
93
+ assert ! File.exists?(post_file), "post should not have been executed as dest file unchanged"
94
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
95
+
96
+ FileUtils.rm_f(post_file)
97
+ gen = Generator.new(nil, nil, nil)
98
+ gen.force = true
99
+ gen.transform(src)
100
+ assert File.exists?(out_file.path), "transform did not generate an output file"
101
+ assert File.exists?(post_file), "forced transform did not execute post"
102
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
103
+
104
+ FileUtils.rm_f(post_file)
105
+ gen = Generator.new(nil, nil, nil)
106
+ gen.no_post = true
107
+ gen.transform(src + "there")
108
+ assert File.exists?(out_file.path), "transform did not generate an output file"
109
+ assert ! File.exists?(post_file), "post should not have been generated for no_post option"
110
+ assert_equal "hello\nthere", File.read(out_file.path).strip, "transformed contents are incorrect"
111
+ end
112
+
113
+ def test_stop_on_error
114
+ out_file = Tempfile.new('teststoponerr')
115
+ post_file = out_file.path + '.post'
116
+ src = <<-SRC
117
+ <%
118
+ @path = '#{out_file.path}'
119
+ @post = 'badcommand; touch #{post_file}'
120
+ %>
121
+ hello
122
+ SRC
123
+
124
+ g = Generator.new(nil, nil, nil)
125
+ g.transform(src)
126
+ assert File.exists?(out_file.path), "transform did not generate an output file"
127
+ assert File.exists?(post_file), "transform did not execute post"
128
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
129
+
130
+ FileUtils.rm_f(post_file)
131
+ g = Generator.new(nil, nil, nil)
132
+ g.stop_on_error_cmd = "function error_exit { exit 99; }; trap error_exit ERR"
133
+ g.transform(src)
134
+ assert File.exists?(out_file.path), "transform did not generate an output file"
135
+ assert ! File.exists?(post_file), "post should not have been executed as comes after error"
136
+ end
137
+
138
+ def test_pipe_command
139
+ out_file = Tempfile.new('testpipe')
140
+ src = <<-SRC
141
+ <%
142
+ @read_cmd = 'echo hi'
143
+ @write_cmd = 'cat > #{out_file.path}'
144
+ %>
145
+ hello
146
+ SRC
147
+
148
+ Generator.new(nil, nil, nil).transform(src)
149
+ assert File.exists?(out_file.path), "transform did not generate to write_cmd"
150
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
151
+
152
+ FileUtils.rm_f(out_file.path)
153
+ src = <<-SRC
154
+ <%
155
+ @read_cmd = 'echo hi'
156
+ @write_cmd = 'cat > #{out_file.path}'
157
+ @additive = ['#start', '#end']
158
+ %>
159
+ hello
160
+ SRC
161
+
162
+ Generator.new(nil, nil, nil).transform(src)
163
+ assert File.exists?(out_file.path), "transform did not generate to write_cmd"
164
+ assert_equal "hi\n#start \n hello\n#end", File.read(out_file.path).strip, "transformed contents are incorrect"
165
+
166
+ FileUtils.rm_f(out_file.path)
167
+ src = <<-SRC
168
+ <%
169
+ @read_cmd = 'echo "#start\nthere\n#end\nhi\n"'
170
+ @write_cmd = 'cat > #{out_file.path}'
171
+ @additive = ['#start', '#end']
172
+ %>
173
+ hello
174
+ SRC
175
+
176
+ Generator.new(nil, nil, nil).transform(src)
177
+ assert File.exists?(out_file.path), "transform did not generate to write_cmd"
178
+ assert_equal "#start \n hello\n#end\nhi", File.read(out_file.path).strip, "transformed contents are incorrect"
179
+
180
+ FileUtils.rm_f(out_file.path)
181
+ src = <<-SRC
182
+ <%
183
+ @read_cmd = 'echo hi'
184
+ @write_cmd = 'badcommand'
185
+ %>
186
+ hello
187
+ SRC
188
+
189
+ assert_raises do
190
+ Generator.new(nil, nil, nil).transform(src)
191
+ end
192
+
193
+ end
194
+
195
+ def list_dir(dir)
196
+ l = Dir.entries(dir)
197
+ l.delete_if {|d| d =~ /(^\.+$)|\.bak$/}
198
+ end
199
+
200
+ def test_scoping
201
+ out_dir = "#{Dir::tmpdir}/test_rubber_scoping"
202
+ FileUtils.rm_rf(out_dir)
203
+ assert ! File.exists?(out_dir)
204
+
205
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", nil, nil, :out_dir => out_dir)
206
+ g.run()
207
+ assert File.directory?(out_dir), "scoped transform did not create dir"
208
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
209
+ assert_equal "common", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
210
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
211
+
212
+ FileUtils.rm_rf(out_dir)
213
+ assert ! File.exists?(out_dir)
214
+
215
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role1'], nil, :out_dir => out_dir)
216
+ g.run()
217
+ assert File.directory?(out_dir), "scoped transform did not create dir"
218
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
219
+ assert_equal "role1", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
220
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
221
+
222
+ FileUtils.rm_rf(out_dir)
223
+ assert ! File.exists?(out_dir)
224
+
225
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role2', 'role1'], nil, :out_dir => out_dir)
226
+ g.run()
227
+ assert File.directory?(out_dir), "scoped transform did not create dir"
228
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
229
+ assert_equal "role2", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
230
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
231
+
232
+ FileUtils.rm_rf(out_dir)
233
+ assert ! File.exists?(out_dir)
234
+
235
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role1'], 'host1', :out_dir => out_dir)
236
+ g.run()
237
+ assert File.directory?(out_dir), "scoped transform did not create dir"
238
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
239
+ assert_equal "host1", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
240
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
241
+
242
+
243
+ FileUtils.rm_rf(out_dir)
244
+ end
245
+
246
+ def test_ordering_of_additive
247
+ out_dir = "#{Dir::tmpdir}/test_rubber_ordering"
248
+ FileUtils.rm_rf(out_dir)
249
+ assert ! File.exists?(out_dir)
250
+
251
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/generator_order", ['role2', 'role1'], 'host1', :out_dir => out_dir)
252
+ g.run()
253
+ assert File.directory?(out_dir), "transform did not create dir"
254
+ assert_equal ['out.conf'], list_dir(out_dir), "transform did not create correct file"
255
+ result = <<DATA
256
+ # common first start
257
+ first
258
+ # common first end
259
+ # common last start
260
+ last
261
+ # common last end
262
+ # role1 first start
263
+ role1 first
264
+ # role1 first end
265
+ # role1 last start
266
+ role1 last
267
+ # role1 last end
268
+ # role2 first start
269
+ role2 first
270
+ # role2 first end
271
+ # role2 last start
272
+ role2 last
273
+ # role2 last end
274
+ # host1 first start
275
+ host1 first
276
+ # host1 first end
277
+ # host1 last start
278
+ host1 last
279
+ # host1 last end
280
+ DATA
281
+ assert_equal result.strip, File.read("#{out_dir}/out.conf").strip, "transformed contents are incorrect"
282
+
283
+ FileUtils.rm_rf(out_dir)
284
+ end
285
+
286
+ def test_file_pattern
287
+ out_dir = "#{Dir::tmpdir}/test_rubber_scoping"
288
+ FileUtils.rm_rf(out_dir)
289
+ assert ! File.exists?(out_dir)
290
+
291
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", nil, nil, :out_dir => out_dir)
292
+ g.file_pattern = 'foo\.conf'
293
+ g.run()
294
+ assert File.directory?(out_dir), "scoped transform did not create dir"
295
+ assert_equal ['foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
296
+ assert_equal "common", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
297
+ end
298
+
299
+ def test_perms
300
+ user = ENV['USER']
301
+ group = `groups`.split.last
302
+ out_file = Tempfile.new('testperms')
303
+ src = <<-SRC
304
+ <%
305
+ @path = '#{out_file.path}'
306
+ @perms = 0777
307
+ @owner = '#{user}'
308
+ @group = '#{group}'
309
+ %>
310
+ hello
311
+ SRC
312
+
313
+ Generator.new(nil, nil, nil).transform(src)
314
+ assert File.exists?(out_file.path), "transform did not generate an output file"
315
+ assert_equal "100777", sprintf("%o", File.stat(out_file.path).mode), "transformed permissions are incorrect"
316
+ assert_equal Etc.getpwnam(user).uid, File.stat(out_file.path).uid, "transformed owner is incorrect"
317
+ assert_equal Etc.getgrnam(group).gid, File.stat(out_file.path).gid, "transformed group is incorrect"
318
+ end
319
+
320
+ def test_skip
321
+ out_file = Tempfile.new('testskip')
322
+ File.delete(out_file.path)
323
+ src = <<-SRC
324
+ <%
325
+ @skip = true
326
+ @path = '#{out_file.path}'
327
+ %>
328
+ hello
329
+ SRC
330
+
331
+ Generator.new(nil, nil, nil).transform(src)
332
+ assert ! File.exists?(out_file.path), "transform didn't skip generation of an output file"
333
+ end
334
+
335
+ def test_backup
336
+ out_file = Tempfile.new('testbak')
337
+ assert ! File.exists?("#{out_file.path}.bak")
338
+ File.open(out_file.path, 'w') {|f| f.write("howdy")}
339
+
340
+ src = <<-SRC
341
+ <%
342
+ @path = '#{out_file.path}'
343
+ %>
344
+ hello <%= Time.now.to_f %>
345
+ SRC
346
+
347
+ Generator.new(nil, nil, nil).transform(src)
348
+
349
+ assert File.exists?("#{out_file.path}.bak"), "transform didn't generate backup"
350
+ assert_match /howdy/, File.read("#{out_file.path}.bak"), "transform backup has wrong contents"
351
+ end
352
+
353
+ def test_no_backup
354
+ out_file = Tempfile.new('testnobak')
355
+ assert ! File.exists?("#{out_file.path}.bak")
356
+ File.open(out_file.path, 'w') {|f| f.write("howdy")}
357
+ src = <<-SRC
358
+ <%
359
+ @path = '#{out_file.path}'
360
+ @backup = false
361
+ %>
362
+ hello <%= Time.now.to_f %>
363
+ SRC
364
+
365
+ Generator.new(nil, nil, nil).transform(src)
366
+
367
+ assert ! File.exists?("#{out_file.path}.bak"), "transform shouldn't generate backup"
368
+ end
369
+
370
+ end