dry-stack 0.0.17 → 0.0.19

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: e144f42147da952c0e65601dae18a2acc24918481efb5e663b50bcac10e3e412
4
- data.tar.gz: 177ceb9ac90bc47533dba089def9cfa0e942a9e3ab9571f1fef9a95d8a46f804
3
+ metadata.gz: 2dced663093a984ba6f7fb3d351e7bf0978facfab7636ca6b91f42b3b43f3247
4
+ data.tar.gz: 686c2a7e3d92a941fdfce24a4c715192fa6e02299d83cf4f8bc19602d27eee57
5
5
  SHA512:
6
- metadata.gz: 409852566e39b2e0c29ccfe89aaf99b4b2a9837825808f278bf8c775f31e1750ed37a923be948a2a51060807c799d3de32fb867a889428fd365e5ed7ba22cfee
7
- data.tar.gz: 0fe630b87412fde207f98c6196631db42d66a7b5e4b95dd5a85f8b83d0e8ae89e055df66974f37c67726d58af2788a412f41b68992f8ebbfd45937af023b3d6a
6
+ metadata.gz: f003221445e7a8b249a5e9caced8fe2f813d3ea0ac0d72183edd3cfc58cc4ac02e2c798dc63cd10e0b680063fbff221b73a71e97da65c92108f1588760bf8c18
7
+ data.tar.gz: f8cec9c28d6b0ae5b534c8e30db18a2cc5ad5e3587e5529fc271fff9bc67642b822dc2db865309249e960e2bc7848473f3b75fce1d44f5ef1ca9628d3f1768fe
data/bin/dry-stack CHANGED
@@ -6,6 +6,7 @@ $LOAD_PATH << lib
6
6
  require 'dry-stack'
7
7
  require 'dry-stack/command_line'
8
8
  require 'dry-stack/command_compose'
9
+ require 'dry-stack/command_swarm_deploy'
9
10
  include Dry
10
11
 
11
12
  Dry::CommandLine.run ARGV
@@ -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
@@ -0,0 +1,17 @@
1
+ require_relative 'command_line'
2
+
3
+ Dry::CommandLine::COMMANDS[:swarm_deploy] = Class.new do
4
+ def run(stack, params)
5
+ _params = stack.options.merge params
6
+ yaml = stack.to_compose(_params).lines[1..].join
7
+
8
+ # substitute ENV variables
9
+ yaml = _params[:'no-env'] ? yaml : `echo \"#{yaml.gsub("`", '\\\`')}\"`
10
+ system " echo \"#{yaml}\" "
11
+ system " echo \"#{yaml}\" | docker stack deploy -c - #{stack.name} --prune --resolve-image changed"
12
+ end
13
+
14
+ def help = 'Call docker stack deploy'
15
+ end.new
16
+
17
+
@@ -75,40 +75,46 @@ module Dry
75
75
  service[:deploy] ||= {}
76
76
  service[:deploy][:labels] ||= []
77
77
 
78
- if @ingress[name] && (opts[:ingress] || opts[:traefik])
78
+ if @ingress[name] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
79
79
  service[:networks] ||= []
80
80
  service[:networks] << 'default' if service[:networks].empty?
81
81
  service[:networks] << 'ingress_routing'
82
82
  end
83
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
+
84
89
  if @ingress[name] && opts[:ingress]
85
90
  service[:deploy][:labels] = @ingress[name]&.map { |k, v| "ingress.#{k}=#{v}" }
86
91
  end
87
92
 
88
- if @ingress[name] && opts[:traefik]
93
+ if @ingress[name] && (opts[:traefik] || opts[:traefik_tls])
89
94
  service_name = "#{@name}_#{name}"
90
- service[:deploy][:labels] += [
91
- 'traefik.enable=true',
92
- "traefik.http.routers.#{service_name}.service=#{service_name}",
93
- "traefik.http.services.#{service_name}.loadbalancer.server.port=#{@ingress[name][:port]}",
94
- "traefik.http.routers.#{service_name}.rule=HostRegexp(`{name:#{nginx_host2regexp @ingress[name][:host]}}`)"
95
- ]
96
- end
97
95
 
98
- if @ingress[name] && opts[:traefik_tls]
99
- service_name = "#{@name}_#{name}"
100
96
  service[:deploy][:labels] += [
101
97
  'traefik.enable=true',
102
98
  "traefik.http.routers.#{service_name}.service=#{service_name}",
103
99
  "traefik.http.services.#{service_name}.loadbalancer.server.port=#{@ingress[name][:port]}",
104
- "traefik.http.routers.#{service_name}.rule=HostRegexp(`{name:#{nginx_host2regexp @ingress[name][:host]}}`)",
105
- "traefik.http.routers.#{service_name}.entrypoints=http",
106
- "traefik.http.routers.#{service_name}.middlewares=service_stack-https-redirect",
107
- "traefik.http.routers.#{service_name}.rule=Host(`${REGISTRY_HOSTNAME}`)",
108
- "traefik.http.routers.#{service_name}.entrypoints=https",
109
- "traefik.http.routers.#{service_name}.tls=true",
110
- "traefik.http.routers.#{service_name}.tls.certresolver=le"
111
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
112
118
  end
113
119
 
114
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.17'
3
+ VERSION = '0.0.19'
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.17
4
+ version: 0.0.19
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-15 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
@@ -108,6 +108,7 @@ files:
108
108
  - lib/dry-stack.rb
109
109
  - lib/dry-stack/command_compose.rb
110
110
  - lib/dry-stack/command_line.rb
111
+ - lib/dry-stack/command_swarm_deploy.rb
111
112
  - lib/dry-stack/stack.rb
112
113
  - lib/version.rb
113
114
  homepage: https://rubygems.org/gems/dry-stack