bonethug 0.0.80 → 0.0.81

Sign up to get free protection for your applications and to get access to all the features.
data/TODO.txt CHANGED
@@ -6,4 +6,7 @@
6
6
  - thug update needs stil needs to be run twice because the current version gets loaded into memory - need to run some sort of two phase update
7
7
  - some things need to run prior to there being a deploy copy - eg. init-db
8
8
  - conf should return nil if it can't find a node
9
- - rbenv library support - rbenv gays out with 2.x needs readline headers manually specified
9
+ - rbenv library support - rbenv gays out with 2.x needs readline headers manually specified
10
+ - nagios?
11
+ - need more modular configuration of server components for setup scripts
12
+ - thug vhost-local and thug deploy could share more code
data/config/backup.rb CHANGED
@@ -35,7 +35,7 @@ raise "No backup configuraton available" unless backup
35
35
  log_dirs.push('log') unless log_dirs.include? 'log'
36
36
 
37
37
  # back up script
38
- # --------------------------------
38
+ # --------------------------------
39
39
 
40
40
  # safe
41
41
  safe do
@@ -45,7 +45,7 @@ safe do
45
45
  local :path => "#{exec_path}/backups/:kind/:id"
46
46
 
47
47
  # use ftp to back stuff up
48
- if backup.get('ftp')
48
+ if backup.get('ftp')
49
49
  ftp do
50
50
  host backup.get('ftp.host')
51
51
  user backup.get('ftp.user')
data/config/cnf.yml CHANGED
@@ -97,8 +97,10 @@ mail:
97
97
  secure: tls
98
98
  charset_encoding: utf-8
99
99
  port: 587
100
- apache:
100
+ vhost:
101
101
  development:
102
+ conf_path: /etc/apache2/sites-available
103
+ type: apache
102
104
  version: 2.4
103
105
  server_name: development.domain.local
104
106
  server_aliases:
@@ -107,6 +109,8 @@ apache:
107
109
  RAILS_ENV: development
108
110
  APPLICATION_ENV: development
109
111
  staging:
112
+ conf_path: /etc/apache2/sites-available
113
+ type: apache
110
114
  version: 2.2
111
115
  server_name: staging.domain.com
112
116
  server_aliases:
@@ -122,6 +126,8 @@ apache:
122
126
  user: username2
123
127
  pass: passw0rd2
124
128
  production:
129
+ conf_path: /etc/apache2/sites-available
130
+ type: apache
125
131
  version: 2.4
126
132
  server_name: production.domain.com
127
133
  server_aliases:
data/config/deploy.rb CHANGED
@@ -15,6 +15,7 @@
15
15
  require 'rubygems'
16
16
  require 'bonethug/conf'
17
17
  require 'bonethug/installer'
18
+ require 'bonethug/configurator'
18
19
  # require 'mina/bundler' # does stupid stuff with symlinks
19
20
  require 'mina/rails'
20
21
  require 'mina/git'
@@ -34,6 +35,12 @@ conf.add(exec_path + '/config/database.yml' => { root: 'dbs.default' }) if File.
34
35
  # generate a hash
35
36
  cnf = conf.to_hash
36
37
 
38
+ # check if we have a deploy config
39
+ unless conf.get('deploy')
40
+ puts'could not find deployment config'
41
+ exit
42
+ end
43
+
37
44
  # pull config from environment vars
38
45
  env = ENV['to']
39
46
  unless conf.get('deploy.environments').has_key? env
@@ -42,7 +49,7 @@ unless conf.get('deploy.environments').has_key? env
42
49
  end
43
50
 
44
51
  # build config
45
- deploy = conf.node_merge('deploy.common','deploy.environments.'+env)
52
+ deploy = conf.node_merge 'deploy.common','deploy.environments.' + env
46
53
  resources = conf.get('resources','Array') || []
47
54
  log_dirs = conf.get('log_dirs','Array') || []
48
55
  vendor = conf.get('vendor','Array') || []
@@ -260,6 +267,10 @@ task :deploy => :environment do
260
267
  #{echo_cmd %[#{bundle_bin} install #{bundle_options}]}
261
268
  }
262
269
 
270
+ # !!!!!!
271
+ # COMPOSER INSTALL AND BOWER INSTALL NEEDS TO RUN HERE!!!!!!! - ASSET PRECOMPILE WILL FAIL IF DEPENDENCIES ARE NOT INCLUDED!!!!
272
+ # !!!!!!
273
+
263
274
  # rails deploy tasks
264
275
  if deploy.get('project_type') =~ /rails[0-9]?/
265
276
  invoke :'rails:db_migrate'
@@ -267,64 +278,27 @@ task :deploy => :environment do
267
278
  end
268
279
 
269
280
  # build the vhosts
270
- vh_cnf = conf.get('apache.'+env)
271
-
272
- # server aliases
273
- server_aliases = ''
274
- aliases = vh_cnf.get('server_aliases')
275
- if aliases
276
- aliases.each do |index, server_alias|
277
- server_aliases += 'ServerAlias '+server_alias + "\n"
278
- end
279
- end
280
-
281
- # environment variables
282
- env_vars = ''
283
- vars = vh_cnf.get('env_vars')
284
- if vars
285
- vars.each do |k, v|
286
- env_vars += 'SetEnv ' + k + ' ' + v + "\n"
287
- end
288
- end
289
-
290
- # server admin
291
- admin = vh_cnf.get('server_admin')
292
- server_admin = admin ? 'ServerAdmin '+admin : ''
293
-
294
- vh = "
295
- <VirtualHost *:80>
296
-
297
- ServerName #{vh_cnf.get('server_name')}
298
- #{server_aliases}
281
+ vh_cnf = conf.get 'vhost'
282
+ vh_cnf = conf.get 'apache' unless vh_cnf
283
+ vh_cnf = vh_cnf.get env
284
+ conf_path = vh_cnf.get('conf_path') || '/etc/apache2/sites-available'
299
285
 
300
- #{server_admin}
286
+ vh = Bonethug::Configurator.vhost vh_cnf, deploy_to, true
301
287
 
302
- DocumentRoot #{deploy_to}/current/public
288
+ case vh_cnf.get('type')
303
289
 
304
- #{env_vars}
305
- PassEnv PATH
290
+ when "nginx"
306
291
 
307
- CustomLog #{deploy_to}/shared/log/bytes.log bytes
308
- CustomLog #{deploy_to}/shared/log/combined.log combined
309
- ErrorLog #{deploy_to}/shared/log/error.log
292
+ # to be implemented
293
+ puts 'to be implemented'
294
+ exit
310
295
 
311
- <Directory #{deploy_to}/current/public>
296
+ else # apache
312
297
 
313
- Options Indexes MultiViews FollowSymLinks
314
- AllowOverride All
315
- Order allow,deny
316
- Allow from all
317
- #{vh_cnf.get('version').to_f > 2.4 ? 'Require all granted' : ''}
298
+ # install the vhost
299
+ queue! %[sudo echo "#{vh}" > #{conf_path}/#{vhost}.conf]
318
300
 
319
- </Directory>
320
-
321
- </VirtualHost>
322
- "
323
-
324
- # install the vhost
325
- queue! %[touch /etc/apache2/sites-available/#{vhost}.conf]
326
- queue! %[rm /etc/apache2/sites-available/#{vhost}.conf]
327
- queue! %[echo "#{vh}" > /etc/apache2/sites-available/#{vhost}.conf]
301
+ end
328
302
 
329
303
  to :launch do
330
304
 
@@ -407,6 +381,7 @@ task :deploy => :environment do
407
381
  # write to the .htpasswd file
408
382
  queue! %[touch #{deploy_to}/current/.htpasswd]
409
383
  queue! %[echo "#{htpass}" > #{deploy_to}/current/.htpasswd]
384
+
410
385
  else
411
386
 
412
387
  # write the to the .haccess file
data/lib/bonethug/cli.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'rbconfig'
2
+ require 'bonethug/conf'
3
+ require 'bonethug/configurator'
2
4
 
3
5
  module Bonethug
4
6
  class CLI
@@ -102,6 +104,45 @@ module Bonethug
102
104
 
103
105
  end
104
106
 
107
+ when 'vhost-local'
108
+
109
+ # get env
110
+ env = ARGV.last
111
+
112
+ # exec env
113
+ exec_path = File.expand_path('.')
114
+
115
+ # load config
116
+ conf = Conf.new.add(exec_path + '/config/cnf.yml')
117
+ conf.add(exec_path + '/config/database.yml' => { root: 'dbs.default' }) if File.exist? exec_path + '/config/database.yml'
118
+ deploy = conf.node_merge 'deploy.common', 'deploy.environments.' + env
119
+
120
+ # vhost name
121
+ vhost = deploy.get('project_slug') + '_' + env
122
+
123
+ # build the vhosts
124
+ vh_cnf = conf.get 'vhost'
125
+ vh_cnf = conf.get 'apache' unless vh_cnf
126
+ vh_cnf = vh_cnf.get env
127
+ conf_path = vh_cnf.get('conf_path') || '/etc/apache2/sites-available'
128
+
129
+ vh = Configurator.vhost vh_cnf, exec_path
130
+
131
+ case vh_cnf.get('type')
132
+
133
+ when "nginx"
134
+
135
+ # to be implemented
136
+ puts 'to be implemented'
137
+ exit
138
+
139
+ else # apache
140
+
141
+ # install the vhost
142
+ exec "echo \"#{vh}\" > #{conf_path}/#{vhost}.conf"
143
+
144
+ end
145
+
105
146
  when 'init', 'update'
106
147
 
107
148
  # handle args
@@ -0,0 +1,90 @@
1
+ # Class for generating configurations
2
+
3
+ require 'bonethug/conf'
4
+ require 'fileutils'
5
+ require 'find'
6
+ require 'digest/md5'
7
+ require 'yaml'
8
+ require 'rbconfig'
9
+
10
+ module Bonethug
11
+
12
+ class Configurator
13
+
14
+ include FileUtils
15
+ include Digest
16
+
17
+ def self.vhost(vh_cnf, base_path, is_remote = false)
18
+
19
+ # server aliases
20
+ server_aliases = ''
21
+ aliases = vh_cnf.get('server_aliases')
22
+ if aliases
23
+ aliases.each do |index, server_alias|
24
+ server_aliases += 'ServerAlias ' + server_alias + "\n"
25
+ end
26
+ end
27
+
28
+ # environment variables
29
+ env_vars = ''
30
+ vars = vh_cnf.get('env_vars')
31
+ if vars
32
+ vars.each do |k, v|
33
+ env_vars += 'SetEnv ' + k + ' ' + v + "\n"
34
+ end
35
+ end
36
+
37
+ # server admin
38
+ admin = vh_cnf.get('server_admin')
39
+ server_admin = admin ? 'ServerAdmin ' + admin : ''
40
+
41
+ # paths
42
+ shared_path = is_remote ? '/shared' : ''
43
+ current_path = is_remote ? '/current' : ''
44
+
45
+ case vh_cnf.get('type')
46
+
47
+ when "nginx"
48
+
49
+ vh = ""
50
+
51
+ else # apache
52
+
53
+ vh = "
54
+ <VirtualHost *:80>
55
+
56
+ ServerName #{vh_cnf.get('server_name')}
57
+ #{server_aliases}
58
+
59
+ #{server_admin}
60
+
61
+ DocumentRoot #{base_path + current_path}/public
62
+
63
+ #{env_vars}
64
+ PassEnv PATH
65
+
66
+ CustomLog #{base_path + shared_path}/log/bytes.log bytes
67
+ CustomLog #{base_path + shared_path}/log/combined.log combined
68
+ ErrorLog #{base_path + shared_path}/log/error.log
69
+
70
+ <Directory #{base_path + current_path}/public>
71
+
72
+ Options Indexes MultiViews FollowSymLinks
73
+ AllowOverride All
74
+ Order allow,deny
75
+ Allow from all
76
+ #{vh_cnf.get('version').to_f > 2.4 ? 'Require all granted' : ''}
77
+
78
+ </Directory>
79
+
80
+ </VirtualHost>
81
+ "
82
+ end
83
+
84
+ vh
85
+
86
+ end
87
+
88
+ end
89
+
90
+ end
@@ -77,9 +77,9 @@ module Bonethug
77
77
  db_local = db.get env_local
78
78
 
79
79
  if push == 'local' and pull == 'remote'
80
- cmd = "#{remote_ssh} \"mysqldump -u #{db_remote.get 'user'} -p#{db_remote.get 'pass'} #{db_remote.get 'name'} --verbose | bzip2 -c\" | bunzip2 -c | mysql -u #{db_local.get 'user'} -p#{db_local.get 'pass'} #{db_local.get 'name'}"
80
+ cmd = "#{remote_ssh} \"mysqldump -u #{db_remote.get 'user'} -p#{db_remote.get 'pass'} #{db_remote.get 'name'} --verbose --single-transaction -CceKq | bzip2 -c\" | bunzip2 -c | mysql -u #{db_local.get 'user'} -p#{db_local.get 'pass'} #{db_local.get 'name'}"
81
81
  elsif pull == 'local' and push == 'remote'
82
- cmd = "mysqldump -u #{db_local.get 'user'} -p#{db_local.get 'pass'} #{db_local.get 'name'} --verbose | bzip2 -c | #{remote_ssh} \"bunzip2 -c | mysql -u #{db_remote.get 'user'} -p#{db_remote.get 'pass'} #{db_remote.get 'name'}\""
82
+ cmd = "mysqldump -u #{db_local.get 'user'} -p#{db_local.get 'pass'} #{db_local.get 'name'} --verbose --single-transaction -CceKq | bzip2 -c | #{remote_ssh} \"bunzip2 -c | mysql -u #{db_remote.get 'user'} -p#{db_remote.get 'pass'} #{db_remote.get 'name'}\""
83
83
  end
84
84
 
85
85
  puts cmd
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Bonethug
3
- VERSION = "0.0.80"
4
- BUILD_DATE = "2014-05-06 10:37:06 +1200"
3
+ VERSION = "0.0.81"
4
+ BUILD_DATE = "2014-06-02 10:38:16 +1200"
5
5
  end
6
6
 
@@ -13,6 +13,7 @@ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc)
13
13
  sudo add-apt-repository "deb-src http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe restricted multiverse"
14
14
  sudo add-apt-repository ppa:ondrej/apache2
15
15
  sudo add-apt-repository ppa:ondrej/php5
16
+ sudo add-apt-repository ppa:ondrej/mysql-5.6
16
17
 
17
18
  # update
18
19
  sudo apt-get update && sudo apt-get upgrade
@@ -65,7 +66,7 @@ sed -i -e "s/listen = \/var\/run\/php5-fpm.sock/listen = 127.0.0.1:9000/g" /etc/
65
66
 
66
67
  #apache2.4
67
68
  sudo echo -e "<IfModule mod_fastcgi.c>\n AddHandler php5-fcgi .php\n Action php5-fcgi /php5-fcgi\n Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi\n FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -idle-timeout 250 -pass-header Authorization\n <Directory />\nRequire all granted\n </Directory>\n </IfModule>" > /etc/apache2/conf-available/php-fpm.conf
68
- a2enconf php-fpm.conf
69
+ sudo a2enconf php-fpm.conf
69
70
 
70
71
  # Apache
71
72
  # ------
@@ -59,7 +59,7 @@ class Load {
59
59
  self::set_constants();
60
60
 
61
61
  // paths
62
- $base_dir = realpath(__DIR__ . '/..');
62
+ $base_dir = realpath(__DIR__ . '/../../..');
63
63
  $public_dir = realpath($base_dir . '/public');
64
64
 
65
65
  // load conf
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bonethug
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.80
4
+ version: 0.0.81
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-05 00:00:00.000000000 Z
12
+ date: 2014-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -389,6 +389,7 @@ files:
389
389
  - lib/bonethug.rb
390
390
  - lib/bonethug/cli.rb
391
391
  - lib/bonethug/conf.rb
392
+ - lib/bonethug/configurator.rb
392
393
  - lib/bonethug/installer.rb
393
394
  - lib/bonethug/syncer.rb
394
395
  - lib/bonethug/utils.rb
@@ -557,21 +558,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
557
558
  - - ! '>='
558
559
  - !ruby/object:Gem::Version
559
560
  version: '0'
560
- segments:
561
- - 0
562
- hash: -1758899776465409101
563
561
  required_rubygems_version: !ruby/object:Gem::Requirement
564
562
  none: false
565
563
  requirements:
566
564
  - - ! '>='
567
565
  - !ruby/object:Gem::Version
568
566
  version: '0'
569
- segments:
570
- - 0
571
- hash: -1758899776465409101
572
567
  requirements: []
573
568
  rubyforge_project:
574
- rubygems_version: 1.8.23
569
+ rubygems_version: 1.8.23.2
575
570
  signing_key:
576
571
  specification_version: 3
577
572
  summary: Bonethug