dry-stack 0.0.16 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
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