pvcglue 0.1.39 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/README.md +12 -3
  5. data/bin/pvc +4 -2
  6. data/lib/pvcglue.rb +106 -21
  7. data/lib/pvcglue/bootstrap.rb +1 -1
  8. data/lib/pvcglue/cli.rb +28 -17
  9. data/lib/pvcglue/cloud.rb +243 -56
  10. data/lib/pvcglue/configuration.rb +43 -5
  11. data/lib/pvcglue/connection.rb +236 -0
  12. data/lib/pvcglue/custom_hashie.rb +3 -0
  13. data/lib/pvcglue/db.rb +19 -13
  14. data/lib/pvcglue/digital_ocean.rb +21 -0
  15. data/lib/pvcglue/env.rb +52 -28
  16. data/lib/pvcglue/manager.rb +38 -25
  17. data/lib/pvcglue/minion.rb +182 -0
  18. data/lib/pvcglue/nodes.rb +1 -1
  19. data/lib/pvcglue/{packages → old_packages}/bootstrap.rb +15 -15
  20. data/lib/pvcglue/{packages → old_packages}/env.rb +8 -8
  21. data/lib/pvcglue/old_packages/firewall.rb +48 -0
  22. data/lib/pvcglue/old_packages/manager.rb +116 -0
  23. data/lib/pvcglue/{packages → old_packages}/monit-bootstrap.rb +0 -0
  24. data/lib/pvcglue/{packages → old_packages}/monit-web.rb +0 -0
  25. data/lib/pvcglue/{packages → old_packages}/nginx.rb +0 -0
  26. data/lib/pvcglue/{packages → old_packages}/nodejs.rb +0 -0
  27. data/lib/pvcglue/{packages → old_packages}/passenger.rb +0 -0
  28. data/lib/pvcglue/old_packages/postgresql.rb +10 -0
  29. data/lib/pvcglue/{packages → old_packages}/role_db.rb +9 -9
  30. data/lib/pvcglue/{packages → old_packages}/role_lb.rb +6 -6
  31. data/lib/pvcglue/{packages → old_packages}/role_memcached.rb +0 -0
  32. data/lib/pvcglue/{packages → old_packages}/role_redis.rb +0 -0
  33. data/lib/pvcglue/{packages → old_packages}/role_web.rb +9 -9
  34. data/lib/pvcglue/old_packages/rvm.rb +78 -0
  35. data/lib/pvcglue/{packages → old_packages}/timezone.rb +0 -0
  36. data/lib/pvcglue/{packages → old_packages}/ubuntu.rb +0 -0
  37. data/lib/pvcglue/packages.rb +192 -71
  38. data/lib/pvcglue/packages/apt.rb +74 -0
  39. data/lib/pvcglue/packages/apt_repos.rb +48 -0
  40. data/lib/pvcglue/packages/apt_update.rb +18 -0
  41. data/lib/pvcglue/packages/apt_upgrade.rb +20 -0
  42. data/lib/pvcglue/packages/authorized_keys.rb +33 -0
  43. data/lib/pvcglue/packages/bundler.rb +14 -0
  44. data/lib/pvcglue/packages/dir_base.rb +16 -0
  45. data/lib/pvcglue/packages/dir_shared.rb +16 -0
  46. data/lib/pvcglue/packages/firewall.rb +30 -46
  47. data/lib/pvcglue/packages/load_balancer.rb +71 -0
  48. data/lib/pvcglue/packages/maintenance_mode.rb +28 -0
  49. data/lib/pvcglue/packages/manager.rb +101 -99
  50. data/lib/pvcglue/packages/postgresql.rb +36 -8
  51. data/lib/pvcglue/packages/roles.rb +23 -0
  52. data/lib/pvcglue/packages/ruby.rb +13 -0
  53. data/lib/pvcglue/packages/rvm.rb +18 -71
  54. data/lib/pvcglue/packages/secrets.rb +36 -0
  55. data/lib/pvcglue/packages/ssh_key_check.rb +11 -0
  56. data/lib/pvcglue/packages/ssl.rb +45 -0
  57. data/lib/pvcglue/packages/ssl_acme.rb +29 -0
  58. data/lib/pvcglue/packages/swap.rb +14 -0
  59. data/lib/pvcglue/packages/unattended_upgrades.rb +20 -0
  60. data/lib/pvcglue/packages/users.rb +20 -0
  61. data/lib/pvcglue/packages/web.rb +50 -0
  62. data/lib/pvcglue/stack.rb +166 -0
  63. data/lib/pvcglue/templates/50unattended-upgrades.erb +63 -0
  64. data/lib/pvcglue/templates/capfile.erb +4 -1
  65. data/lib/pvcglue/templates/deploy.rb.erb +3 -2
  66. data/lib/pvcglue/templates/lb.sites-enabled.erb +15 -9
  67. data/lib/pvcglue/templates/letsencrypt-webroot.erb +3 -0
  68. data/lib/pvcglue/templates/pg_hba.conf.erb +1 -2
  69. data/lib/pvcglue/templates/postgresql.conf.erb +376 -291
  70. data/lib/pvcglue/templates/stage-deploy.rb.erb +2 -2
  71. data/lib/pvcglue/templates/web.bashrc.erb +16 -5
  72. data/lib/pvcglue/templates/web.nginx.conf.erb +1 -1
  73. data/lib/pvcglue/templates/web.sites-enabled.erb +1 -1
  74. data/lib/pvcglue/version.rb +1 -1
  75. data/pvcglue.gemspec +17 -12
  76. metadata +125 -22
@@ -10,8 +10,8 @@ set :delayed_job_args, "<%= Pvcglue.cloud.delayed_job_args %>"
10
10
  <% end %>
11
11
  set :ssh_options, {port: <%= Pvcglue.cloud.port_in_context(:deploy) %>}
12
12
 
13
- <% Pvcglue.cloud.nodes_in_stage('web').each do |node, node_config| %>
14
- server '<%= node_config[:public_ip] %>', roles: %w{web app db}, user: 'deploy' # server: <%= node.to_s %>
13
+ <% Pvcglue.cloud.minions_filtered('web').each do |minion_name, minion| %>
14
+ server '<%= minion.public_ip %>', roles: %w{web app db}, user: '<%= minion.remote_user_name %>' # server: <%= minion_name.to_s %>
15
15
  <% end %>
16
16
  <% if Pvcglue.cloud.db_rebuild %>
17
17
 
@@ -10,7 +10,10 @@ fi
10
10
  # for examples
11
11
 
12
12
  # If not running interactively, don't do anything
13
- [ -z "$PS1" ] && return
13
+ case $- in
14
+ *i*) ;;
15
+ *) return;;
16
+ esac
14
17
 
15
18
  # don't put duplicate lines or lines starting with space in the history.
16
19
  # See bash(1) for more options
@@ -35,13 +38,13 @@ shopt -s checkwinsize
35
38
  [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
36
39
 
37
40
  # set variable identifying the chroot you work in (used in the prompt below)
38
- if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
41
+ if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
39
42
  debian_chroot=$(cat /etc/debian_chroot)
40
43
  fi
41
44
 
42
45
  # set a fancy prompt (non-color, unless we know we "want" color)
43
46
  case "$TERM" in
44
- xterm-color) color_prompt=yes;;
47
+ xterm-color|*-256color) color_prompt=yes;;
45
48
  esac
46
49
 
47
50
  # uncomment for a colored prompt, if the terminal has the capability; turned
@@ -88,6 +91,9 @@ if [ -x /usr/bin/dircolors ]; then
88
91
  alias egrep='egrep --color=auto'
89
92
  fi
90
93
 
94
+ # colored GCC warnings and errors
95
+ #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
96
+
91
97
  # some more ls aliases
92
98
  alias ll='ls -alF'
93
99
  alias la='ls -A'
@@ -109,12 +115,17 @@ fi
109
115
  # enable programmable completion features (you don't need to enable
110
116
  # this, if it's already enabled in /etc/bash.bashrc and /etc/profile
111
117
  # sources /etc/bash.bashrc).
112
- if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
118
+ if ! shopt -oq posix; then
119
+ if [ -f /usr/share/bash-completion/bash_completion ]; then
120
+ . /usr/share/bash-completion/bash_completion
121
+ elif [ -f /etc/bash_completion ]; then
113
122
  . /etc/bash_completion
114
123
  fi
115
124
 
116
125
  # Best practice dictates that this should be moved to .bash_profile
117
126
  # http://askubuntu.com/questions/121073/why-bash-profile-is-not-getting-sourced-when-opening-a-terminal
118
127
  # but this works ok for now, it just has to be in two places. It should be done at the end of this file.
119
- PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
128
+ export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
120
129
  [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
130
+
131
+ fi
@@ -78,7 +78,7 @@ http {
78
78
  return 444;
79
79
  }
80
80
 
81
- <% Pvcglue.cloud.web_nginx_http.each do |option| %>
81
+ <% (minion.web_nginx_http || []).each do |option| %>
82
82
  <%= " #{option};\n" %>
83
83
  <% end %>
84
84
 
@@ -8,7 +8,7 @@ server {
8
8
 
9
9
  # Custom options from web_nginx_server
10
10
 
11
- <% Pvcglue.cloud.web_nginx_server.each do |option| %>
11
+ <% (minion.web_nginx_server || []).each do |option| %>
12
12
  <%= " #{option};\n" %>
13
13
  <% end %>
14
14
 
@@ -1,3 +1,3 @@
1
1
  module Pvcglue
2
- VERSION = "0.1.39"
2
+ VERSION = '0.9.0'
3
3
  end
data/pvcglue.gemspec CHANGED
@@ -4,30 +4,35 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'pvcglue/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "pvcglue"
7
+ spec.name = 'pvcglue'
8
8
  spec.version = Pvcglue::VERSION
9
- spec.authors = ["Andrew Lyric"]
10
- spec.email = ["talyric@gmail.com"]
9
+ spec.authors = ['T. Andrew Lyric']
10
+ spec.email = ['talyric@gmail.com']
11
11
  spec.description = %q{PVC_Glue description}
12
12
  spec.summary = %q{PVC_Glue summary}
13
- spec.homepage = "https://github.com/talyric/pvcglue"
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/talyric/pvcglue'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", '>= 1.3.0', '< 2.0'
22
- spec.add_development_dependency "rake", '~> 10.1'
21
+ spec.add_development_dependency 'bundler', '>= 1.3.0', '< 2.0'
22
+ spec.add_development_dependency 'rake', '~> 10.1'
23
23
 
24
- spec.add_dependency "thor", '~> 0.19', '>= 0.19.1'
25
- spec.add_dependency "toml-rb", '~> 0.1', '>= 0.1.6'
26
- spec.add_dependency "orca", '= 0.4', '= 0.4.0'
24
+ spec.add_dependency 'thor', '~> 0.19', '>= 0.19.1'
25
+ spec.add_dependency 'toml-rb', '~> 0.3', '>= 0.3.15'
26
+ spec.add_dependency 'orca', '= 0.4', '= 0.4.0'
27
27
  spec.add_dependency 'capistrano', '~> 3.4.0', '>= 3.4.1'
28
28
  spec.add_dependency 'capistrano-bundler', '~> 1.1', '>= 1.1.1'
29
29
  spec.add_dependency 'capistrano-rails', '~> 1.1', '>= 1.1.1'
30
30
  spec.add_dependency 'capistrano-rvm', '~> 0.1', '>= 0.1.1'
31
- spec.add_dependency "sshkit", '~> 1.3', '>= 1.3.0'
31
+ spec.add_dependency 'sshkit', '~> 1.3', '>= 1.3.0'
32
+ spec.add_dependency 'awesome_print'
33
+ spec.add_dependency 'hashie'
34
+ spec.add_dependency 'droplet_kit'
35
+ spec.add_dependency 'paint'
36
+ spec.add_dependency 'pry'
32
37
 
33
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pvcglue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.39
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
- - Andrew Lyric
7
+ - T. Andrew Lyric
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-26 00:00:00.000000000 Z
11
+ date: 2017-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,20 +70,20 @@ dependencies:
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '0.1'
73
+ version: '0.3'
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 0.1.6
76
+ version: 0.3.15
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '0.1'
83
+ version: '0.3'
84
84
  - - ">="
85
85
  - !ruby/object:Gem::Version
86
- version: 0.1.6
86
+ version: 0.3.15
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: orca
89
89
  requirement: !ruby/object:Gem::Requirement
@@ -204,6 +204,76 @@ dependencies:
204
204
  - - ">="
205
205
  - !ruby/object:Gem::Version
206
206
  version: 1.3.0
207
+ - !ruby/object:Gem::Dependency
208
+ name: awesome_print
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :runtime
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: hashie
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :runtime
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ - !ruby/object:Gem::Dependency
236
+ name: droplet_kit
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :runtime
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: paint
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ type: :runtime
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ - !ruby/object:Gem::Dependency
264
+ name: pry
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ type: :runtime
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
207
277
  description: PVC_Glue description
208
278
  email:
209
279
  - talyric@gmail.com
@@ -213,6 +283,8 @@ extensions: []
213
283
  extra_rdoc_files: []
214
284
  files:
215
285
  - ".gitignore"
286
+ - ".ruby-gemset"
287
+ - ".ruby-version"
216
288
  - Gemfile
217
289
  - LICENSE.txt
218
290
  - README.md
@@ -227,36 +299,66 @@ files:
227
299
  - lib/pvcglue/cli.rb
228
300
  - lib/pvcglue/cloud.rb
229
301
  - lib/pvcglue/configuration.rb
302
+ - lib/pvcglue/connection.rb
303
+ - lib/pvcglue/custom_hashie.rb
230
304
  - lib/pvcglue/db.rb
231
305
  - lib/pvcglue/deploy.rb
306
+ - lib/pvcglue/digital_ocean.rb
232
307
  - lib/pvcglue/env.rb
233
308
  - lib/pvcglue/local.rb
234
309
  - lib/pvcglue/manager.rb
310
+ - lib/pvcglue/minion.rb
235
311
  - lib/pvcglue/monit.rb
236
312
  - lib/pvcglue/nodes.rb
313
+ - lib/pvcglue/old_packages/bootstrap.rb
314
+ - lib/pvcglue/old_packages/env.rb
315
+ - lib/pvcglue/old_packages/firewall.rb
316
+ - lib/pvcglue/old_packages/manager.rb
317
+ - lib/pvcglue/old_packages/monit-bootstrap.rb
318
+ - lib/pvcglue/old_packages/monit-web.rb
319
+ - lib/pvcglue/old_packages/nginx.rb
320
+ - lib/pvcglue/old_packages/nodejs.rb
321
+ - lib/pvcglue/old_packages/passenger.rb
322
+ - lib/pvcglue/old_packages/postgresql.rb
323
+ - lib/pvcglue/old_packages/role_db.rb
324
+ - lib/pvcglue/old_packages/role_lb.rb
325
+ - lib/pvcglue/old_packages/role_memcached.rb
326
+ - lib/pvcglue/old_packages/role_redis.rb
327
+ - lib/pvcglue/old_packages/role_web.rb
328
+ - lib/pvcglue/old_packages/rvm.rb
329
+ - lib/pvcglue/old_packages/timezone.rb
330
+ - lib/pvcglue/old_packages/ubuntu.rb
237
331
  - lib/pvcglue/packages.rb
238
- - lib/pvcglue/packages/bootstrap.rb
239
- - lib/pvcglue/packages/env.rb
332
+ - lib/pvcglue/packages/apt.rb
333
+ - lib/pvcglue/packages/apt_repos.rb
334
+ - lib/pvcglue/packages/apt_update.rb
335
+ - lib/pvcglue/packages/apt_upgrade.rb
336
+ - lib/pvcglue/packages/authorized_keys.rb
337
+ - lib/pvcglue/packages/bundler.rb
338
+ - lib/pvcglue/packages/dir_base.rb
339
+ - lib/pvcglue/packages/dir_shared.rb
240
340
  - lib/pvcglue/packages/firewall.rb
341
+ - lib/pvcglue/packages/load_balancer.rb
342
+ - lib/pvcglue/packages/maintenance_mode.rb
241
343
  - lib/pvcglue/packages/manager.rb
242
- - lib/pvcglue/packages/monit-bootstrap.rb
243
- - lib/pvcglue/packages/monit-web.rb
244
- - lib/pvcglue/packages/nginx.rb
245
- - lib/pvcglue/packages/nodejs.rb
246
- - lib/pvcglue/packages/passenger.rb
247
344
  - lib/pvcglue/packages/postgresql.rb
248
- - lib/pvcglue/packages/role_db.rb
249
- - lib/pvcglue/packages/role_lb.rb
250
- - lib/pvcglue/packages/role_memcached.rb
251
- - lib/pvcglue/packages/role_redis.rb
252
- - lib/pvcglue/packages/role_web.rb
345
+ - lib/pvcglue/packages/roles.rb
346
+ - lib/pvcglue/packages/ruby.rb
253
347
  - lib/pvcglue/packages/rvm.rb
254
- - lib/pvcglue/packages/timezone.rb
255
- - lib/pvcglue/packages/ubuntu.rb
348
+ - lib/pvcglue/packages/secrets.rb
349
+ - lib/pvcglue/packages/ssh_key_check.rb
350
+ - lib/pvcglue/packages/ssl.rb
351
+ - lib/pvcglue/packages/ssl_acme.rb
352
+ - lib/pvcglue/packages/swap.rb
353
+ - lib/pvcglue/packages/unattended_upgrades.rb
354
+ - lib/pvcglue/packages/users.rb
355
+ - lib/pvcglue/packages/web.rb
256
356
  - lib/pvcglue/pvcify.rb
257
357
  - lib/pvcglue/railtie.rb
258
358
  - lib/pvcglue/ssl.rb
359
+ - lib/pvcglue/stack.rb
259
360
  - lib/pvcglue/templates/20auto-upgrades.erb
361
+ - lib/pvcglue/templates/50unattended-upgrades.erb
260
362
  - lib/pvcglue/templates/authorized_keys.erb
261
363
  - lib/pvcglue/templates/capfile.erb
262
364
  - lib/pvcglue/templates/database.yml.erb
@@ -266,6 +368,7 @@ files:
266
368
  - lib/pvcglue/templates/hosts.erb
267
369
  - lib/pvcglue/templates/lb.nginx.conf.erb
268
370
  - lib/pvcglue/templates/lb.sites-enabled.erb
371
+ - lib/pvcglue/templates/letsencrypt-webroot.erb
269
372
  - lib/pvcglue/templates/maintenance_mode.erb
270
373
  - lib/pvcglue/templates/memcached.conf.erb
271
374
  - lib/pvcglue/templates/monit.app.monitrc.erb
@@ -309,7 +412,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
309
412
  version: '0'
310
413
  requirements: []
311
414
  rubyforge_project:
312
- rubygems_version: 2.4.8
415
+ rubygems_version: 2.6.8
313
416
  signing_key:
314
417
  specification_version: 4
315
418
  summary: PVC_Glue summary