dry-stack 0.0.16 → 0.0.18

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: 9ab2983449c4f066166f2959b92de322fc7b9ef9b9c027d46506c01affd26b64
4
- data.tar.gz: f23006f3896b4a23810c25b7222d958cee4cac84609b0f56bc11a8c9247a6ad0
3
+ metadata.gz: 7f98dfb71085af4d05dde33b4f45eb483af0aca4c80350d5940dbec63c2cbd45
4
+ data.tar.gz: e655689e2114bfbafff227349a874bfeaa3c8b07fc27e7a784ea692957a9b282
5
5
  SHA512:
6
- metadata.gz: 8b89b2359536654ec416780b5edc2fb2038653c35b2f0287b993858793e3907544f92cd8c8e11b93b1536a7cfb982758ed25766b47f58976e52d8597736590b4
7
- data.tar.gz: 30073e42de42e31ff79e575088d8ba1d5e48df3a375277e13aa079a44bc4f9054481ab6f4eccc7fb18726a7a6b785f66ecf1a9b17cb27626baf6f363436ea7ff
6
+ metadata.gz: 96a1db615d902109194a3600876ebbd6a029681b47fa8e82b8b78efbb61db74532892277fd1ac95fdf02a9a902c095981e0bf51e469f55ff9e5a75a948ec553d
7
+ data.tar.gz: 7960baa3ef7ebbab1bea4b6c7947fe198ee446402a51121d641e287f44e93e335e5acc3269b42a040a21c7a2b571dee700c29353a0b8f6bca9646258a9194be7
@@ -42,6 +42,7 @@ module Dry
42
42
  o.on('', '--ingress', 'Generate ingress labels') { true }
43
43
  o.on('', '--traefik', 'Generate traefik labels') { true }
44
44
  o.on('', '--traefik_tls', 'Generate traefik tls labels') { true }
45
+ o.on('', '--host_sed /from/to/', 'Sed ingress host /*/dev.*/')
45
46
  o.on('-n', '--no-env', 'Do not process env variables') { true }
46
47
  o.on('-h', '--help') { puts o; exit }
47
48
  o.parse! args, into: params
@@ -17,6 +17,7 @@ module Dry
17
17
  end
18
18
 
19
19
  class Stack
20
+ COMPOSE_VERSION = '3.8'
20
21
  class << self
21
22
  attr_accessor :last_stack
22
23
  end
@@ -29,6 +30,7 @@ module Dry
29
30
 
30
31
  def initialize(name)
31
32
  @name = name || 'stack'
33
+ @version = COMPOSE_VERSION
32
34
  @options = {}
33
35
  @services = {}
34
36
  @networks = {}
@@ -59,6 +61,7 @@ module Dry
59
61
  compose = {
60
62
  # name: @name.to_s, # https://docs.docker.com/compose/compose-file/#name-top-level-element
61
63
  # Not allowed by docker stack deploy
64
+ version: @version,
62
65
  services: YAML.load(@services.to_yaml),
63
66
  networks: YAML.load(@networks.to_yaml),
64
67
  }
@@ -72,40 +75,46 @@ module Dry
72
75
  service[:deploy] ||= {}
73
76
  service[:deploy][:labels] ||= []
74
77
 
75
- if @ingress[name] && (opts[:ingress] || opts[:traefik])
78
+ if @ingress[name] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
76
79
  service[:networks] ||= []
77
80
  service[:networks] << 'default' if service[:networks].empty?
78
81
  service[:networks] << 'ingress_routing'
79
82
  end
80
83
 
84
+ if opts[:host_sed] && @ingress.dig(name,:host)
85
+ a, b = opts[:host_sed].split('/').reject(&:empty?)
86
+ @ingress[name][:host].gsub! %r{#{a}}, b
87
+ end
88
+
81
89
  if @ingress[name] && opts[:ingress]
82
90
  service[:deploy][:labels] = @ingress[name]&.map { |k, v| "ingress.#{k}=#{v}" }
83
91
  end
84
92
 
85
- if @ingress[name] && opts[:traefik]
93
+ if @ingress[name] && (opts[:traefik] || opts[:traefik_tls])
86
94
  service_name = "#{@name}_#{name}"
87
- service[:deploy][:labels] += [
88
- 'traefik.enable=true',
89
- "traefik.http.routers.#{service_name}.service=#{service_name}",
90
- "traefik.http.services.#{service_name}.loadbalancer.server.port=#{@ingress[name][:port]}",
91
- "traefik.http.routers.#{service_name}.rule=HostRegexp(`{name:#{nginx_host2regexp @ingress[name][:host]}}`)"
92
- ]
93
- end
94
95
 
95
- if @ingress[name] && opts[:traefik_tls]
96
- service_name = "#{@name}_#{name}"
97
96
  service[:deploy][:labels] += [
98
97
  'traefik.enable=true',
99
98
  "traefik.http.routers.#{service_name}.service=#{service_name}",
100
99
  "traefik.http.services.#{service_name}.loadbalancer.server.port=#{@ingress[name][:port]}",
101
- "traefik.http.routers.#{service_name}.rule=HostRegexp(`{name:#{nginx_host2regexp @ingress[name][:host]}}`)",
102
- "traefik.http.routers.#{service_name}.entrypoints=http",
103
- "traefik.http.routers.#{service_name}.middlewares=service_stack-https-redirect",
104
- "traefik.http.routers.#{service_name}.rule=Host(`${REGISTRY_HOSTNAME}`)",
105
- "traefik.http.routers.#{service_name}.entrypoints=https",
106
- "traefik.http.routers.#{service_name}.tls=true",
107
- "traefik.http.routers.#{service_name}.tls.certresolver=le"
108
100
  ]
101
+
102
+ if opts[:traefik_tls]
103
+ service[:deploy][:labels] += [
104
+ "traefik.http.routers.#{service_name}.entrypoints=http",
105
+ "traefik.http.routers.#{service_name}.middlewares=service_stack-https-redirect",
106
+ "traefik.http.routers.#{service_name}.entrypoints=https",
107
+ "traefik.http.routers.#{service_name}.tls=true",
108
+ "traefik.http.routers.#{service_name}.tls.certresolver=le"
109
+ ]
110
+ end
111
+
112
+ if @ingress[name][:host]
113
+ service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=HostRegexp(`{name:#{nginx_host2regexp @ingress[name][:host]}}`)"
114
+ end
115
+ if @ingress[name][:rule]
116
+ service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=#{@ingress[name][:rule]}"
117
+ end
109
118
  end
110
119
 
111
120
  service[:deploy].merge! @deploy[name] if @deploy[name]
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.16'
3
+ VERSION = '0.0.18'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-14 00:00:00.000000000 Z
11
+ date: 2022-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake