nirvdrum-rubber 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. data/CHANGELOG +146 -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 +41 -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 +5 -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 +66 -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/config/deploy.rb +55 -0
  22. data/generators/vulcanize/templates/base/config/rubber/common/crontab +17 -0
  23. data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
  24. data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +14 -0
  25. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +84 -0
  26. data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +79 -0
  27. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +227 -0
  28. data/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
  29. data/generators/vulcanize/templates/base/script/cron-rake +18 -0
  30. data/generators/vulcanize/templates/base/script/cron-runner +18 -0
  31. data/generators/vulcanize/templates/base/script/cron-sh +67 -0
  32. data/generators/vulcanize/templates/base/templates.yml +1 -0
  33. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
  34. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
  35. data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
  36. data/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
  37. data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
  38. data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
  39. data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +10 -0
  40. data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
  41. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
  42. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
  43. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
  44. data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
  45. data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
  46. data/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
  47. data/generators/vulcanize/templates/cruise/templates.yml +1 -0
  48. data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
  49. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
  50. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
  51. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
  52. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +6 -0
  53. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +17 -0
  54. data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
  55. data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
  56. data/generators/vulcanize/templates/haproxy/templates.yml +1 -0
  57. data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
  58. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
  59. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
  60. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
  61. data/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
  62. data/generators/vulcanize/templates/jetty/templates.yml +1 -0
  63. data/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
  64. data/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
  65. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
  66. data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
  67. data/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
  68. data/generators/vulcanize/templates/memcached/templates.yml +1 -0
  69. data/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
  70. data/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
  71. data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
  72. data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
  73. data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
  74. data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
  75. data/generators/vulcanize/templates/mongrel/templates.yml +1 -0
  76. data/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
  77. data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +251 -0
  78. data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +32 -0
  79. data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
  80. data/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
  81. data/generators/vulcanize/templates/monit/templates.yml +1 -0
  82. data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
  83. data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
  84. data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +9 -0
  85. data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
  86. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
  87. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
  88. data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +80 -0
  89. data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
  90. data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +57 -0
  91. data/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
  92. data/generators/vulcanize/templates/munin/templates.yml +1 -0
  93. data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +11 -0
  94. data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +156 -0
  95. data/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
  96. data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
  97. data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +167 -0
  98. data/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
  99. data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +46 -0
  100. data/generators/vulcanize/templates/mysql/templates.yml +1 -0
  101. data/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
  102. data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +173 -0
  103. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
  104. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
  105. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
  106. data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
  107. data/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
  108. data/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
  109. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
  110. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
  111. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
  112. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
  113. data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
  114. data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
  115. data/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
  116. data/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
  117. data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
  118. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
  119. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
  120. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
  121. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
  122. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
  123. data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
  124. data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
  125. data/generators/vulcanize/templates/nginx/templates.yml +1 -0
  126. data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +37 -0
  127. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
  128. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +7 -0
  129. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
  130. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
  131. data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
  132. data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
  133. data/generators/vulcanize/templates/passenger/templates.yml +3 -0
  134. data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +36 -0
  135. data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
  136. data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
  137. data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
  138. data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  139. data/generators/vulcanize/templates/redis/templates.yml +1 -0
  140. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb +38 -0
  141. data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +39 -0
  142. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf +19 -0
  143. data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +10 -0
  144. data/generators/vulcanize/templates/resque/templates.yml +3 -0
  145. data/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
  146. data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
  147. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
  148. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +10 -0
  149. data/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
  150. data/generators/vulcanize/templates/sphinx/templates.yml +1 -0
  151. data/generators/vulcanize/vulcanize_generator.rb +67 -0
  152. data/lib/capistrano/hostcmd.rb +12 -0
  153. data/lib/rubber.rb +38 -0
  154. data/lib/rubber/capistrano.rb +1 -0
  155. data/lib/rubber/cloud.rb +13 -0
  156. data/lib/rubber/cloud/aws.rb +334 -0
  157. data/lib/rubber/cloud/base.rb +16 -0
  158. data/lib/rubber/configuration.rb +47 -0
  159. data/lib/rubber/dns.rb +13 -0
  160. data/lib/rubber/dns/base.rb +84 -0
  161. data/lib/rubber/dns/dyndns.rb +78 -0
  162. data/lib/rubber/dns/nettica.rb +117 -0
  163. data/lib/rubber/dns/zerigo.rb +174 -0
  164. data/lib/rubber/environment.rb +169 -0
  165. data/lib/rubber/generator.rb +197 -0
  166. data/lib/rubber/instance.rb +166 -0
  167. data/lib/rubber/recipes/rubber.rb +89 -0
  168. data/lib/rubber/recipes/rubber/bundles.rb +28 -0
  169. data/lib/rubber/recipes/rubber/deploy.rb +90 -0
  170. data/lib/rubber/recipes/rubber/instances.rb +393 -0
  171. data/lib/rubber/recipes/rubber/load_balancers.rb +44 -0
  172. data/lib/rubber/recipes/rubber/security_groups.rb +189 -0
  173. data/lib/rubber/recipes/rubber/setup.rb +457 -0
  174. data/lib/rubber/recipes/rubber/spot_requests.rb +17 -0
  175. data/lib/rubber/recipes/rubber/static_ips.rb +107 -0
  176. data/lib/rubber/recipes/rubber/utils.rb +203 -0
  177. data/lib/rubber/recipes/rubber/volumes.rb +264 -0
  178. data/lib/rubber/tasks/rubber.rb +279 -0
  179. data/lib/rubber/util.rb +37 -0
  180. data/rails/init.rb +9 -0
  181. data/test/environment_test.rb +133 -0
  182. data/test/generator_test.rb +323 -0
  183. data/test/instance_test.rb +93 -0
  184. data/test/test_helper.rb +8 -0
  185. data/test/util_test.rb +16 -0
  186. metadata +298 -0
@@ -0,0 +1,323 @@
1
+ require 'test/unit'
2
+ require 'tempfile'
3
+ require 'test_helper'
4
+
5
+ class GeneratorTest < Test::Unit::TestCase
6
+ include Rubber::Configuration
7
+
8
+ def test_validate
9
+ assert_raise RuntimeError do
10
+ src = <<-SRC
11
+ hello
12
+ SRC
13
+ Generator.new(nil, nil, nil).transform(src)
14
+ end
15
+ assert_raise RuntimeError do
16
+ src = <<-SRC
17
+ <%
18
+ @read_cmd = 'ls'
19
+ %>
20
+ hello
21
+ SRC
22
+ Generator.new(nil, nil, nil).transform(src)
23
+ end
24
+ assert_raise RuntimeError do
25
+ src = <<-SRC
26
+ <%
27
+ @write_cmd = 'cat'
28
+ %>
29
+ hello
30
+ SRC
31
+ Generator.new(nil, nil, nil).transform(src)
32
+ end
33
+ end
34
+
35
+ def test_simple_transform
36
+ out_file = Tempfile.new('testsimple')
37
+ src = <<-SRC
38
+ <%
39
+ @path = '#{out_file.path}'
40
+ %>
41
+ hello
42
+ SRC
43
+
44
+ Generator.new(nil, nil, nil).transform(src)
45
+ assert File.exists?(out_file.path), "transform did not generate an output file"
46
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
47
+ end
48
+
49
+ def test_additive_transform
50
+ out_file = Tempfile.new('testadditive')
51
+ open(out_file.path, 'w') { |f| f.write("howdy\n")}
52
+ src = <<-SRC
53
+ <%
54
+ @path = '#{out_file.path}'
55
+ @additive = ['#start', '#end']
56
+ %>
57
+ hello
58
+ SRC
59
+
60
+ Generator.new(nil, nil, nil).transform(src)
61
+ assert File.exists?(out_file.path), "transform did not generate an output file"
62
+ assert_equal "howdy\n#start \n hello\n#end", File.read(out_file.path).strip, "transformed contents are incorrect"
63
+
64
+ src += "neato\n"
65
+ open(out_file.path, 'a') { |f| f.write("again\n")}
66
+ Generator.new(nil, nil, nil).transform(src)
67
+ assert File.exists?(out_file.path), "transform did not generate an output file"
68
+ assert_equal "howdy\n#start \n hello\nneato\n#end\nagain", File.read(out_file.path).strip, "transformed contents are incorrect"
69
+ end
70
+
71
+ def test_post_command
72
+ out_file = Tempfile.new('testpost')
73
+ post_file = out_file.path + '.post'
74
+ src = <<-SRC
75
+ <%
76
+ @path = '#{out_file.path}'
77
+ @post = 'touch #{post_file}'
78
+ %>
79
+ hello
80
+ SRC
81
+
82
+ Generator.new(nil, nil, nil).transform(src)
83
+ assert File.exists?(out_file.path), "transform did not generate an output file"
84
+ assert File.exists?(post_file), "transform did not execute post"
85
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
86
+
87
+ FileUtils.rm_f(post_file)
88
+ Generator.new(nil, nil, nil).transform(src)
89
+ assert File.exists?(out_file.path), "transform did not generate an output file"
90
+ assert ! File.exists?(post_file), "post should not have been executed as dest file unchanged"
91
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
92
+
93
+ FileUtils.rm_f(post_file)
94
+ gen = Generator.new(nil, nil, nil)
95
+ gen.no_post = true
96
+ gen.transform(src + "there")
97
+ assert File.exists?(out_file.path), "transform did not generate an output file"
98
+ assert ! File.exists?(post_file), "post should not have been generated for no_post option"
99
+ assert_equal "hello\nthere", File.read(out_file.path).strip, "transformed contents are incorrect"
100
+ end
101
+
102
+ def test_stop_on_error
103
+ out_file = Tempfile.new('teststoponerr')
104
+ post_file = out_file.path + '.post'
105
+ src = <<-SRC
106
+ <%
107
+ @path = '#{out_file.path}'
108
+ @post = 'badcommand; touch #{post_file}'
109
+ %>
110
+ hello
111
+ SRC
112
+
113
+ g = Generator.new(nil, nil, nil)
114
+ g.transform(src)
115
+ assert File.exists?(out_file.path), "transform did not generate an output file"
116
+ assert File.exists?(post_file), "transform did not execute post"
117
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
118
+
119
+ FileUtils.rm_f(post_file)
120
+ g = Generator.new(nil, nil, nil)
121
+ g.stop_on_error_cmd = "function error_exit { exit 99; }; trap error_exit ERR"
122
+ g.transform(src)
123
+ assert File.exists?(out_file.path), "transform did not generate an output file"
124
+ assert ! File.exists?(post_file), "post should not have been executed as comes after error"
125
+ end
126
+
127
+ def test_pipe_command
128
+ out_file = Tempfile.new('testpipe')
129
+ src = <<-SRC
130
+ <%
131
+ @read_cmd = 'echo hi'
132
+ @write_cmd = 'cat > #{out_file.path}'
133
+ %>
134
+ hello
135
+ SRC
136
+
137
+ Generator.new(nil, nil, nil).transform(src)
138
+ assert File.exists?(out_file.path), "transform did not generate to write_cmd"
139
+ assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
140
+
141
+ FileUtils.rm_f(out_file.path)
142
+ src = <<-SRC
143
+ <%
144
+ @read_cmd = 'echo hi'
145
+ @write_cmd = 'cat > #{out_file.path}'
146
+ @additive = ['#start', '#end']
147
+ %>
148
+ hello
149
+ SRC
150
+
151
+ Generator.new(nil, nil, nil).transform(src)
152
+ assert File.exists?(out_file.path), "transform did not generate to write_cmd"
153
+ assert_equal "hi\n#start \n hello\n#end", File.read(out_file.path).strip, "transformed contents are incorrect"
154
+
155
+ FileUtils.rm_f(out_file.path)
156
+ src = <<-SRC
157
+ <%
158
+ @read_cmd = 'echo "#start\nthere\n#end\nhi\n"'
159
+ @write_cmd = 'cat > #{out_file.path}'
160
+ @additive = ['#start', '#end']
161
+ %>
162
+ hello
163
+ SRC
164
+
165
+ Generator.new(nil, nil, nil).transform(src)
166
+ assert File.exists?(out_file.path), "transform did not generate to write_cmd"
167
+ assert_equal "#start \n hello\n#end\nhi", File.read(out_file.path).strip, "transformed contents are incorrect"
168
+
169
+ FileUtils.rm_f(out_file.path)
170
+ src = <<-SRC
171
+ <%
172
+ @read_cmd = 'echo hi'
173
+ @write_cmd = 'badcommand'
174
+ %>
175
+ hello
176
+ SRC
177
+
178
+ assert_raises RuntimeError do
179
+ Generator.new(nil, nil, nil).transform(src)
180
+ end
181
+
182
+ end
183
+
184
+ def list_dir(dir)
185
+ l = Dir.entries(dir)
186
+ l.delete_if {|d| d =~ /(^\.+$)|\.bak$/}
187
+ end
188
+
189
+ def test_scoping
190
+ out_dir = "#{Dir::tmpdir}/test_rubber_scoping"
191
+ FileUtils.rm_rf(out_dir)
192
+ assert ! File.exists?(out_dir)
193
+
194
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", nil, nil, :out_dir => out_dir)
195
+ g.run()
196
+ assert File.directory?(out_dir), "scoped transform did not create dir"
197
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
198
+ assert_equal "common", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
199
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
200
+
201
+ FileUtils.rm_rf(out_dir)
202
+ assert ! File.exists?(out_dir)
203
+
204
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role1'], nil, :out_dir => out_dir)
205
+ g.run()
206
+ assert File.directory?(out_dir), "scoped transform did not create dir"
207
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
208
+ assert_equal "role1", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
209
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
210
+
211
+ FileUtils.rm_rf(out_dir)
212
+ assert ! File.exists?(out_dir)
213
+
214
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role2', 'role1'], nil, :out_dir => out_dir)
215
+ g.run()
216
+ assert File.directory?(out_dir), "scoped transform did not create dir"
217
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
218
+ assert_equal "role2", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
219
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
220
+
221
+ FileUtils.rm_rf(out_dir)
222
+ assert ! File.exists?(out_dir)
223
+
224
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role1'], ['host1'], :out_dir => out_dir)
225
+ g.run()
226
+ assert File.directory?(out_dir), "scoped transform did not create dir"
227
+ assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
228
+ assert_equal "host1", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
229
+ assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
230
+
231
+
232
+ FileUtils.rm_rf(out_dir)
233
+ end
234
+
235
+ def test_ordering
236
+ out_dir = "#{Dir::tmpdir}/test_rubber_ordering"
237
+ FileUtils.rm_rf(out_dir)
238
+ assert ! File.exists?(out_dir)
239
+
240
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/generator_order", ['role2', 'role1'], ['host1'], :out_dir => out_dir)
241
+ g.run()
242
+ assert File.directory?(out_dir), "transform did not create dir"
243
+ assert_equal ['out.conf'], list_dir(out_dir), "transform did not create correct file"
244
+ result = <<DATA
245
+ # common first start
246
+ first
247
+ # common first end
248
+ # common last start
249
+ last
250
+ # common last end
251
+ # role1 first start
252
+ role1 first
253
+ # role1 first end
254
+ # role1 last start
255
+ role1 last
256
+ # role1 last end
257
+ # role2 first start
258
+ role2 first
259
+ # role2 first end
260
+ # role2 last start
261
+ role2 last
262
+ # role2 last end
263
+ # host1 first start
264
+ host1 first
265
+ # host1 first end
266
+ # host1 last start
267
+ host1 last
268
+ # host1 last end
269
+ DATA
270
+ assert_equal result.strip, File.read("#{out_dir}/out.conf").strip, "transformed contents are incorrect"
271
+
272
+ FileUtils.rm_rf(out_dir)
273
+ end
274
+
275
+ def test_file_pattern
276
+ out_dir = "#{Dir::tmpdir}/test_rubber_scoping"
277
+ FileUtils.rm_rf(out_dir)
278
+ assert ! File.exists?(out_dir)
279
+
280
+ g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", nil, nil, :out_dir => out_dir)
281
+ g.file_pattern = 'foo\.conf'
282
+ g.run()
283
+ assert File.directory?(out_dir), "scoped transform did not create dir"
284
+ assert_equal ['foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
285
+ assert_equal "common", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
286
+ end
287
+
288
+ def test_perms
289
+ user = ENV['USER']
290
+ group = `groups`.split.last
291
+ out_file = Tempfile.new('testperms')
292
+ src = <<-SRC
293
+ <%
294
+ @path = '#{out_file.path}'
295
+ @perms = 0777
296
+ @owner = '#{user}'
297
+ @group = '#{group}'
298
+ %>
299
+ hello
300
+ SRC
301
+
302
+ Generator.new(nil, nil, nil).transform(src)
303
+ assert File.exists?(out_file.path), "transform did not generate an output file"
304
+ assert_equal "100777", sprintf("%o", File.stat(out_file.path).mode), "transformed permissions are incorrect"
305
+ assert_equal Etc.getpwnam(user).uid, File.stat(out_file.path).uid, "transformed owner is incorrect"
306
+ assert_equal Etc.getgrnam(group).gid, File.stat(out_file.path).gid, "transformed group is incorrect"
307
+ end
308
+
309
+ def test_skip
310
+ out_file = Tempfile.new('testskip')
311
+ File.delete(out_file.path)
312
+ src = <<-SRC
313
+ <%
314
+ @skip = true
315
+ @path = '#{out_file.path}'
316
+ %>
317
+ hello
318
+ SRC
319
+
320
+ Generator.new(nil, nil, nil).transform(src)
321
+ assert ! File.exists?(out_file.path), "transform didn't skip generation of an output file"
322
+ end
323
+ end
@@ -0,0 +1,93 @@
1
+ require 'test/unit'
2
+ require 'tempfile'
3
+ require 'test_helper'
4
+
5
+ class InstanceTest < Test::Unit::TestCase
6
+ include Rubber::Configuration
7
+
8
+ def setup
9
+ @instance = Instance.new(Tempfile.new('testforrole').path)
10
+ @instance.add(@i1 = InstanceItem.new('host1', 'domain.com', [RoleItem.new('role1')], ''))
11
+ @instance.add(@i2 = InstanceItem.new('host2', 'domain.com', [RoleItem.new('role1')], ''))
12
+ @instance.add(@i3 = InstanceItem.new('host3', 'domain.com', [RoleItem.new('role2')], ''))
13
+ @instance.add(@i4 = InstanceItem.new('host4', 'domain.com', [RoleItem.new('role2', 'primary' => true)], ''))
14
+ end
15
+
16
+ def test_for_role
17
+ assert_equal 2, @instance.for_role('role1').size, 'not finding correct instances for role'
18
+ assert_equal 2, @instance.for_role('role2').size, 'not finding correct instances for role'
19
+ assert_equal 1, @instance.for_role('role2', {}).size, 'not finding correct instances for role'
20
+ assert_equal @i3, @instance.for_role('role2', {}).first, 'not finding correct instances for role'
21
+ assert_equal 1, @instance.for_role('role2', 'primary' => true).size, 'not finding correct instances for role'
22
+ assert_equal @i4, @instance.for_role('role2', 'primary' => true).first, 'not finding correct instances for role'
23
+ end
24
+
25
+ def test_filtered
26
+ assert_equal 4, @instance.filtered().size, 'should not filter for empty FILTER'
27
+
28
+ ENV['FILTER'] = 'host1'
29
+ setup
30
+ assert_equal [@i1], @instance.filtered(), 'should have only filtered host'
31
+
32
+ ENV['FILTER'] = 'host2 , host4'
33
+ setup
34
+ assert_equal [@i2, @i4], @instance.filtered(), 'should have only filtered hosts'
35
+
36
+ end
37
+
38
+ def test_equality
39
+ assert RoleItem.new('a').eql?(RoleItem.new('a'))
40
+ assert RoleItem.new('a') == RoleItem.new('a')
41
+ assert_equal RoleItem.new('a').hash, RoleItem.new('a').hash
42
+
43
+ assert ! RoleItem.new('a').eql?(RoleItem.new('b'))
44
+ assert RoleItem.new('a') != RoleItem.new('b')
45
+ assert_not_equal RoleItem.new('a').hash, RoleItem.new('b').hash
46
+
47
+ assert RoleItem.new('a', {'a' => 'b', 1 => true}).eql?(RoleItem.new('a', {'a' => 'b', 1 => true}))
48
+ assert RoleItem.new('a', {'a' => 'b', 1 => true}) == RoleItem.new('a', {'a' => 'b', 1 => true})
49
+ assert_equal RoleItem.new('a', {'a' => 'b', 1 => true}).hash, RoleItem.new('a', {'a' => 'b', 1 => true}).hash
50
+
51
+ assert ! RoleItem.new('a', {'a' => 'b', 1 => true}).eql?(RoleItem.new('a', {'a' => 'b', 2 => true}))
52
+ assert RoleItem.new('a', {'a' => 'b', 1 => true}) != RoleItem.new('a', {'a' => 'b', 2 => true})
53
+ assert_equal RoleItem.new('a', {'a' => 'b', 1 => true}).hash, RoleItem.new('a', {'a' => 'b', 2 => true}).hash
54
+ end
55
+
56
+ def test_role_parse
57
+ assert_equal RoleItem.new('a'), RoleItem.parse("a")
58
+ assert_equal RoleItem.new('a', {'b' => 'c'}), RoleItem.parse("a:b=c")
59
+ assert_equal RoleItem.new('a', {'b' => 'c', 'd' => 'e'}), RoleItem.parse("a:b=c;d=e")
60
+ assert_equal RoleItem.new('a', {'b' => true, 'c' => false}), RoleItem.parse("a:b=true;c=false")
61
+ end
62
+
63
+ def test_role_to_s
64
+ assert_equal "a", RoleItem.new('a').to_s
65
+ assert_equal "a:b=c", RoleItem.new('a', {'b' => 'c'}).to_s
66
+ assert_equal "a:b=c;d=e", RoleItem.new('a', {'b' => 'c', 'd' => 'e'}).to_s
67
+ assert_equal "a:b=true;c=false", RoleItem.new('a', {'b' => true, 'c' => false}).to_s
68
+ end
69
+
70
+ def test_expand_role_dependencies
71
+ deps = { RoleItem.new('a') => RoleItem.new('b'),
72
+ RoleItem.new('b') => RoleItem.new('c'),
73
+ RoleItem.new('c') => [RoleItem.new('d'), RoleItem.new('a')]}
74
+ roles = [RoleItem.new('a'),RoleItem.new('b'),RoleItem.new('c'),RoleItem.new('d')]
75
+ assert_equal roles, RoleItem.expand_role_dependencies(RoleItem.new('a'), deps).sort
76
+ assert_equal roles, RoleItem.expand_role_dependencies([RoleItem.new('a'), RoleItem.new('d')], deps).sort
77
+
78
+ deps = { RoleItem.new('mysql_master') => RoleItem.new('db', {'primary' => true}),
79
+ RoleItem.new('mysql_slave') => RoleItem.new('db'),
80
+ RoleItem.new('db', {'primary' => true}) => RoleItem.new('mysql_master'),
81
+ RoleItem.new('db') => RoleItem.new('mysql_slave')
82
+ }
83
+ assert_equal [RoleItem.new('db', 'primary' => true), RoleItem.new('mysql_master')],
84
+ RoleItem.expand_role_dependencies(RoleItem.new('mysql_master'), deps).sort
85
+ assert_equal [RoleItem.new('db', 'primary' => true), RoleItem.new('mysql_master')],
86
+ RoleItem.expand_role_dependencies(RoleItem.new('db', 'primary' => true), deps).sort
87
+ assert_equal [RoleItem.new('db'), RoleItem.new('mysql_slave')],
88
+ RoleItem.expand_role_dependencies(RoleItem.new('mysql_slave'), deps).sort
89
+ assert_equal [RoleItem.new('db'), RoleItem.new('mysql_slave')],
90
+ RoleItem.expand_role_dependencies(RoleItem.new('db'), deps).sort
91
+
92
+ end
93
+ end
@@ -0,0 +1,8 @@
1
+ $:.unshift "#{File.dirname(__FILE__)}/../lib"
2
+
3
+ require 'rubber'
4
+ Rubber::initialize(File.dirname(__FILE__), 'test')
5
+
6
+ require 'rubygems'
7
+ require 'mocha'
8
+ require 'pp'
data/test/util_test.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'test/unit'
2
+ require 'test_helper'
3
+
4
+ class UtilTest < Test::Unit::TestCase
5
+
6
+ def test_stringify
7
+ assert_equal "", Rubber::Util::stringify(nil)
8
+ assert_equal "hi", Rubber::Util::stringify("hi")
9
+ assert_equal "1", Rubber::Util::stringify(1)
10
+ assert_equal "3.4", Rubber::Util::stringify(3.4)
11
+ assert_equal ["1", "2", "r"], Rubber::Util::stringify([1, 2, "r"])
12
+ assert_equal({"1" => "2", "three" => "four"}, Rubber::Util::stringify({1 => 2, :three => "four"}))
13
+ assert_equal [{"3" => "4"}], Rubber::Util::stringify([{3 => 4}])
14
+ end
15
+
16
+ end
metadata ADDED
@@ -0,0 +1,298 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nirvdrum-rubber
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.7
5
+ platform: ruby
6
+ authors:
7
+ - Matt Conway
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-10 00:00:00 -05:00
13
+ default_executable: vulcanize
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: capistrano
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: nirvdrum-amazon-ec2
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.7.9
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: aws-s3
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: nettica
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: httparty
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: rails
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ description: The rubber plugin enables relatively complex multi-instance deployments of RubyOnRails applications to Amazon's Elastic Compute Cloud (EC2). Like capistrano, rubber is role based, so you can define a set of configuration files for a role and then assign that role to as many concrete instances as needed. One can also assign multiple roles to a single instance. This lets one start out with a single ec2 instance (belonging to all roles), and add new instances into the mix as needed to scale specific facets of your deployment, e.g. adding in instances that serve only as an 'app' role to handle increased app server load.
76
+ email: matt@conwaysplace.com
77
+ executables:
78
+ - vulcanize
79
+ extensions: []
80
+
81
+ extra_rdoc_files:
82
+ - README
83
+ - TODO
84
+ files:
85
+ - CHANGELOG
86
+ - COPYING
87
+ - README
88
+ - TODO
89
+ - VERSION
90
+ - bin/vulcanize
91
+ - generators/vulcanize/USAGE
92
+ - generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb
93
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf
94
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf
95
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf
96
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf
97
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf
98
+ - generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf
99
+ - generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf
100
+ - generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth
101
+ - generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html
102
+ - generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml
103
+ - generators/vulcanize/templates/apache/templates.yml
104
+ - generators/vulcanize/templates/base/Capfile
105
+ - generators/vulcanize/templates/base/config/deploy.rb
106
+ - generators/vulcanize/templates/base/config/rubber/common/crontab
107
+ - generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf
108
+ - generators/vulcanize/templates/base/config/rubber/common/rubber.profile
109
+ - generators/vulcanize/templates/base/config/rubber/deploy-setup.rb
110
+ - generators/vulcanize/templates/base/config/rubber/rubber-dns.yml
111
+ - generators/vulcanize/templates/base/config/rubber/rubber.yml
112
+ - generators/vulcanize/templates/base/lib/tasks/rubber.rake
113
+ - generators/vulcanize/templates/base/script/cron-rake
114
+ - generators/vulcanize/templates/base/script/cron-runner
115
+ - generators/vulcanize/templates/base/script/cron-sh
116
+ - generators/vulcanize/templates/base/templates.yml
117
+ - generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf
118
+ - generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf
119
+ - generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml
120
+ - generators/vulcanize/templates/complete_mongrel_mysql/templates.yml
121
+ - generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf
122
+ - generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml
123
+ - generators/vulcanize/templates/complete_passenger_mysql/templates.yml
124
+ - generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb
125
+ - generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise
126
+ - generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf
127
+ - generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb
128
+ - generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb
129
+ - generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf
130
+ - generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml
131
+ - generators/vulcanize/templates/cruise/templates.yml
132
+ - generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb
133
+ - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf
134
+ - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf
135
+ - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf
136
+ - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf
137
+ - generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf
138
+ - generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf
139
+ - generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml
140
+ - generators/vulcanize/templates/haproxy/templates.yml
141
+ - generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb
142
+ - generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh
143
+ - generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml
144
+ - generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf
145
+ - generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml
146
+ - generators/vulcanize/templates/jetty/templates.yml
147
+ - generators/vulcanize/templates/memcached/config/memcached.yml
148
+ - generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml
149
+ - generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf
150
+ - generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin
151
+ - generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml
152
+ - generators/vulcanize/templates/memcached/templates.yml
153
+ - generators/vulcanize/templates/minimal_mysql/templates.yml
154
+ - generators/vulcanize/templates/minimal_nodb/templates.yml
155
+ - generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb
156
+ - generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml
157
+ - generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf
158
+ - generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml
159
+ - generators/vulcanize/templates/mongrel/templates.yml
160
+ - generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf
161
+ - generators/vulcanize/templates/monit/config/rubber/common/monit.conf
162
+ - generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb
163
+ - generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf
164
+ - generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml
165
+ - generators/vulcanize/templates/monit/templates.yml
166
+ - generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf
167
+ - generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf
168
+ - generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf
169
+ - generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb
170
+ - generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf
171
+ - generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf
172
+ - generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf
173
+ - generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml
174
+ - generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb
175
+ - generators/vulcanize/templates/munin/script/munin/example_simple.rb
176
+ - generators/vulcanize/templates/munin/templates.yml
177
+ - generators/vulcanize/templates/mysql/config/rubber/common/database.yml
178
+ - generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb
179
+ - generators/vulcanize/templates/mysql/config/rubber/role/db/crontab
180
+ - generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf
181
+ - generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf
182
+ - generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin
183
+ - generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml
184
+ - generators/vulcanize/templates/mysql/templates.yml
185
+ - generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb
186
+ - generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb
187
+ - generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf
188
+ - generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf
189
+ - generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf
190
+ - generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf
191
+ - generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml
192
+ - generators/vulcanize/templates/mysql_cluster/templates.yml
193
+ - generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml
194
+ - generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf
195
+ - generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy
196
+ - generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf
197
+ - generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua
198
+ - generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb
199
+ - generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml
200
+ - generators/vulcanize/templates/mysql_proxy/templates.yml
201
+ - generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb
202
+ - generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab
203
+ - generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf
204
+ - generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf
205
+ - generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf
206
+ - generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html
207
+ - generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth
208
+ - generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml
209
+ - generators/vulcanize/templates/nginx/templates.yml
210
+ - generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb
211
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf
212
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf
213
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf
214
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf
215
+ - generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf
216
+ - generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml
217
+ - generators/vulcanize/templates/passenger/templates.yml
218
+ - generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb
219
+ - generators/vulcanize/templates/redis/config/rubber/role/redis/crontab
220
+ - generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf
221
+ - generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf
222
+ - generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml
223
+ - generators/vulcanize/templates/redis/templates.yml
224
+ - generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb
225
+ - generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb
226
+ - generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf
227
+ - generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml
228
+ - generators/vulcanize/templates/resque/templates.yml
229
+ - generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml
230
+ - generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb
231
+ - generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab
232
+ - generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf
233
+ - generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml
234
+ - generators/vulcanize/templates/sphinx/templates.yml
235
+ - generators/vulcanize/vulcanize_generator.rb
236
+ - lib/capistrano/hostcmd.rb
237
+ - lib/rubber.rb
238
+ - lib/rubber/capistrano.rb
239
+ - lib/rubber/cloud.rb
240
+ - lib/rubber/cloud/aws.rb
241
+ - lib/rubber/cloud/base.rb
242
+ - lib/rubber/configuration.rb
243
+ - lib/rubber/dns.rb
244
+ - lib/rubber/dns/base.rb
245
+ - lib/rubber/dns/dyndns.rb
246
+ - lib/rubber/dns/nettica.rb
247
+ - lib/rubber/dns/zerigo.rb
248
+ - lib/rubber/environment.rb
249
+ - lib/rubber/generator.rb
250
+ - lib/rubber/instance.rb
251
+ - lib/rubber/recipes/rubber.rb
252
+ - lib/rubber/recipes/rubber/bundles.rb
253
+ - lib/rubber/recipes/rubber/deploy.rb
254
+ - lib/rubber/recipes/rubber/instances.rb
255
+ - lib/rubber/recipes/rubber/load_balancers.rb
256
+ - lib/rubber/recipes/rubber/security_groups.rb
257
+ - lib/rubber/recipes/rubber/setup.rb
258
+ - lib/rubber/recipes/rubber/spot_requests.rb
259
+ - lib/rubber/recipes/rubber/static_ips.rb
260
+ - lib/rubber/recipes/rubber/utils.rb
261
+ - lib/rubber/recipes/rubber/volumes.rb
262
+ - lib/rubber/tasks/rubber.rb
263
+ - lib/rubber/util.rb
264
+ - rails/init.rb
265
+ has_rdoc: true
266
+ homepage: http://github.com/wr0ngway/rubber
267
+ licenses: []
268
+
269
+ post_install_message:
270
+ rdoc_options:
271
+ - --charset=UTF-8
272
+ require_paths:
273
+ - lib
274
+ required_ruby_version: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: "0"
279
+ version:
280
+ required_rubygems_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: "0"
285
+ version:
286
+ requirements: []
287
+
288
+ rubyforge_project: rubber
289
+ rubygems_version: 1.3.5
290
+ signing_key:
291
+ specification_version: 3
292
+ summary: A capistrano plugin for managing multi-instance deployments to the cloud (ec2)
293
+ test_files:
294
+ - test/environment_test.rb
295
+ - test/generator_test.rb
296
+ - test/instance_test.rb
297
+ - test/test_helper.rb
298
+ - test/util_test.rb