consul-templaterb 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +4 -0
- data/TemplateAPI.md +2 -2
- data/bin/consul-templaterb +9 -1
- data/lib/consul/async/consul_template.rb +3 -2
- data/lib/consul/async/version.rb +1 -1
- data/samples/consul-ui/README.md +19 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc502021c589486d5467570135c409154b48de0829358bc0f5a261c93cb4bf83
|
4
|
+
data.tar.gz: 77d2214c3b8d4db64d28911f76d7f4148f0e54aa00a504f116f0b06ed7d227fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 730e29b4453d6e6b298bc2b1b3b5d57b39ccf6d88231b84ac60fe04998ca131a5294d450219f7432f7de80813de8ee32c279ed11d88547fe11a7926122136920
|
7
|
+
data.tar.gz: 9b8fe26cee53f5417418ce9574e076fc3ffc40a2a61f9f211cd516bfcb591d5fd146ec7b664fd86d8170fc6d25e6eef3c8c964e7e2fbe52ca1bc8468bd7a081b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -28,6 +28,9 @@ consul-template.
|
|
28
28
|
It provides a very [simple API](TemplateAPI.md) to write your own templates
|
29
29
|
with fully [working examples](samples/).
|
30
30
|
|
31
|
+
It also allow to display a very nice and hi-performance HTML5 UI for Consul,
|
32
|
+
see [consul-ui](samples/consul-ui) for details.
|
33
|
+
|
31
34
|
## Differences with HashiCorp's consul-template
|
32
35
|
|
33
36
|
[Hashicorp's Consul Template](https://github.com/hashicorp/consul-template)
|
@@ -141,6 +144,7 @@ USAGE: consul-templaterb [[options]]
|
|
141
144
|
-r, --retry-delay=<min_duration> Min Retry delay on Error/Missing Consul Index
|
142
145
|
-k, --hot-reload=<behavior> Control hot reload behaviour, one of :[die (kill daemon on hot reload failure), keep (on error, keep running), disable (hot reload disabled)]
|
143
146
|
-K, --sig-term=kill_signal Signal to send to next --exec command on kill, default=TERM
|
147
|
+
-T, --trim-mode=trim_mode ERB Trim mode to use (- by default)
|
144
148
|
-R, --sig-reload=reload_signal Signal to send to next --exec command on reload (NONE supported), default=HUP
|
145
149
|
-e, --exec=<command> Execute the following command
|
146
150
|
-d, --debug-network-usage Debug the network usage
|
data/TemplateAPI.md
CHANGED
@@ -279,6 +279,8 @@ consul-templaterb --template "source.html.erb:dest.html:reload_command:params.ya
|
|
279
279
|
[...]
|
280
280
|
```
|
281
281
|
|
282
|
+
See [samples/common/header.html.erb](samples/common/header.html.erb) for example of usage.
|
283
|
+
|
282
284
|
## secrets(prefix)
|
283
285
|
|
284
286
|
It requires that a Vault token is given either in parameter or in environment variable
|
@@ -335,5 +337,3 @@ secret('secret/foo', [force_ttl: intInSecond])
|
|
335
337
|
|
336
338
|
</div>
|
337
339
|
</details>
|
338
|
-
|
339
|
-
See [samples/common/header.html.erb](samples/common/header.html.erb) for example of usage.
|
data/bin/consul-templaterb
CHANGED
@@ -17,6 +17,9 @@ def compute_default_output(source)
|
|
17
17
|
end
|
18
18
|
|
19
19
|
options = {
|
20
|
+
erb: {
|
21
|
+
trim_mode: '-', # trim_mode for ERB
|
22
|
+
},
|
20
23
|
vault: {
|
21
24
|
debug: {
|
22
25
|
network: false
|
@@ -138,6 +141,11 @@ optparse = OptionParser.new do |opts|
|
|
138
141
|
cur_sig_term = compute_signal(sig, nil)
|
139
142
|
end
|
140
143
|
|
144
|
+
opts.on('-T', '--trim-mode=trim_mode', String,
|
145
|
+
"ERB Trim mode to use (#{options[:erb][:trim_mode]} by default)") do |trim_mode|
|
146
|
+
options[:erb][:trim_mode] = trim_mode
|
147
|
+
end
|
148
|
+
|
141
149
|
opts.on('-R', '--sig-reload=reload_signal', String,
|
142
150
|
"Signal to send to next --exec command on reload (NONE supported), default=#{cur_sig_reload}") do |sig|
|
143
151
|
cur_sig_reload = compute_signal(sig, 'NONE')
|
@@ -265,7 +273,7 @@ EM.epoll
|
|
265
273
|
|
266
274
|
consul_conf = Consul::Async::ConsulConfiguration.new(options[:consul])
|
267
275
|
vault_conf = Consul::Async::VaultConfiguration.new(options[:vault])
|
268
|
-
template_manager = Consul::Async::EndPointsManager.new(consul_conf, vault_conf)
|
276
|
+
template_manager = Consul::Async::EndPointsManager.new(consul_conf, vault_conf, options[:erb][:trim_mode])
|
269
277
|
|
270
278
|
ARGV.each do |tpl|
|
271
279
|
dest = compute_default_output(tpl)
|
@@ -21,9 +21,10 @@ module Consul
|
|
21
21
|
|
22
22
|
class EndPointsManager
|
23
23
|
attr_reader :consul_conf, :vault_conf, :net_info, :start_time
|
24
|
-
def initialize(consul_configuration, vault_configuration)
|
24
|
+
def initialize(consul_configuration, vault_configuration, trim_mode = nil)
|
25
25
|
@consul_conf = consul_configuration
|
26
26
|
@vault_conf = vault_configuration
|
27
|
+
@trim_mode = trim_mode
|
27
28
|
@endpoints = {}
|
28
29
|
@iteration = 1
|
29
30
|
@start_time = Time.now.utc
|
@@ -169,7 +170,7 @@ module Consul
|
|
169
170
|
current_erb_path: tpl_file_path,
|
170
171
|
params: params
|
171
172
|
}
|
172
|
-
result = ERB.new(tpl).result(binding)
|
173
|
+
result = ERB.new(tpl, nil, @trim_mode).result(binding)
|
173
174
|
@context = old_value
|
174
175
|
result
|
175
176
|
rescue StandardError => e
|
data/lib/consul/async/version.rb
CHANGED
data/samples/consul-ui/README.md
CHANGED
@@ -4,6 +4,23 @@ A simple HTML5 app that displays all services within Consul with AJAX requests.
|
|
4
4
|
It supports fitering based on tags and does not rely on Consul to display pages,
|
5
5
|
meaning that it can be scaled horizontally without any troubles with Consul.
|
6
6
|
|
7
|
+
## Is it prod ready?
|
8
|
+
|
9
|
+
This application is used for several months within Criteo to replace Consul native interface and
|
10
|
+
is used daily by hundreds of users. At Criteo, consul-templaterb creates the static web, updates
|
11
|
+
it continuously and all the static pages are served using nginx, but any web server might be used.
|
12
|
+
|
13
|
+
Criteo has more than 20k Consul nodes on 8 datacenters, so it should work for most installations.
|
14
|
+
|
15
|
+
It has far more performance than most Consul UIs, the only downside is that the whole application
|
16
|
+
is Read-Only (but it would be possible to add RW support with CORS to modify values within
|
17
|
+
Consul).
|
18
|
+
|
19
|
+
You can watch a [video comparison](https://www.youtube.com/watch?v=o7VEox2FSEs) of this application
|
20
|
+
with the new native Consul UI interface of Consul 1.2.x, performance gap is especially strong
|
21
|
+
when using remote Datacenters (in the video around 01:10) where this app displays all information
|
22
|
+
from datacenter in Tokyo from Paris.
|
23
|
+
|
7
24
|
## Usage
|
8
25
|
|
9
26
|
```shell
|
@@ -35,9 +52,9 @@ Will generate index.html and consul_template.json in your directory, so you migh
|
|
35
52
|
|
36
53
|
### Filtering services
|
37
54
|
|
38
|
-
This app supports the following
|
55
|
+
This app supports the following environment variables:
|
39
56
|
|
40
57
|
* SERVICES_TAG_FILTER: basic tag filter for service (default HTTP)
|
41
58
|
* INSTANCE_MUST_TAG: Second level of filtering (optional, default to SERVICES_TAG_FILTER)
|
42
59
|
* INSTANCE_EXCLUDE_TAG: Exclude instances having the given tag (default: canary)
|
43
|
-
* EXCLUDE_SERVICES: comma-separated services to exclude (default: consul-agent-http,mesos-slave,mesos-agent-watcher)
|
60
|
+
* EXCLUDE_SERVICES: comma-separated services to exclude (default: consul-agent-http,mesos-slave,mesos-agent-watcher)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: consul-templaterb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SRE Core Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: em-http-request
|