badger-rails 1.0.2

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 (114) hide show
  1. data/BadgerGit.png +0 -0
  2. data/COPYING +674 -0
  3. data/LICENSING +30 -0
  4. data/Manifest +112 -0
  5. data/README.md +80 -0
  6. data/Rakefile +36 -0
  7. data/badger-rails.gemspec +34 -0
  8. data/bin/badger +486 -0
  9. data/lib/badger/Capfile +1 -0
  10. data/lib/badger/config/deploy.rb +211 -0
  11. data/lib/badger/config/rails-app.yml +6 -0
  12. data/lib/badger/config/rails-app.yml.bk +6 -0
  13. data/lib/badger/core/claws/app.claw +112 -0
  14. data/lib/badger/core/claws/db-app.claw +59 -0
  15. data/lib/badger/core/claws/rails-app.claw +125 -0
  16. data/lib/badger/core/files/badger/info +0 -0
  17. data/lib/badger/core/files/cap/Capfile +4 -0
  18. data/lib/badger/core/files/cap/deploy/production-app.rb +139 -0
  19. data/lib/badger/core/files/cap/deploy/production.rb +136 -0
  20. data/lib/badger/core/files/cap/deploy/staging-app.rb +139 -0
  21. data/lib/badger/core/files/cap/deploy/staging.rb +134 -0
  22. data/lib/badger/core/files/cap/deploy.rb +6 -0
  23. data/lib/badger/core/files/git/git +0 -0
  24. data/lib/badger/core/files/god/angel/resque-dev.god +54 -0
  25. data/lib/badger/core/files/god/angel/resque-stg.god +54 -0
  26. data/lib/badger/core/files/god/angel/resque.god +55 -0
  27. data/lib/badger/core/files/god/angel/unicorn-stg.god +62 -0
  28. data/lib/badger/core/files/god/angel/unicorn.god +62 -0
  29. data/lib/badger/core/files/god/god +108 -0
  30. data/lib/badger/core/files/god/unicorn-stg.rb +70 -0
  31. data/lib/badger/core/files/god/unicorn.rb +70 -0
  32. data/lib/badger/core/files/logrotate/logrotate.conf +23 -0
  33. data/lib/badger/core/files/logrotate/logrotate.cron +8 -0
  34. data/lib/badger/core/files/mysql/database.yml.bk +18 -0
  35. data/lib/badger/core/files/mysql/db_stats +0 -0
  36. data/lib/badger/core/files/mysql/my.cnf +11 -0
  37. data/lib/badger/core/files/nginx/nginx +106 -0
  38. data/lib/badger/core/files/nginx/nginx.conf +30 -0
  39. data/lib/badger/core/files/nginx/sites/port443.btl +42 -0
  40. data/lib/badger/core/files/nginx/sites/port80.btl +39 -0
  41. data/lib/badger/core/files/nginx/sites/production-web +117 -0
  42. data/lib/badger/core/files/nginx/sites/staging-web +41 -0
  43. data/lib/badger/core/files/postfix/main.cf +678 -0
  44. data/lib/badger/core/files/postfix/master.cf +81 -0
  45. data/lib/badger/core/files/redis/redis-server +59 -0
  46. data/lib/badger/core/files/redis/redis.conf +444 -0
  47. data/lib/badger/core/files/resque/resque.rb +5 -0
  48. data/lib/badger/core/files/resque/resque.yml +19 -0
  49. data/lib/badger/core/files/resque/resque_web.rb +2 -0
  50. data/lib/badger/core/files/ssh/authorized_keys +0 -0
  51. data/lib/badger/core/functions +174 -0
  52. data/lib/badger/core/scripts/app_info +40 -0
  53. data/lib/badger/core/scripts/app_scale +15 -0
  54. data/lib/badger/core/scripts/remove_app +25 -0
  55. data/lib/badger/core/scripts/remove_app_db +30 -0
  56. data/lib/badger/core/scripts/remove_gems +2 -0
  57. data/lib/badger/core/teeth/automake.th +9 -0
  58. data/lib/badger/core/teeth/badger.th +27 -0
  59. data/lib/badger/core/teeth/bison.th +20 -0
  60. data/lib/badger/core/teeth/bundler.th +4 -0
  61. data/lib/badger/core/teeth/capistrano-ext.th +37 -0
  62. data/lib/badger/core/teeth/chkconfig.th +4 -0
  63. data/lib/badger/core/teeth/curl.th +24 -0
  64. data/lib/badger/core/teeth/faac.th +11 -0
  65. data/lib/badger/core/teeth/ffmpeg.th +28 -0
  66. data/lib/badger/core/teeth/firewall.th +70 -0
  67. data/lib/badger/core/teeth/gcc-c++.th +9 -0
  68. data/lib/badger/core/teeth/gcc.th +9 -0
  69. data/lib/badger/core/teeth/git.th +23 -0
  70. data/lib/badger/core/teeth/god.th +17 -0
  71. data/lib/badger/core/teeth/lame.th +9 -0
  72. data/lib/badger/core/teeth/libffi.th +4 -0
  73. data/lib/badger/core/teeth/libid3tag.th +10 -0
  74. data/lib/badger/core/teeth/libmad.th +11 -0
  75. data/lib/badger/core/teeth/libogg.th +9 -0
  76. data/lib/badger/core/teeth/libtool.th +9 -0
  77. data/lib/badger/core/teeth/libxml2.th +19 -0
  78. data/lib/badger/core/teeth/libxslt.th +19 -0
  79. data/lib/badger/core/teeth/libyaml.th +19 -0
  80. data/lib/badger/core/teeth/logrotate.th +19 -0
  81. data/lib/badger/core/teeth/madplay.th +10 -0
  82. data/lib/badger/core/teeth/make.th +9 -0
  83. data/lib/badger/core/teeth/mysql-config.th +40 -0
  84. data/lib/badger/core/teeth/mysql-server.th +16 -0
  85. data/lib/badger/core/teeth/mysql.th +14 -0
  86. data/lib/badger/core/teeth/nginx.th +56 -0
  87. data/lib/badger/core/teeth/ntp.th +15 -0
  88. data/lib/badger/core/teeth/openssl.th +19 -0
  89. data/lib/badger/core/teeth/pcre.th +9 -0
  90. data/lib/badger/core/teeth/plugins.th +14 -0
  91. data/lib/badger/core/teeth/postfix.th +11 -0
  92. data/lib/badger/core/teeth/pwgen.th +9 -0
  93. data/lib/badger/core/teeth/rake.th +12 -0
  94. data/lib/badger/core/teeth/readline.th +19 -0
  95. data/lib/badger/core/teeth/redis.th +18 -0
  96. data/lib/badger/core/teeth/resque.th +12 -0
  97. data/lib/badger/core/teeth/ruby.th +52 -0
  98. data/lib/badger/core/teeth/rubygems.th +17 -0
  99. data/lib/badger/core/teeth/san_juan.th +4 -0
  100. data/lib/badger/core/teeth/sox.th +12 -0
  101. data/lib/badger/core/teeth/speex.th +12 -0
  102. data/lib/badger/core/teeth/sqlite3.th +14 -0
  103. data/lib/badger/core/teeth/ssh_keys.th +10 -0
  104. data/lib/badger/core/teeth/sshpass.th +9 -0
  105. data/lib/badger/core/teeth/sudo.th +9 -0
  106. data/lib/badger/core/teeth/syslog-ng.th +16 -0
  107. data/lib/badger/core/teeth/sysv-rc-conf.th +4 -0
  108. data/lib/badger/core/teeth/x264.th +11 -0
  109. data/lib/badger/core/teeth/xvid.th +11 -0
  110. data/lib/badger/core/teeth/yasm.th +11 -0
  111. data/lib/badger/core/teeth/zlib.th +9 -0
  112. data/lib/core.rb +313 -0
  113. data/lib/errors.rb +202 -0
  114. metadata +297 -0
data/bin/badger ADDED
@@ -0,0 +1,486 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ #--------------------------------#
4
+ #--- Author Nathan Kelley -------#
5
+ #--- Company Curiousminds -------#
6
+ #--- Licensing@curiousminds.com -#
7
+ #--------------------------------#
8
+ #
9
+ require 'fileutils'
10
+ require 'rubygems'
11
+ require 'yaml'
12
+ require 'errors'
13
+ require 'core'
14
+
15
+ @errors = Errors.new
16
+
17
+ def remove_app(rails_root)
18
+ spec = Gem::Specification.find_by_name("badger-rails")
19
+ badger_root = spec.gem_dir + "/lib/"
20
+ FileUtils.cp(Dir.pwd + "/badger.yml", badger_root + "badger/config/rails-app.yml")
21
+ Dir.chdir(badger_root + "badger/")
22
+ while true
23
+ puts <<EOF
24
+
25
+ This will remove the #{ARGV[1]} project from the server.
26
+ Do you wish to remove the database as well? [ y/n ]
27
+
28
+ EOF
29
+ response = STDIN.gets.chomp
30
+ if response == "y"
31
+ exists = `cap #{ARGV[1]} exists`
32
+ if not exists.chomp == "true"
33
+ @errors.errors('rails')
34
+ exit
35
+ end
36
+ `cap #{ARGV[1]} removedb`
37
+ Dir.chdir(rails_root)
38
+ `git remote rm badger`
39
+ break
40
+ elsif response == "n"
41
+ exists = `cap #{ARGV[1]} exists`
42
+ if not exists.chomp == "true"
43
+ @errors.errors('rails')
44
+ exit
45
+ end
46
+ `cap #{ARGV[1]} remove`
47
+ Dir.chdir(rails_root)
48
+ `git remote rm badger`
49
+ break
50
+ end
51
+ end
52
+ end
53
+
54
+ unless ARGV[0].nil?
55
+ argv=ARGV[0].downcase
56
+ end
57
+
58
+ if argv.tr('^A-Za-z', '') == "app"
59
+ if ARGV[1] == "build"
60
+ core_app = Core.new
61
+ core_app.ensure_rails_root
62
+ core_app.ensure_external_db
63
+ core_app.create(argv)
64
+ exit
65
+ elsif ARGV[1] == "scale"
66
+ if ARGV[2].nil? or ARGV[2].to_i == "0"
67
+ @errors.errors('scale int')
68
+ exit
69
+ else
70
+ core_scale = Core.new
71
+ core_scale.ensure_rails_root
72
+ core_scale.scale ARGV[2], ARGV[0]
73
+ exit
74
+ end
75
+ else
76
+ if ARGV[1][0].downcase == "s"
77
+ @errors.errors('scale')
78
+ exit
79
+ elsif ARGV[1][0].downcase == "b"
80
+ @errors.errors('app build')
81
+ exit
82
+ else
83
+ @errors.errors('app usage')
84
+ exit
85
+ end
86
+ end
87
+ end
88
+
89
+ case argv
90
+ when "info"
91
+ core_info = Core.new
92
+ core_info.ensure_rails_root
93
+ core_info.info
94
+
95
+ when "create"
96
+ if ARGV[1].nil?
97
+ @errors.errors('name')
98
+ else
99
+ if ARGV[1] == "db" or ARGV[1][0..2] == "app"
100
+ @errors.errors('specific name')
101
+ exit
102
+ else
103
+ core_create = Core.new
104
+ core_create.ensure_rails_root
105
+ core_create.create
106
+ end
107
+ end
108
+
109
+ when "update"
110
+ if ARGV[1].nil?
111
+ @errors.errors('name')
112
+ else
113
+ core_update = Core.new
114
+ core_update.ensure_rails_root
115
+ core_update.update
116
+ end
117
+
118
+ when "db"
119
+ if not ARGV[1] == "build"
120
+ @errors.errors('db build')
121
+ else
122
+ core_db = Core.new
123
+ core_db.ensure_rails_root
124
+ core_db.db
125
+ end
126
+
127
+ when "gen", "g", "generate"
128
+ case ARGV[1].downcase
129
+ when "ruby-plugin"
130
+ config_dir = Dir.exists?("config/")
131
+ if config_dir
132
+ new_config_dir = Dir.pwd
133
+ if not File.exists?("lib/badger_plugin.rb")
134
+ badger_plugin = <<EOF
135
+ module BadgerPluginMethods
136
+
137
+ def initialize()
138
+ #code for pre-rails migration
139
+ end
140
+
141
+ end
142
+
143
+ class BadgerPlugin
144
+ include BadgerPluginMethods
145
+ end
146
+ EOF
147
+ `echo '#{badger_plugin}' >> lib/badger_plugin.rb`
148
+ puts <<EOF
149
+
150
+ lib/badger_plugin.rb
151
+
152
+ EOF
153
+ else
154
+ @errors.errors('plugins')
155
+ end
156
+ else
157
+ while not Dir.pwd == "/"
158
+ if Dir.exists?("config/")
159
+ break
160
+ else
161
+ Dir.chdir("..")
162
+ end
163
+ end
164
+ if Dir.pwd == "/"
165
+ @errors.errors('rails root')
166
+ else
167
+ config_dir = Dir.pwd
168
+ if not File.exists?("lib/badger_plugin.rb")
169
+ badger_plugin = <<EOF
170
+ module BadgerPluginMethods
171
+
172
+ def initialize()
173
+ #code for pre-rails migration
174
+ end
175
+
176
+ end
177
+
178
+ class BadgerPlugin
179
+ include BadgerPluginMethods
180
+ end
181
+ EOF
182
+ `echo '#{badger_plugin}' >> lib/badger_plugin.rb`
183
+ puts <<EOF
184
+
185
+ lib/badger_plugin.rb
186
+
187
+ EOF
188
+ else
189
+ @errors.errors('plugins')
190
+ end
191
+ end
192
+ end
193
+
194
+ when "plugins"
195
+ config_dir = Dir.exists?("config/")
196
+ if config_dir
197
+ new_config_dir = Dir.pwd
198
+ if not Dir.exists?("lib/badger/")
199
+ `mkdir -p lib/badger/teeth/;
200
+ touch lib/badger/before;
201
+ touch lib/badger/dev;
202
+ touch lib/badger/after;
203
+ touch lib/badger/teeth/fail2ban.th`
204
+ fail_2ban = <<EOF
205
+ #add_fail2ban() {
206
+ # fail2ban-client status && return 0
207
+ # yum -y install fail2ban
208
+ # fail2ban-client start
209
+ #}
210
+ EOF
211
+ `echo '#{fail_2ban}' >> lib/badger/teeth/fail2ban.th`
212
+ `echo '#add_fail2ban' >> lib/badger/after`
213
+ puts <<EOF
214
+ lib/badger
215
+ lib/badger/teeth/
216
+ lib/badger/after
217
+ lib/badger/before
218
+ lib/badger/dev
219
+ lib/badger/teeth/fail2ban.th
220
+ EOF
221
+ else
222
+ @errors.errors('plugins')
223
+ end
224
+ else
225
+ while not Dir.pwd == "/"
226
+ if Dir.exists?("config/")
227
+ break
228
+ else
229
+ Dir.chdir("..")
230
+ end
231
+ end
232
+ if Dir.pwd == "/"
233
+ @errors.errors('rails root')
234
+ else
235
+ config_dir = Dir.pwd
236
+ if not Dir.exists?("lib/badger/")
237
+ `mkdir -p lib/badger/teeth/;
238
+ touch lib/badger/before;
239
+ touch lib/badger/dev;
240
+ touch lib/badger/after;
241
+ touch lib/badger/teeth/fail2ban.th`
242
+ fail_2ban = <<EOF
243
+ #add_fail2ban() {
244
+ # fail2ban-client status && return 0
245
+ # yum -y install fail2ban
246
+ # fail2ban-client start
247
+ #}
248
+ EOF
249
+ `echo '#{fail_2ban}' >> lib/badger/teeth/fail2ban.th`
250
+ `echo '#add_fail2ban' >> lib/badger/after`
251
+ puts <<EOF
252
+ lib/badger
253
+ lib/badger/teeth/
254
+ lib/badger/after
255
+ lib/badger/before
256
+ lib/badger/dev
257
+ lib/badger/teeth/fail2ban.th
258
+ EOF
259
+ else
260
+ @errors.errors('plugins')
261
+ end
262
+ end
263
+ end
264
+
265
+ when "yml"
266
+ config_dir = Dir.exists?("config/")
267
+ if config_dir
268
+ new_config_dir = Dir.pwd
269
+ if not File.exists?("config/badger.yml")
270
+ `touch config/badger.yml`
271
+ badger_yml = <<EOF
272
+ username: "typically root"
273
+ password: "server password"
274
+ domain: "domain or ip of the server"
275
+ port: "ssh port usually port 22"
276
+ redis: false #true will host redis locally
277
+ environment: "production" # or "staging", development and testing are excluded.
278
+ EOF
279
+ `echo '#{badger_yml}' >> config/badger.yml`
280
+ puts "config/badger.yml"
281
+ else
282
+ @errors.errors('badger yaml')
283
+ end
284
+ else
285
+ while not Dir.pwd == "/"
286
+ if Dir.exists?("config/")
287
+ break
288
+ else
289
+ Dir.chdir("..")
290
+ end
291
+ end
292
+ if Dir.pwd == "/"
293
+ @errors.errors('rails root')
294
+ else
295
+ config_dir = Dir.pwd
296
+ if not File.exists?("config/badger.yml")
297
+ `touch config/badger.yml`
298
+ badger_yml = <<EOF
299
+ username: "typically root"
300
+ password: "server password"
301
+ domain: "domain or ip of the server"
302
+ port: "ssh port usually port 22"
303
+ redis: false #true will host redis locally
304
+ environment: "production" # or "staging", development and testing are excluded.
305
+ EOF
306
+ `echo '#{badger_yml}' >> config/badger.yml`
307
+ puts "config/badger.yml"
308
+ else
309
+ @errors.errors('badger yaml')
310
+ end
311
+ end
312
+ end
313
+ else
314
+ if ARGV[1][0].downcase == "p"
315
+ @errors.errors('generate plugins')
316
+ elsif ARGV[1][0].downcase == "y"
317
+ @errors.errors('generate yaml')
318
+ else
319
+ @errors.errors('generate')
320
+ end
321
+ end
322
+
323
+ when "remove"
324
+ if ARGV[1].nil?
325
+ @errors.errors('name')
326
+ else
327
+ config_dir = Dir.exists?("config/")
328
+ if config_dir
329
+ new_config_dir = Dir.pwd
330
+ Dir.chdir("config/")
331
+ remove_app(new_config_dir)
332
+ else
333
+ while not Dir.pwd == "/"
334
+ if Dir.exists?("config/")
335
+ break
336
+ else
337
+ Dir.chdir("..")
338
+ end
339
+ end
340
+ if Dir.pwd == "/"
341
+ @errors.errors('rails root')
342
+ else
343
+ config_dir = Dir.pwd
344
+ Dir.chdir("config/")
345
+ remove_app(config_dir)
346
+ end
347
+ end
348
+ end
349
+
350
+ when "rake"
351
+ core_rake = Core.new
352
+ core_rake.ensure_rails_root
353
+ core_rake.rake_tasks
354
+
355
+ when "logs"
356
+ core_logs = Core.new
357
+ core_logs.ensure_rails_root
358
+ core_logs.badger_logs
359
+
360
+ when "gemset"
361
+ case ARGV[1]
362
+ when "clear"
363
+ spec = Gem::Specification.find_by_name("badger-rails")
364
+ badger_root = spec.gem_dir + "/lib/"
365
+ Dir.chdir(badger_root + "badger/")
366
+ while true
367
+ puts <<EOF
368
+
369
+ Are you sure you want to remove all gems from the server? [ y/n ]
370
+
371
+ EOF
372
+ response = STDIN.gets.chomp
373
+ if response == "y"
374
+ `cap rails-app gemset_clear`
375
+ break
376
+ elsif response == "n"
377
+ exit
378
+ end
379
+ end
380
+ else
381
+ @errors.errors('gemset clear')
382
+ end
383
+
384
+ when "help", "-h", "--help"
385
+ @errors.errors('usage')
386
+ exit
387
+
388
+ when "deploy"
389
+ config_dir = Dir.exists?("config/")
390
+ if config_dir
391
+ new_config_dir = Dir.pwd
392
+ if `cat Gemfile.lock | grep therubyracer` == ""
393
+ @errors.errors('rubyracer')
394
+ exit
395
+ elsif `cat Gemfile.lock | grep mysql2` == ""
396
+ @errors.errors('mysql2')
397
+ exit
398
+ elsif `cat Gemfile.lock | grep unicorn` == ""
399
+ @errors.errors('unicorn')
400
+ exit
401
+ end
402
+ spec = Gem::Specification.find_by_name("badger-rails")
403
+ badger_root = spec.gem_dir + "/lib/"
404
+ if Dir.exists?("lib/badger/") and File.exists?("lib/badger/before") and File.exists?("lib/badger/after") and Dir.exists?("lib/badger/teeth/")
405
+ `cp -rf lib/badger #{badger_root}badger/core/scripts/badger`
406
+ else
407
+ `rm -rf #{badger_root}badger/core/scripts/badger`
408
+ end
409
+ Dir.chdir("config/")
410
+ FileUtils.cp(Dir.pwd + "/badger.yml", badger_root + "badger/config/rails-app.yml")
411
+ Dir.chdir(badger_root + "badger/")
412
+ if File.exists?("#{Dir.home}/.ssh/id_rsa.pub")
413
+ `cap rails-app deploy`
414
+ unless ARGV[1].nil?
415
+ if ARGV[1].downcase == "--with-workers"
416
+ Dir.chdir(new_config_dir)
417
+ core_app = Core.new
418
+ core_app.ensure_rails_root
419
+ core_app.ensure_external_db
420
+ badger_yml = core_app.yml
421
+ badger_yml.keys.each do |k|
422
+ if k.tr('^A-Za-z', '') == "app"
423
+ core_app.create(k)
424
+ end
425
+ end
426
+ exit
427
+ end
428
+ end
429
+ else
430
+ @errors.errors('ssh')
431
+ end
432
+ else
433
+ while not Dir.pwd == "/"
434
+ if Dir.exists?("config/")
435
+ break
436
+ else
437
+ Dir.chdir("..")
438
+ end
439
+ end
440
+ if Dir.pwd == "/"
441
+ @errors.errors('rails root')
442
+ else
443
+ config_dir = Dir.pwd
444
+ if `cat Gemfile.lock | grep therubyracer` == ""
445
+ @errors.errors('rubyracer')
446
+ exit
447
+ elsif `cat Gemfile.lock | grep mysql2` == ""
448
+ @errors.errors('mysql2')
449
+ exit
450
+ elsif `cat Gemfile.lock | grep unicorn` == ""
451
+ @errors.errors('unicorn')
452
+ exit
453
+ end
454
+ spec = Gem::Specification.find_by_name("badger-rails")
455
+ badger_root = spec.gem_dir + "/lib/"
456
+ if Dir.exists?("lib/badger/")
457
+ `cp -rf lib/badger #{badger_root}badger/core/scripts/badger`
458
+ end
459
+ Dir.chdir("config/")
460
+ FileUtils.cp(Dir.pwd + "/badger.yml", badger_root + "badger/config/rails-app.yml")
461
+ Dir.chdir(badger_root + "badger/")
462
+ if File.exists?("#{Dir.home}/.ssh/id_rsa.pub")
463
+ `cap rails-app deploy`
464
+ unless ARGV[1].nil?
465
+ if ARGV[1].downcase == "--with-workers"
466
+ Dir.chdir(config_dir)
467
+ core_app = Core.new
468
+ core_app.ensure_rails_root
469
+ core_app.ensure_external_db
470
+ badger_yml = core_app.yml
471
+ badger_yml.keys.each do |k|
472
+ if k.tr('^A-Za-z', '') == "app"
473
+ core_app.create(k)
474
+ end
475
+ end
476
+ exit
477
+ end
478
+ end
479
+ else
480
+ @errors.errors('ssh')
481
+ end
482
+ end
483
+ end
484
+ else
485
+ @errors.errors('usage')
486
+ end
@@ -0,0 +1 @@
1
+ load 'config/deploy.rb'
@@ -0,0 +1,211 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'yaml'
4
+
5
+ def remote_file_exists?(full_path)
6
+ 'true' == capture("if [ -d #{full_path} ]; then echo 'true'; fi").strip
7
+ end
8
+
9
+ def remote_directory_empty?(full_path)
10
+ 'true' == capture('[ "$(ls -A /opt/git/)" ] && echo "false" || echo "true"').strip
11
+ end
12
+
13
+ def check_local_db(teh_yml)
14
+ if teh_yml['local_db'] == nil or teh_yml['local_db'] == true
15
+ puts
16
+ puts "Worker servers cannot be deployed with a local project database."
17
+ puts "Please use an exteral database."
18
+ puts
19
+ exit
20
+ end
21
+ end
22
+
23
+ yml = YAML.load_file "config/rails-app.yml"
24
+ set :user, yml['username']
25
+ set :password, yml['password']
26
+ set :domain, yml['domain']
27
+ set :port, yml['port']
28
+ set :server, yml['server']
29
+ set :environment, yml['environment']
30
+
31
+ role :web, domain
32
+
33
+ desc "host"
34
+ task ARGV[0], :roles => :web do
35
+ case ARGV[1]
36
+ when "db_setup", "db_sync", "db_deploy"
37
+ roles[:app].clear
38
+ roles[:web].clear
39
+ set :user, yml['db']['username']
40
+ set :password, yml['db']['password']
41
+ set :domain, yml['db']['domain']
42
+ set :port, yml['db']['port']
43
+ role :db, domain
44
+ when "app_setup", "app_sync", "app_deploy", "scale"
45
+ roles[:app].clear
46
+ roles[:web].clear
47
+ set :user, yml[ARGV[0]]['username']
48
+ set :password, yml[ARGV[0]]['password']
49
+ set :domain, yml[ARGV[0]]['domain']
50
+ set :port, yml[ARGV[0]]['port']
51
+ role :app, domain
52
+ end
53
+ end
54
+
55
+ desc "info"
56
+ task :info, roles => :web do
57
+ run "cd /etc/badger/core/scripts/; chmod +x app_info; ./app_info"
58
+ end
59
+
60
+ desc "scale"
61
+ task :scale, roles => :app do
62
+ run "cd /etc/badger/core/scripts/; chmod +x app_scale; ./app_scale #{workers} #{yml['environment']}"
63
+ end
64
+
65
+ desc "exists"
66
+ task :exists, roles => :web do
67
+ if remote_file_exists?("/opt/git/#{ARGV[0]}.git")
68
+ puts "true"
69
+ end
70
+ end
71
+
72
+ desc "createExists"
73
+ task :createExists, roles => :web do
74
+ if remote_directory_empty?("/opt/git/#{ARGV[0]}.git")
75
+ puts "false"
76
+ else
77
+ puts "true"
78
+ end
79
+ end
80
+
81
+ desc "sync"
82
+ task :sync, :roles => :web do
83
+ upload "../badger/core", "/etc/badger/", :via => :scp, :recursive => :true
84
+ end
85
+
86
+ desc "db_sync"
87
+ task :db_sync, :roles => :db do
88
+ upload "../badger/core", "/etc/badger/", :via => :scp, :recursive => :true
89
+ end
90
+
91
+ desc "app_sync"
92
+ task :app_sync, :roles => :app do
93
+ upload "../badger/core", "/etc/badger/", :via => :scp, :recursive => :true
94
+ end
95
+
96
+ desc "setup"
97
+ task :setup, :roles => :web do
98
+ `cat ~/.ssh/id_rsa.pub >> core/files/ssh/authorized_keys`
99
+ run <<EOF
100
+ mkdir -p /etc/badger/core;
101
+ [ "$(cat /etc/issue | grep CentOS)" ] && rpm -Uvh https://github.com/downloads/curiousminds/packages/epel-release-6-5.noarch.rpm;
102
+ [ "$(cat /etc/issue | grep CentOS)" ] && yum -y repolist;
103
+ [ "$(cat /etc/issue | grep CentOS)" ] && yum -y install git && yum -y update git;
104
+ [ "$(cat /etc/issue | grep Red)" ] && rpm -Uvh https://github.com/downloads/curiousminds/packages/epel-release-6-5.noarch.rpm;
105
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y repolist;
106
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y install git && yum -y update git;
107
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y update git;
108
+ [ "$(cat /etc/issue | grep Ubuntu)" ] && apt-get update;
109
+ [ "$(cat /etc/issue | grep Ubuntu)" ] && apt-get -y install git-core;
110
+ [ "$(cat /etc/issue | grep Debian)" ] && apt-get update;
111
+ [ "$(cat /etc/issue | grep Debian)" ] && apt-get -y install git-core;
112
+ EOF
113
+ end
114
+
115
+ desc "db_setup"
116
+ task :db_setup, :roles => :db do
117
+ `cat ~/.ssh/id_rsa.pub >> core/files/ssh/authorized_keys`
118
+ run <<EOF
119
+ mkdir -p /etc/badger/core;
120
+ [ "$(cat /etc/issue | grep CentOS)" ] && rpm -Uvh https://github.com/downloads/curiousminds/packages/epel-release-6-5.noarch.rpm;
121
+ [ "$(cat /etc/issue | grep CentOS)" ] && yum -y repolist;
122
+ [ "$(cat /etc/issue | grep CentOS)" ] && yum -y install git && yum -y update git;
123
+ [ "$(cat /etc/issue | grep Red)" ] && rpm -Uvh https://github.com/downloads/curiousminds/packages/epel-release-6-5.noarch.rpm;
124
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y repolist;
125
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y install git && yum -y update git;
126
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y update git;
127
+ [ "$(cat /etc/issue | grep Ubuntu)" ] && apt-get update;
128
+ [ "$(cat /etc/issue | grep Ubuntu)" ] && apt-get -y install git-core;
129
+ [ "$(cat /etc/issue | grep Debian)" ] && apt-get update;
130
+ [ "$(cat /etc/issue | grep Debian)" ] && apt-get -y install git-core;
131
+ EOF
132
+ end
133
+
134
+ desc "app_setup"
135
+ task :app_setup, :roles => :app do
136
+ `cat ~/.ssh/id_rsa.pub >> core/files/ssh/authorized_keys`
137
+ run <<EOF
138
+ mkdir -p /etc/badger/core;
139
+ [ "$(cat /etc/issue | grep CentOS)" ] && rpm -Uvh https://github.com/downloads/curiousminds/packages/epel-release-6-5.noarch.rpm;
140
+ [ "$(cat /etc/issue | grep CentOS)" ] && yum -y repolist;
141
+ [ "$(cat /etc/issue | grep CentOS)" ] && yum -y install git && yum -y update git;
142
+ [ "$(cat /etc/issue | grep Red)" ] && rpm -Uvh https://github.com/downloads/curiousminds/packages/epel-release-6-5.noarch.rpm;
143
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y repolist;
144
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y install git && yum -y update git;
145
+ [ "$(cat /etc/issue | grep Red)" ] && yum -y update git;
146
+ [ "$(cat /etc/issue | grep Ubuntu)" ] && apt-get update;
147
+ [ "$(cat /etc/issue | grep Ubuntu)" ] && apt-get -y install git-core;
148
+ [ "$(cat /etc/issue | grep Debian)" ] && apt-get update;
149
+ [ "$(cat /etc/issue | grep Debian)" ] && apt-get -y install git-core;
150
+ EOF
151
+ end
152
+
153
+ desc "db_deploy"
154
+ task :db_deploy, :roles => :db do
155
+ run "chmod +x /etc/badger/core/claws/#{ARGV[0]}.claw; /etc/badger/core/claws/./#{ARGV[0]}.claw"
156
+ end
157
+
158
+ desc "app_deploy"
159
+ task :app_deploy, :roles => :app do
160
+ check_local_db(yml)
161
+ run "chmod +x /etc/badger/core/claws/app.claw; /etc/badger/core/claws/./app.claw"
162
+ end
163
+
164
+ desc "deploy"
165
+ task :deploy, :roles => :web do
166
+ if Dir.exists?("../badger/core/scripts/badger/")
167
+ upload "../badger/core/scripts/badger", "/etc/badger/core/scripts/", :via => :scp, :recursive => :true
168
+ end
169
+ run "chmod +x /etc/badger/core/claws/#{ARGV[0]}.claw; /etc/badger/core/claws/./#{ARGV[0]}.claw"
170
+ end
171
+
172
+ desc "gemset_clear"
173
+ task :gemset_clear, :roles => :web do
174
+ run "cd /etc/badger/core/scripts/; chmod +x *; ./remove_gems"
175
+ end
176
+
177
+ desc "git"
178
+ task :git, :roles => :web do
179
+ ssh = `cat ~/.ssh/id_rsa.pub`
180
+ run "groupadd git; useradd -m git -g git && mkdir -p /home/git/.ssh/ && touch /home/git/.ssh/authorized_keys; chown git /home/git/.ssh; echo #{ssh} >> /home/git/.ssh/authorized_keys"
181
+ run "mkdir -p /opt/git/#{ARGV[0]}.git; cd /opt/git/#{ARGV[0]}.git; git --bare init; chown -R git:git /opt/git/;"
182
+ run "echo git@#{yml['domain']}:/opt/git/#{ARGV[0]}.git > /etc/badger/core/files/git/git"
183
+ end
184
+
185
+ desc "rake"
186
+ task :rake, :roles => :web do
187
+ run "cd /opt/web/current/; PATH=/opt/rubygems/bin:$PATH; rake #{brat.gsub("^", " ")} RAILS_ENV=#{environment}"
188
+ end
189
+
190
+ desc "logs"
191
+ task :logs, :roles => :web do
192
+ if brat == "tail"
193
+ trap("INT") do
194
+ run "pkill tail"
195
+ exit
196
+ end
197
+ run "tail -f /opt/web/current/log/#{yml['environment']}.log /opt/web/current/log/god_unicorn.log /var/log/nginx/access.log /var/log/nginx/error.log"
198
+ else
199
+ run "tail /opt/web/current/log/#{yml['environment']}.log /opt/web/current/log/god_unicorn.log /var/log/nginx/access.log /var/log/nginx/error.log"
200
+ end
201
+ end
202
+
203
+ desc "remove"
204
+ task :remove, :roles => :web do
205
+ run "cd /etc/badger/core/scripts/; chmod +x remove_app; ./remove_app #{ARGV[0]}"
206
+ end
207
+
208
+ desc "removedb"
209
+ task :removedb, :roles => :web do
210
+ run "cd /etc/badger/core/scripts/; chmod +x remove_app_db; ./remove_app_db #{ARGV[0]}"
211
+ end
@@ -0,0 +1,6 @@
1
+ username: "typically root"
2
+ password: "server password"
3
+ domain: "domain or ip of the server"
4
+ port: "ssh port usually port 22"
5
+ redis: false #true will host redis locally
6
+ environment: "production" # or "staging", development and testing are excluded.