dry-stack 0.0.17 → 0.0.19

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: 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