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 +4 -4
- data/bin/dry-stack +1 -0
- data/lib/dry-stack/command_line.rb +1 -0
- data/lib/dry-stack/command_swarm_deploy.rb +17 -0
- data/lib/dry-stack/stack.rb +24 -18
- data/lib/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2dced663093a984ba6f7fb3d351e7bf0978facfab7636ca6b91f42b3b43f3247
|
4
|
+
data.tar.gz: 686c2a7e3d92a941fdfce24a4c715192fa6e02299d83cf4f8bc19602d27eee57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f003221445e7a8b249a5e9caced8fe2f813d3ea0ac0d72183edd3cfc58cc4ac02e2c798dc63cd10e0b680063fbff221b73a71e97da65c92108f1588760bf8c18
|
7
|
+
data.tar.gz: f8cec9c28d6b0ae5b534c8e30db18a2cc5ad5e3587e5529fc271fff9bc67642b822dc2db865309249e960e2bc7848473f3b75fce1d44f5ef1ca9628d3f1768fe
|
data/bin/dry-stack
CHANGED
@@ -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
|
+
|
data/lib/dry-stack/stack.rb
CHANGED
@@ -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
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.
|
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-
|
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
|