avm-tools 0.20.0 → 0.21.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 243acbdeb6bf47023be05c689219226cb43d7d688b660f4239d3371ef0c8f77d
4
- data.tar.gz: 60bf3e35ee6372cfaff53f9e37851087575ffee5906078307e6e73bfbf2e3b69
3
+ metadata.gz: 8706b02e9000a68816108236851b8d1d80f23c4e4459e080512465c5380bdd75
4
+ data.tar.gz: 663eb3ef35a98308fcecb64f6a1158165b83f69ffcfeea8a37d15d1710b27bae
5
5
  SHA512:
6
- metadata.gz: 38b11f783aab60e1d7008fe0925c8782f1e2833d9e071d93bdc322b3a475863e47b57e308650febf5dcb06c095402d43d345d31f6d8b0032ed1751d638ca13c0
7
- data.tar.gz: bd3f4ec62f6e1b30559a309d8cd44c6ceb565aa4e7413be3b85d0ff4251927977884259f8cec8d51b0f7de56a4566f8f851b42f3a83f4b5a489ea36fdeaec498
6
+ metadata.gz: 0ea0def902b2667c4dcb99be2221c917d12ac0acbe534035fe1d296afd4ad4f90ba1a722a1a1e2759b34a2b69791c54615623279813fe410acf2f748fb806b46
7
+ data.tar.gz: dac7b5102c6624d928f18003e3b745b7fbd89aad73e8b721eedbb08470486f0b4724479cc2d74eaa46e507ee6cd0c17da32c0a38df6afeeb21dcc11667347a8b
@@ -10,7 +10,7 @@ module Avm
10
10
  extend ::ActiveSupport::Concern
11
11
 
12
12
  included do
13
- %w[Access Admin Database Filesystem Source Web].each do |class_name|
13
+ %w[Access Admin Database Filesystem Source System Web].each do |class_name|
14
14
  include const_get(class_name)
15
15
  end
16
16
  end
@@ -15,7 +15,7 @@ module Avm
15
15
  DEFAULT_SYSTEM = 'postgresql'
16
16
 
17
17
  def auto_database_name
18
- inherited_entry_value(:database_id, 'database.name') || id
18
+ inherited_entry_value(:'database.id', 'database.name') || id
19
19
  end
20
20
 
21
21
  def auto_database_hostname
@@ -41,7 +41,7 @@ module Avm
41
41
  private
42
42
 
43
43
  def database_auto_common(suffix)
44
- inherited_entry_value(:database_id, "database.#{suffix}") ||
44
+ inherited_entry_value('database.id', "database.#{suffix}") ||
45
45
  inherited_entry_value(:host_id, "database.#{suffix}")
46
46
  end
47
47
 
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+
5
+ module Avm
6
+ module Instances
7
+ class Base
8
+ module AutoValues
9
+ module System
10
+ def auto_system_username
11
+ inherited_entry_value(:host_id, 'system.username') ||
12
+ read_entry_optional('ssh.username')
13
+ end
14
+
15
+ def auto_system_groupname
16
+ inherited_entry_value(:host_id, 'system.groupname') ||
17
+ read_entry_optional('system.username')
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,80 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/core_ext'
4
- require 'avm/stereotypes/eac_ubuntu_base0/apache'
5
- require 'avm/templates/file'
3
+ require 'avm/stereotypes/eac_webapp_base0/apache_host'
6
4
 
7
5
  module Avm
8
6
  module Stereotypes
9
7
  module EacRailsBase0
10
- class ApacheHost
11
- enable_console_speaker
12
- enable_simple_cache
13
- common_constructor :instance
14
-
15
- def run
16
- write_available_no_ssl_site
17
- enable_no_ssl_site
18
- remove_ssl_site
19
- reload_apache
20
- run_certbot
21
- enable_ssl_site
22
- reload_apache
23
- ::Avm::Result.success('Done')
24
- end
25
-
26
- private
27
-
28
- def apache_uncached
29
- ::Avm::Stereotypes::EacUbuntuBase0::Apache.new(instance.host_env)
30
- end
31
-
32
- def enable_no_ssl_site
33
- infom 'Enabling no SSL site...'
34
- no_ssl_site.enable
35
- end
36
-
37
- def enable_ssl_site
38
- infom 'Enabling SSL site...'
39
- ssl_site.enable
40
- end
41
-
42
- def no_ssl_site_content
43
- ::Avm::Templates::File.new(
44
- ::File.join(template_path, 'no_ssl.conf')
45
- ).apply(instance)
46
- end
47
-
48
- def no_ssl_site_uncached
49
- apache.site(instance.id)
50
- end
51
-
52
- def reload_apache
53
- infom 'Reloading Apache...'
54
- apache.service('reload')
55
- end
56
-
57
- def remove_ssl_site
58
- infom 'Removing SSL site...'
59
- ssl_site.remove
60
- end
61
-
62
- def run_certbot
63
- infom 'Running Certbot...'
64
- instance.host_env.command(
65
- 'sudo', 'certbot', '--apache', '--domain', instance.read_entry('web.hostname'),
66
- '--redirect', '--non-interactive', '--agree-tos',
67
- '--email', instance.read_entry('admin.email')
68
- ).system!
69
- end
70
-
71
- def ssl_site_uncached
72
- apache.site(no_ssl_site.name + '-le-ssl')
8
+ class ApacheHost < ::Avm::Stereotypes::EacWebappBase0::ApacheHost
9
+ def document_root
10
+ "#{instance.read_entry(:fs_path)}/public"
73
11
  end
74
12
 
75
- def write_available_no_ssl_site
76
- infom 'Writing no SSL site conf...'
77
- no_ssl_site.write(no_ssl_site_content)
13
+ def extra_content
14
+ 'PassengerEnabled On'
78
15
  end
79
16
  end
80
17
  end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'avm/patches/object/template'
5
+ require 'avm/stereotypes/eac_ubuntu_base0/apache'
6
+ require 'avm/templates/file'
7
+
8
+ module Avm
9
+ module Stereotypes
10
+ module EacWebappBase0
11
+ class ApacheHost
12
+ enable_console_speaker
13
+ enable_simple_cache
14
+ common_constructor :instance
15
+
16
+ def run
17
+ write_available_no_ssl_site
18
+ enable_no_ssl_site
19
+ remove_ssl_site
20
+ reload_apache
21
+ run_certbot
22
+ enable_ssl_site
23
+ reload_apache
24
+ ::Avm::Result.success('Done')
25
+ end
26
+
27
+ def no_ssl_site_content
28
+ ::Avm::Templates::File.new(
29
+ ::File.join(::Avm::Stereotypes::EacWebappBase0::ApacheHost.template_path, 'no_ssl.conf')
30
+ ).apply(EntriesReader.new(self, instance))
31
+ end
32
+
33
+ private
34
+
35
+ def apache_uncached
36
+ ::Avm::Stereotypes::EacUbuntuBase0::Apache.new(instance.host_env)
37
+ end
38
+
39
+ def enable_no_ssl_site
40
+ infom 'Enabling no SSL site...'
41
+ no_ssl_site.enable
42
+ end
43
+
44
+ def enable_ssl_site
45
+ infom 'Enabling SSL site...'
46
+ ssl_site.enable
47
+ end
48
+
49
+ def no_ssl_site_uncached
50
+ apache.site(instance.id)
51
+ end
52
+
53
+ def reload_apache
54
+ infom 'Reloading Apache...'
55
+ apache.service('reload')
56
+ end
57
+
58
+ def remove_ssl_site
59
+ infom 'Removing SSL site...'
60
+ ssl_site.remove
61
+ end
62
+
63
+ def run_certbot
64
+ infom 'Running Certbot...'
65
+ instance.host_env.command(
66
+ 'sudo', 'certbot', '--apache', '--domain', instance.read_entry('web.hostname'),
67
+ '--redirect', '--non-interactive', '--agree-tos',
68
+ '--email', instance.read_entry('admin.email')
69
+ ).system!
70
+ end
71
+
72
+ def ssl_site_uncached
73
+ apache.site(no_ssl_site.name + '-le-ssl')
74
+ end
75
+
76
+ def write_available_no_ssl_site
77
+ infom 'Writing no SSL site conf...'
78
+ no_ssl_site.write(no_ssl_site_content)
79
+ end
80
+
81
+ class EntriesReader
82
+ common_constructor :job, :instance
83
+
84
+ def read_entry(path, options = {})
85
+ entry_from_job(path) || instance.read_entry(path, options)
86
+ end
87
+
88
+ private
89
+
90
+ def entry_from_job(path)
91
+ method = path.gsub('.', '_').underscore
92
+ return job.send(method) if job.respond_to?(method, true)
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/stereotypes/eac_webapp_base0/apache_host'
4
+
5
+ module Avm
6
+ module Stereotypes
7
+ module EacWordpressBase0
8
+ class ApacheHost < ::Avm::Stereotypes::EacWebappBase0::ApacheHost
9
+ def document_root
10
+ instance.read_entry(:fs_path)
11
+ end
12
+
13
+ def extra_content
14
+ "AssignUserID #{system_user} #{system_group}"
15
+ end
16
+
17
+ def system_user
18
+ instance.read_entry('system.username')
19
+ end
20
+
21
+ def system_group
22
+ instance.read_entry('system.groupname')
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -20,7 +20,6 @@ module Avm
20
20
 
21
21
  Options:
22
22
  -h --help Show this screen.
23
- -r --reference=<git-reference> Git reference to deploy.
24
23
  DOCOPT
25
24
 
26
25
  def run
@@ -3,6 +3,7 @@
3
3
  require 'eac_ruby_utils/console/docopt_runner'
4
4
  require 'eac_ruby_utils/simple_cache'
5
5
  require 'avm/stereotypes/eac_wordpress_base0/instance'
6
+ require 'avm/tools/runner/eac_wordpress_base0/apache_host'
6
7
  require 'avm/tools/runner/eac_wordpress_base0/data'
7
8
  require 'avm/tools/runner/eac_wordpress_base0/deploy'
8
9
 
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/console/docopt_runner'
4
+ require 'eac_ruby_utils/console/speaker'
5
+ require 'avm/stereotypes/eac_wordpress_base0/apache_host'
6
+
7
+ module Avm
8
+ module Tools
9
+ class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class EacWordpressBase0 < ::EacRubyUtils::Console::DocoptRunner
11
+ class ApacheHost < ::EacRubyUtils::Console::DocoptRunner
12
+ include ::EacRubyUtils::Console::Speaker
13
+
14
+ DOC = <<~DOCOPT
15
+ Configure Apache virtual host for EacWordpressBase0 instance.
16
+
17
+ Usage:
18
+ __PROGRAM__ [options]
19
+ __PROGRAM__ -h | --help
20
+
21
+ Options:
22
+ -h --help Show this screen.
23
+ DOCOPT
24
+
25
+ def run
26
+ result = ::Avm::Stereotypes::EacWordpressBase0::ApacheHost.new(
27
+ context(:instance)
28
+ ).run
29
+ if result.error?
30
+ fatal_error result.to_s
31
+ else
32
+ infov 'Result', result.label
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.20.0'
5
+ VERSION = '0.21.0'
6
6
  end
7
7
  end
@@ -1,9 +1,9 @@
1
1
  <VirtualHost *:80>
2
2
  ServerName "%%WEB.HOSTNAME%%"
3
- DocumentRoot "%%FS_PATH%%/public"
4
- PassengerEnabled On
3
+ DocumentRoot "%%DOCUMENT_ROOT%%"
4
+ %%EXTRA_CONTENT%%
5
5
 
6
- <Directory "%%FS_PATH%%/public">
6
+ <Directory "%%DOCUMENT_ROOT%%">
7
7
  Allow from all
8
8
  Options -MultiViews
9
9
  Require all granted
@@ -20,13 +20,13 @@
20
20
 
21
21
  // ** MySQL settings - You can get this info from your web host ** //
22
22
  /** The name of the database for WordPress */
23
- define( 'DB_NAME', '%%DATABASE_NAME%%' );
23
+ define( 'DB_NAME', '%%DATABASE.NAME%%' );
24
24
 
25
25
  /** MySQL database username */
26
- define( 'DB_USER', '%%DATABASE_USER%%' );
26
+ define( 'DB_USER', '%%DATABASE.USER%%' );
27
27
 
28
28
  /** MySQL database password */
29
- define( 'DB_PASSWORD', '%%DATABASE_PASSWORD%%' );
29
+ define( 'DB_PASSWORD', '%%DATABASE.PASSWORD%%' );
30
30
 
31
31
  /** MySQL hostname */
32
32
  define( 'DB_HOST', 'localhost' );
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-05 00:00:00.000000000 Z
11
+ date: 2019-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -208,6 +208,7 @@ files:
208
208
  - lib/avm/instances/base/auto_values/database.rb
209
209
  - lib/avm/instances/base/auto_values/filesystem.rb
210
210
  - lib/avm/instances/base/auto_values/source.rb
211
+ - lib/avm/instances/base/auto_values/system.rb
211
212
  - lib/avm/instances/base/auto_values/web.rb
212
213
  - lib/avm/instances/entries.rb
213
214
  - lib/avm/instances/entries/entry_reader.rb
@@ -224,8 +225,10 @@ files:
224
225
  - lib/avm/stereotypes/eac_ubuntu_base0/apache.rb
225
226
  - lib/avm/stereotypes/eac_ubuntu_base0/apache/site.rb
226
227
  - lib/avm/stereotypes/eac_webapp_base0.rb
228
+ - lib/avm/stereotypes/eac_webapp_base0/apache_host.rb
227
229
  - lib/avm/stereotypes/eac_webapp_base0/deploy.rb
228
230
  - lib/avm/stereotypes/eac_webapp_base0/instance.rb
231
+ - lib/avm/stereotypes/eac_wordpress_base0/apache_host.rb
229
232
  - lib/avm/stereotypes/eac_wordpress_base0/deploy.rb
230
233
  - lib/avm/stereotypes/eac_wordpress_base0/instance.rb
231
234
  - lib/avm/stereotypes/postgresql.rb
@@ -242,6 +245,7 @@ files:
242
245
  - lib/avm/tools/runner/eac_rails_base0/apache_host.rb
243
246
  - lib/avm/tools/runner/eac_rails_base0/deploy.rb
244
247
  - lib/avm/tools/runner/eac_wordpress_base0.rb
248
+ - lib/avm/tools/runner/eac_wordpress_base0/apache_host.rb
245
249
  - lib/avm/tools/runner/eac_wordpress_base0/data.rb
246
250
  - lib/avm/tools/runner/eac_wordpress_base0/data/dump.rb
247
251
  - lib/avm/tools/runner/eac_wordpress_base0/data/load.rb
@@ -256,8 +260,8 @@ files:
256
260
  - lib/avm/tools/runner/git/issue.rb
257
261
  - lib/avm/tools/runner/git/issue/complete.rb
258
262
  - lib/avm/tools/version.rb
259
- - template/avm/stereotypes/eac_rails_base0/apache_host/no_ssl.conf
260
263
  - template/avm/stereotypes/eac_rails_base0/deploy/config/database.yml.template
264
+ - template/avm/stereotypes/eac_webapp_base0/apache_host/no_ssl.conf
261
265
  - template/avm/stereotypes/eac_wordpress_base0/deploy/wp-config.php.template
262
266
  homepage:
263
267
  licenses: []