Giter Site home page Giter Site logo

criteo / consul-templaterb Goto Github PK

View Code? Open in Web Editor NEW
75.0 19.0 28.0 1.11 MB

consul-template-like with erb (ruby) template expressiveness

License: Apache License 2.0

Ruby 95.01% HTML 4.02% Dockerfile 0.97%
consul consul-template criteo hashicorp hashicorp-consul ruby rubygem consul-templaterb consul-ui erb

consul-templaterb's People

Contributors

crepetl avatar dclaisse avatar geobeau avatar jeromegn avatar kamaradclimber avatar manu-ns avatar mwea avatar phbourquin avatar pierrecdn avatar pierresouchay avatar thib17 avatar tionebsalocin avatar uepoch avatar warrenseine avatar zed3250 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

consul-templaterb's Issues

Question: How can we dynamically generate different templates from a consul K/V JSON object ?

Hello, I try to migrate the generation of multiple vhost nginx files from hashicorp consul-template to consul-templaterb.
My hcl file looks like :

consul {
  address = "consul:8500"
  retry {
    enabled = true
    attempts = 2
    backoff = "250ms"
    max_backoff = "1m"
  }
}

vault {
  address = "http://vault:8400"
  token = "XXX"
  retry {
    enabled = true
    attempts = 2
    backoff = "250ms"
    max_backoff = "1m"
  }
  renew_token = false
  ssl {
    enabled = false
  }
}

log_level = "debug"

{{/* loop through all avalaible vhosts */}}
{{- range $key, $value := key "vhosts_index" | parseJSON }}
template {
  source = "/vhost.tpl"
  destination = "/vhosts/{{ $key }}.conf"
}
{{- end }}

It loops through all keys of an object stored in consul such as {"key1": "value", "key2": "value"} and prepare a new HCL file used by anothere consul-template instance to finally generated the files /vhosts/key1.conf and /vhosts/key2.conf.

The section mutli deosn't seems to give the possibility to specify the template dynamically.

Createing multiple files from one template

Hi, this is not an issue, but a question.

In consul I have a structure like:

customers/
  id1/
      key1
      key2
  id2/
      key1
      key2

...
I have created a template that uses File.write to write files id1.json, id2.json and so on, with the key1, key2... inside.
Are there any problems with this approach? Or another better solution?
I don't know the id1 and id2 in advance, so I cannot use just a separate template for each id.

Eventmachine Seg Fault When Using Vault

Hello Criteo Friends!

We had been using consul-templaterb without pulling consul secrets from Vault (until now) and we stumbled across this segfault that is hindering our deployments.

nux-gnu/ruby/2.5.0/enc/encdb.so
7f45eab92000-7f45eab93000 rw-p 00002000 00:66 922484                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/encdb.so
7f45eab93000-7f45ead30000 r-xp 00000000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f45ead30000-7f45eaf2f000 ---p 0019d000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f45eaf2f000-7f45eaf30000 r--p 0019c000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f45eaf30000-7f45eaf31000 rw-p 0019d000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f45eaf31000-7f45eaf3a000 r-xp 00000000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f45eaf3a000-7f45eb139000 ---p 00009000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f45eb139000-7f45eb13a000 r--p 00008000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f45eb13a000-7f45eb13b000 rw-p 00009000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f45eb13b000-7f45eb169000 rw-p 00000000 00:00 0 
7f45eb169000-7f45eb16c000 r-xp 00000000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f45eb16c000-7f45eb36b000 ---p 00003000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f45eb36b000-7f45eb36c000 r--p 00002000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f45eb36c000-7f45eb36d000 rw-p 00003000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f45eb36d000-7f45eb3ec000 r-xp 00000000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f45eb3ec000-7f45eb5ec000 ---p 0007f000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f45eb5ec000-7f45eb5ed000 r--p 0007f000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f45eb5ed000-7f45eb5ee000 rw-p 00080000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f45eb5ee000-7f45eb608000 r-xp 00000000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f45eb608000-7f45eb807000 ---p 0001a000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f45eb807000-7f45eb808000 r--p 00019000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f45eb808000-7f45eb809000 rw-p 0001a000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f45eb809000-7f45eb80d000 rw-p 00000000 00:00 0 
7f45eb80d000-7f45eb9f4000 r-xp 00000000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f45eb9f4000-7f45ebbf4000 ---p 001e7000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f45ebbf4000-7f45ebbf8000 r--p 001e7000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f45ebbf8000-7f45ebbfa000 rw-p 001eb000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f45ebbfa000-7f45ebbfe000 rw-p 00000000 00:00 0 
7f45ebbfe000-7f45ebe99000 r-xp 00000000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f45ebe99000-7f45ec098000 ---p 0029b000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f45ec098000-7f45ec09e000 r--p 0029a000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f45ec09e000-7f45ec09f000 rw-p 002a0000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f45ec09f000-7f45ec0af000 rw-p 00000000 00:00 0 
7f45ec0af000-7f45ec0d8000 r-xp 00000000 00:66 13762939                   /lib/x86_64-linux-gnu/ld-2.27.so
7f45ec1c7000-7f45ec1c8000 ---p 00000000 00:00 0 
7f45ec1c8000-7f45ec2d4000 rw-p 00000000 00:00 0 
7f45ec2d6000-7f45ec2d8000 r--s 00000000 00:66 921140                     /usr/bin/ruby2.5
7f45ec2d8000-7f45ec2d9000 r--p 00029000 00:66 13762939                   /lib/x86_64-linux-gnu/ld-2.27.so
7f45ec2d9000-7f45ec2da000 rw-p 0002a000 00:66 13762939                   /lib/x86_64-linux-gnu/ld-2.27.so
7f45ec2da000-7f45ec2db000 rw-p 00000000 00:00 0 
7fff5bd9b000-7fff5c59a000 rw-p 00000000 00:00 0                          [stack]
7fff5c5ad000-7fff5c5b0000 r--p 00000000 00:00 0                          [vvar]
7fff5c5b0000-7fff5c5b1000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]


[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

terminate called after throwing an instance of 'std::runtime_error'
  what():  Encryption not available on this event-machine
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb:458: [BUG] Segmentation fault at 0x0000000000000000
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]

-- Control frame information -----------------------------------------------
c:0012 p:---- s:0086 e:000085 CFUNC  :set_tls_parms
c:0011 p:0235 s:0072 e:000071 METHOD /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb:458
c:0010 p:0030 s:0057 e:000056 METHOD /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection.rb:239
c:0009 p:0119 s:0053 e:000052 METHOD /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection.rb:234
c:0008 p:0006 s:0049 e:000048 METHOD /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection.rb:33 [FINISH]
c:0007 p:---- s:0045 e:000044 CFUNC  :run_machine
c:0006 p:0273 s:0041 e:000040 METHOD /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:195
c:0005 p:0016 s:0033 E:0016b8 METHOD /haproxy/lib/consul/async/consul_template_engine.rb:95
c:0004 p:0753 s:0028 E:001bf0 TOP    /haproxy/bin/consul-templaterb:398 [FINISH]
c:0003 p:---- s:0013 e:000012 CFUNC  :load
c:0002 p:0132 s:0008 E:000360 EVAL   /var/lib/gems/2.5.0/bin/consul-templaterb:23 [FINISH]
c:0001 p:0000 s:0003 E:000090 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/var/lib/gems/2.5.0/bin/consul-templaterb:23:in `<main>'
/var/lib/gems/2.5.0/bin/consul-templaterb:23:in `load'
/haproxy/bin/consul-templaterb:398:in `<top (required)>'
/haproxy/lib/consul/async/consul_template_engine.rb:95:in `run'
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:195:in `run'
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:195:in `run_machine'
/var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection.rb:33:in `connection_completed'
/var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection.rb:234:in `connection_completed'
/var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection.rb:239:in `start'
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb:458:in `start_tls'
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb:458:in `set_tls_parms'

-- Machine register context ------------------------------------------------
 RIP: 0x00007f9555d0da10 RBP: 0x00007f95560b9840 RSP: 0x00007fffa09fafc0
 RAX: 0x0000000000000004 RBX: 0x0000560a075cb798 RCX: 0x0000000000000000
 RDX: 0x0000000000000000 RDI: 0x0000000000000002 RSI: 0x00007fffa09faea0
  R8: 0x0000000000000000  R9: 0x00007fffa09faea0 R10: 0x0000000000000008
 R11: 0x0000000000000246 R12: 0x0000560a07526af0 R13: 0x0000560a07523e18
 R14: 0x0000560a07523df0 R15: 0x0000000000000000 EFL: 0x0000000000010246

-- C level backtrace information -------------------------------------------
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f955627ba15) [0x7f955627ba15]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f955627bc4c) [0x7f955627bc4c]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556145874) [0x7f9556145874]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f955620ba32) [0x7f955620ba32]
/lib/x86_64-linux-gnu/libc.so.6(0x7f9555d0c040) [0x7f9555d0c040]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x230) [0x7f9555d0da10]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x7f95536d9957) [0x7f95536d9957]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x7f95536dfae6) [0x7f95536dfae6]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x92b21) [0x7f95536dfb21]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(0x92d54) [0x7f95536dfd54]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(_ZN20ConnectionDescriptor11SetTlsParmsEPKcS1_bbS1_S1_S1_S1_i+0x38) [0x7f95539e2f48]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(0x171c4) [0x7f95539ed1c4]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f955625a8b4) [0x7f955625a8b4]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556264339) [0x7f9556264339]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556272863) [0x7f9556272863]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556269700) [0x7f9556269700]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f955626ead4) [0x7f955626ead4]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f95562730dd) [0x7f95562730dd]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f95562741ca) [0x7f95562741ca]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(rb_funcallv+0x2e) [0x7f95562749ae]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(0x17c0d) [0x7f95539edc0d]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(_ZN20ConnectionDescriptor5WriteEv+0xd2) [0x7f95539e5332]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(_ZN14EventMachine_t13_RunEpollOnceEv+0xe5) [0x7f95539e6be5]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(_ZN14EventMachine_t7RunOnceEv+0x78) [0x7f95539e92a8]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(_ZN14EventMachine_t3RunEv+0x10) [0x7f95539e92c0]
/var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so(0x16879) [0x7f95539ec879]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556264339) [0x7f9556264339]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556272863) [0x7f9556272863]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556269700) [0x7f9556269700]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f955626ead4) [0x7f955626ead4]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556184ad1) [0x7f9556184ad1]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556185088) [0x7f9556185088]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f95561851a0) [0x7f95561851a0]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556264339) [0x7f9556264339]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556272863) [0x7f9556272863]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f9556269700) [0x7f9556269700]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f955626ead4) [0x7f955626ead4]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(0x7f95561490b4) [0x7f95561490b4]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(ruby_exec_node+0x1d) [0x7f955614af3d]
/usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5(ruby_run_node+0x1e) [0x7f955614d41e]
ruby2.5(0x560a04ca88cb) [0x560a04ca88cb]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f9555ceebf7]
ruby2.5(_start+0x2a) [0x560a04ca88fa]

-- Other runtime information -----------------------------------------------

* Loaded script: /var/lib/gems/2.5.0/bin/consul-templaterb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/encdb.so
    5 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/trans/transdb.so
    6 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/rbconfig.rb
    7 /usr/lib/ruby/2.5.0/rubygems/compatibility.rb
    8 /usr/lib/ruby/2.5.0/rubygems/defaults.rb
    9 /usr/lib/ruby/2.5.0/rubygems/deprecate.rb
   10 /usr/lib/ruby/2.5.0/rubygems/errors.rb
   11 /usr/lib/ruby/2.5.0/rubygems/version.rb
   12 /usr/lib/ruby/2.5.0/rubygems/requirement.rb
   13 /usr/lib/ruby/2.5.0/rubygems/platform.rb
   14 /usr/lib/ruby/2.5.0/rubygems/basic_specification.rb
   15 /usr/lib/ruby/2.5.0/rubygems/stub_specification.rb
   16 /usr/lib/ruby/2.5.0/rubygems/util/list.rb
   17 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/stringio.so
   18 /usr/lib/ruby/2.5.0/uri/rfc2396_parser.rb
   19 /usr/lib/ruby/2.5.0/uri/rfc3986_parser.rb
   20 /usr/lib/ruby/2.5.0/uri/common.rb
   21 /usr/lib/ruby/2.5.0/uri/generic.rb
   22 /usr/lib/ruby/2.5.0/uri/ftp.rb
   23 /usr/lib/ruby/2.5.0/uri/http.rb
   24 /usr/lib/ruby/2.5.0/uri/https.rb
   25 /usr/lib/ruby/2.5.0/uri/ldap.rb
   26 /usr/lib/ruby/2.5.0/uri/ldaps.rb
   27 /usr/lib/ruby/2.5.0/uri/mailto.rb
   28 /usr/lib/ruby/2.5.0/uri.rb
   29 /usr/lib/ruby/2.5.0/rubygems/specification.rb
   30 /usr/lib/ruby/2.5.0/rubygems/exceptions.rb
   31 /usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb
   32 /usr/lib/ruby/2.5.0/rubygems/dependency.rb
   33 /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_gem.rb
   34 /usr/lib/ruby/2.5.0/monitor.rb
   35 /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb
   36 /usr/lib/ruby/2.5.0/rubygems.rb
   37 /usr/lib/ruby/2.5.0/rubygems/path_support.rb
   38 /usr/lib/ruby/vendor_ruby/did_you_mean/version.rb
   39 /usr/lib/ruby/vendor_ruby/did_you_mean/core_ext/name_error.rb
   40 /usr/lib/ruby/vendor_ruby/did_you_mean/levenshtein.rb
   41 /usr/lib/ruby/vendor_ruby/did_you_mean/jaro_winkler.rb
   42 /usr/lib/ruby/vendor_ruby/did_you_mean/spell_checker.rb
   43 /usr/lib/ruby/2.5.0/delegate.rb
   44 /usr/lib/ruby/vendor_ruby/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   45 /usr/lib/ruby/vendor_ruby/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   46 /usr/lib/ruby/vendor_ruby/did_you_mean/spell_checkers/name_error_checkers.rb
   47 /usr/lib/ruby/vendor_ruby/did_you_mean/spell_checkers/method_name_checker.rb
   48 /usr/lib/ruby/vendor_ruby/did_you_mean/spell_checkers/key_error_checker.rb
   49 /usr/lib/ruby/vendor_ruby/did_you_mean/spell_checkers/null_checker.rb
   50 /usr/lib/ruby/vendor_ruby/did_you_mean/formatters/plain_formatter.rb
   51 /usr/lib/ruby/vendor_ruby/did_you_mean.rb
   52 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/pathname.so
   53 /usr/lib/ruby/2.5.0/pathname.rb
   54 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/version.rb
   55 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/constants.rb
   56 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/rubygems_integration.rb
   57 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/current_ruby.rb
   58 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/shared_helpers.rb
   59 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/fileutils/lib/fileutils.rb
   60 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendored_fileutils.rb
   61 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/errors.rb
   62 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/environment_preserver.rb
   63 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/plugin/api.rb
   64 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/plugin.rb
   65 /usr/lib/ruby/2.5.0/rubygems/util.rb
   66 /usr/lib/ruby/2.5.0/rubygems/source/git.rb
   67 /usr/lib/ruby/2.5.0/rubygems/source/installed.rb
   68 /usr/lib/ruby/2.5.0/rubygems/source/specific_file.rb
   69 /usr/lib/ruby/2.5.0/rubygems/source/local.rb
   70 /usr/lib/ruby/2.5.0/rubygems/source/lock.rb
   71 /usr/lib/ruby/2.5.0/rubygems/source/vendor.rb
   72 /usr/lib/ruby/2.5.0/rubygems/source.rb
   73 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/gem_helpers.rb
   74 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/match_platform.rb
   75 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/rubygems_ext.rb
   76 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/build_metadata.rb
   77 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler.rb
   78 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/ui.rb
   79 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/command.rb
   80 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb
   81 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/error.rb
   82 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/invocation.rb
   83 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/nested_context.rb
   84 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/parser/argument.rb
   85 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb
   86 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/parser/option.rb
   87 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/parser/options.rb
   88 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/parser.rb
   89 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/shell.rb
   90 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb
   91 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb
   92 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/line_editor.rb
   93 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/util.rb
   94 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/base.rb
   95 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor.rb
   96 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendored_thor.rb
   97 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/ui/shell.rb
   98 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/shell/basic.rb
   99 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/thor/lib/thor/shell/color.rb
  100 /usr/lib/ruby/2.5.0/rubygems/text.rb
  101 /usr/lib/ruby/2.5.0/rubygems/user_interaction.rb
  102 /usr/lib/ruby/2.5.0/rubygems/ext/builder.rb
  103 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/ui/rg_proxy.rb
  104 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/settings.rb
  105 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/feature_flag.rb
  106 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/source.rb
  107 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/source/path.rb
  108 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/source/git.rb
  109 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/source/rubygems.rb
  110 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/lockfile_parser.rb
  111 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/definition.rb
  112 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/dependency.rb
  113 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/ruby_dsl.rb
  114 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/dsl.rb
  115 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/source_list.rb
  116 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/source/metadata.rb
  117 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/version.rb
  118 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb
  119 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb
  120 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/common.rb
  121 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/generic.rb
  122 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/file.rb
  123 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/ftp.rb
  124 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/http.rb
  125 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/https.rb
  126 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/ldap.rb
  127 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/ldaps.rb
  128 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri/mailto.rb
  129 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/uri/lib/uri.rb
  130 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendored_uri.rb
  131 /haproxy/lib/consul/async/version.rb
  132 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/index.rb
  133 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/source/gemspec.rb
  134 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/lazy_specification.rb
  135 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendor/tsort/lib/tsort.rb
  136 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/vendored_tsort.rb
  137 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/spec_set.rb
  138 /usr/lib/ruby/2.5.0/rubygems/util/licenses.rb
  139 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/remote_specification.rb
  140 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/dep_proxy.rb
  141 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/runtime.rb
  142 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/stub_specification.rb
  143 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/endpoint_specification.rb
  144 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/ruby_version.rb
  145 /var/lib/gems/2.5.0/gems/bundler-2.2.32/lib/bundler/setup.rb
  146 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/etc.so
  147 /usr/lib/ruby/2.5.0/fileutils.rb
  148 /usr/lib/ruby/2.5.0/tmpdir.rb
  149 /usr/lib/ruby/2.5.0/tempfile.rb
  150 /usr/lib/ruby/2.5.0/psych/versions.rb
  151 /usr/lib/ruby/2.5.0/psych/exception.rb
  152 /usr/lib/ruby/2.5.0/psych/syntax_error.rb
  153 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/psych.so
  154 /usr/lib/ruby/2.5.0/psych/omap.rb
  155 /usr/lib/ruby/2.5.0/psych/set.rb
  156 /usr/lib/ruby/2.5.0/psych/class_loader.rb
  157 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/strscan.so
  158 /usr/lib/ruby/2.5.0/psych/scalar_scanner.rb
  159 /usr/lib/ruby/2.5.0/psych/nodes/node.rb
  160 /usr/lib/ruby/2.5.0/psych/nodes/stream.rb
  161 /usr/lib/ruby/2.5.0/psych/nodes/document.rb
  162 /usr/lib/ruby/2.5.0/psych/nodes/sequence.rb
  163 /usr/lib/ruby/2.5.0/psych/nodes/scalar.rb
  164 /usr/lib/ruby/2.5.0/psych/nodes/mapping.rb
  165 /usr/lib/ruby/2.5.0/psych/nodes/alias.rb
  166 /usr/lib/ruby/2.5.0/psych/nodes.rb
  167 /usr/lib/ruby/2.5.0/psych/streaming.rb
  168 /usr/lib/ruby/2.5.0/psych/visitors/visitor.rb
  169 /usr/lib/ruby/2.5.0/psych/visitors/to_ruby.rb
  170 /usr/lib/ruby/2.5.0/psych/visitors/emitter.rb
  171 /usr/lib/ruby/2.5.0/psych/handler.rb
  172 /usr/lib/ruby/2.5.0/psych/tree_builder.rb
  173 /usr/lib/ruby/2.5.0/psych/visitors/yaml_tree.rb
  174 /usr/lib/ruby/2.5.0/psych/json/ruby_events.rb
  175 /usr/lib/ruby/2.5.0/psych/visitors/json_tree.rb
  176 /usr/lib/ruby/2.5.0/psych/visitors/depth_first.rb
  177 /usr/lib/ruby/2.5.0/psych/visitors.rb
  178 /usr/lib/ruby/2.5.0/psych/parser.rb
  179 /usr/lib/ruby/2.5.0/psych/coder.rb
  180 /usr/lib/ruby/2.5.0/psych/core_ext.rb
  181 /usr/lib/ruby/2.5.0/psych/stream.rb
  182 /usr/lib/ruby/2.5.0/psych/json/yaml_events.rb
  183 /usr/lib/ruby/2.5.0/psych/json/tree_builder.rb
  184 /usr/lib/ruby/2.5.0/psych/json/stream.rb
  185 /usr/lib/ruby/2.5.0/psych/handlers/document_stream.rb
  186 /usr/lib/ruby/2.5.0/psych.rb
  187 /usr/lib/ruby/2.5.0/yaml.rb
  188 /usr/lib/ruby/2.5.0/json/version.rb
  189 /usr/lib/ruby/2.5.0/ostruct.rb
  190 /usr/lib/ruby/2.5.0/json/generic_object.rb
  191 /usr/lib/ruby/2.5.0/json/common.rb
  192 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/parser.so
  193 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/generator.so
  194 /usr/lib/ruby/2.5.0/json/ext.rb
  195 /usr/lib/ruby/2.5.0/json.rb
  196 /haproxy/lib/consul/async/utilities.rb
  197 /haproxy/lib/consul/async/stats.rb
  198 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so
  199 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/version.rb
  200 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/pool.rb
  201 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/deferrable.rb
  202 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/future.rb
  203 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/streamer.rb
  204 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/spawnable.rb
  205 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/processes.rb
  206 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/iterator.rb
  207 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/buftok.rb
  208 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/timers.rb
  209 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/protocols.rb
  210 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/connection.rb
  211 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/callback.rb
  212 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/queue.rb
  213 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/channel.rb
  214 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/file_watch.rb
  215 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/process_watch.rb
  216 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/tick_loop.rb
  217 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/resolver.rb
  218 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/completion.rb
  219 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/em/threaded_resource.rb
  220 /usr/lib/ruby/2.5.0/shellwords.rb
  221 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/socket.so
  222 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/wait.so
  223 /usr/lib/ruby/2.5.0/socket.rb
  224 /usr/lib/ruby/2.5.0/timeout.rb
  225 /usr/lib/ruby/2.5.0/securerandom.rb
  226 /usr/lib/ruby/2.5.0/resolv.rb
  227 /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/eventmachine.rb
  228 /usr/lib/ruby/2.5.0/base64.rb
  229 /var/lib/gems/2.5.0/gems/em-socksify-0.3.2/lib/em-socksify/socksify.rb
  230 /var/lib/gems/2.5.0/gems/em-socksify-0.3.2/lib/em-socksify/errors.rb
  231 /var/lib/gems/2.5.0/gems/em-socksify-0.3.2/lib/em-socksify/socks5.rb
  232 /var/lib/gems/2.5.0/gems/em-socksify-0.3.2/lib/em-socksify/connectify.rb
  233 /var/lib/gems/2.5.0/gems/em-socksify-0.3.2/lib/em-socksify/connect.rb
  234 /var/lib/gems/2.5.0/gems/em-socksify-0.3.2/lib/em-socksify.rb
  235 /var/lib/gems/2.5.0/gems/addressable-2.8.0/lib/addressable/version.rb
  236 /var/lib/gems/2.5.0/gems/addressable-2.8.0/lib/addressable/idna/pure.rb
  237 /var/lib/gems/2.5.0/gems/addressable-2.8.0/lib/addressable/idna.rb
  238 /var/lib/gems/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/domain.rb
  239 /var/lib/gems/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/version.rb
  240 /var/lib/gems/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/errors.rb
  241 /var/lib/gems/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/rule.rb
  242 /var/lib/gems/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix/list.rb
  243 /var/lib/gems/2.5.0/gems/public_suffix-4.0.6/lib/public_suffix.rb
  244 /var/lib/gems/2.5.0/gems/addressable-2.8.0/lib/addressable/uri.rb
  245 /var/lib/gems/2.5.0/gems/http_parser.rb-0.8.0/lib/ruby_http_parser.so
  246 /var/lib/gems/2.5.0/gems/http_parser.rb-0.8.0/lib/http_parser.rb
  247 /var/lib/gems/2.5.0/gems/http_parser.rb-0.8.0/lib/http/parser.rb
  248 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/digest.so
  249 /usr/lib/ruby/2.5.0/digest.rb
  250 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/openssl.so
  251 /usr/lib/ruby/2.5.0/openssl/bn.rb
  252 /usr/lib/ruby/2.5.0/openssl/pkey.rb
  253 /usr/lib/ruby/2.5.0/openssl/cipher.rb
  254 /usr/lib/ruby/2.5.0/openssl/config.rb
  255 /usr/lib/ruby/2.5.0/openssl/digest.rb
  256 /usr/lib/ruby/2.5.0/openssl/x509.rb
  257 /usr/lib/ruby/2.5.0/openssl/buffering.rb
  258 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/nonblock.so
  259 /usr/lib/ruby/2.5.0/ipaddr.rb
  260 /usr/lib/ruby/2.5.0/openssl/ssl.rb
  261 /usr/lib/ruby/2.5.0/openssl/pkcs5.rb
  262 /usr/lib/ruby/2.5.0/openssl.rb
  263 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/core_ext/bytesize.rb
  264 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em/io_streamer.rb
  265 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection.rb
  266 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_header.rb
  267 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_encoding.rb
  268 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_status_codes.rb
  269 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_client_options.rb
  270 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/http_connection_options.rb
  271 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/date_core.so
  272 /usr/lib/ruby/2.5.0/date.rb
  273 /usr/lib/ruby/2.5.0/time.rb
  274 /usr/lib/ruby/2.5.0/cgi/core.rb
  275 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/cgi/escape.so
  276 /usr/lib/ruby/2.5.0/cgi/util.rb
  277 /usr/lib/ruby/2.5.0/cgi/cookie.rb
  278 /usr/lib/ruby/2.5.0/cgi.rb
  279 /var/lib/gems/2.5.0/gems/cookiejar-0.3.3/lib/cookiejar/cookie_validation.rb
  280 /var/lib/gems/2.5.0/gems/cookiejar-0.3.3/lib/cookiejar/cookie.rb
  281 /var/lib/gems/2.5.0/gems/cookiejar-0.3.3/lib/cookiejar/jar.rb
  282 /var/lib/gems/2.5.0/gems/cookiejar-0.3.3/lib/cookiejar/version.rb
  283 /var/lib/gems/2.5.0/gems/cookiejar-0.3.3/lib/cookiejar.rb
  284 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/client.rb
  285 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/multi.rb
  286 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/request.rb
  287 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/zlib.so
  288 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http/decoders.rb
  289 /var/lib/gems/2.5.0/gems/em-http-request-1.1.7/lib/em-http.rb
  290 /haproxy/lib/consul/async/consul_endpoint.rb
  291 /haproxy/lib/consul/async/json_endpoint.rb
  292 /haproxy/lib/consul/async/debug.rb
  293 /usr/lib/ruby/2.5.0/net/protocol.rb
  294 /usr/lib/ruby/2.5.0/net/http/exceptions.rb
  295 /usr/lib/ruby/2.5.0/net/http/header.rb
  296 /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/windows_31j.so
  297 /usr/lib/ruby/2.5.0/net/http/generic_request.rb
  298 /usr/lib/ruby/2.5.0/net/http/request.rb
  299 /usr/lib/ruby/2.5.0/net/http/requests.rb
  300 /usr/lib/ruby/2.5.0/net/http/response.rb
  301 /usr/lib/ruby/2.5.0/net/http/responses.rb
  302 /usr/lib/ruby/2.5.0/net/http/proxy_delta.rb
  303 /usr/lib/ruby/2.5.0/net/http/backward.rb
  304 /usr/lib/ruby/2.5.0/net/http.rb
  305 /haproxy/lib/consul/async/vault_endpoint.rb
  306 /usr/lib/ruby/2.5.0/forwardable/impl.rb
  307 /usr/lib/ruby/2.5.0/forwardable.rb
  308 /usr/lib/ruby/2.5.0/erb.rb
  309 /haproxy/lib/consul/async/consul_template.rb
  310 /haproxy/lib/consul/async/consul_template_render.rb
  311 /haproxy/lib/consul/async/consul_template_engine.rb
  312 /haproxy/lib/consul/async/process_handler.rb
  313 /usr/lib/ruby/2.5.0/optparse.rb
  314 /usr/lib/ruby/2.5.0/optparse/uri.rb
  315 /usr/lib/ruby/2.5.0/set.rb

* Process memory map:

560a04ca8000-560a04ca9000 r-xp 00000000 00:66 921140                     /usr/bin/ruby2.5
560a04ea8000-560a04ea9000 r--p 00000000 00:66 921140                     /usr/bin/ruby2.5
560a04ea9000-560a04eaa000 rw-p 00001000 00:66 921140                     /usr/bin/ruby2.5
560a062c6000-560a07665000 rw-p 00000000 00:00 0                          [heap]
7f95508d5000-7f9550a5b000 r--s 00000000 00:66 13763759                   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f9550a5b000-7f9550c4b000 r--s 00000000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f9550c4b000-7f9550eed000 r--s 00000000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f9550eed000-7f9550f04000 r-xp 00000000 00:66 13763020                   /lib/x86_64-linux-gnu/libresolv-2.27.so
7f9550f04000-7f9551103000 ---p 00017000 00:66 13763020                   /lib/x86_64-linux-gnu/libresolv-2.27.so
7f9551103000-7f9551104000 r--p 00016000 00:66 13763020                   /lib/x86_64-linux-gnu/libresolv-2.27.so
7f9551104000-7f9551105000 rw-p 00017000 00:66 13763020                   /lib/x86_64-linux-gnu/libresolv-2.27.so
7f9551105000-7f9551107000 rw-p 00000000 00:00 0 
7f9551107000-7f955110c000 r-xp 00000000 00:66 13762997                   /lib/x86_64-linux-gnu/libnss_dns-2.27.so
7f955110c000-7f955130c000 ---p 00005000 00:66 13762997                   /lib/x86_64-linux-gnu/libnss_dns-2.27.so
7f955130c000-7f955130d000 r--p 00005000 00:66 13762997                   /lib/x86_64-linux-gnu/libnss_dns-2.27.so
7f955130d000-7f955130e000 rw-p 00006000 00:66 13762997                   /lib/x86_64-linux-gnu/libnss_dns-2.27.so
7f955130e000-7f9551319000 r-xp 00000000 00:66 13762999                   /lib/x86_64-linux-gnu/libnss_files-2.27.so
7f9551319000-7f9551518000 ---p 0000b000 00:66 13762999                   /lib/x86_64-linux-gnu/libnss_files-2.27.so
7f9551518000-7f9551519000 r--p 0000a000 00:66 13762999                   /lib/x86_64-linux-gnu/libnss_files-2.27.so
7f9551519000-7f955151a000 rw-p 0000b000 00:66 13762999                   /lib/x86_64-linux-gnu/libnss_files-2.27.so
7f955151a000-7f9551520000 rw-p 00000000 00:00 0 
7f9551520000-7f9551522000 r-xp 00000000 00:66 922540                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/windows_31j.so
7f9551522000-7f9551722000 ---p 00002000 00:66 922540                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/windows_31j.so
7f9551722000-7f9551723000 r--p 00002000 00:66 922540                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/windows_31j.so
7f9551723000-7f9551724000 rw-p 00003000 00:66 922540                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/windows_31j.so
7f9551724000-7f9551740000 r-xp 00000000 00:66 13763045                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f9551740000-7f955193f000 ---p 0001c000 00:66 13763045                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f955193f000-7f9551940000 r--p 0001b000 00:66 13763045                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f9551940000-7f9551941000 rw-p 0001c000 00:66 13763045                   /lib/x86_64-linux-gnu/libz.so.1.2.11
7f9551941000-7f955194f000 r-xp 00000000 00:66 922572                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/zlib.so
7f955194f000-7f9551b4f000 ---p 0000e000 00:66 922572                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/zlib.so
7f9551b4f000-7f9551b50000 r--p 0000e000 00:66 922572                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/zlib.so
7f9551b50000-7f9551b51000 rw-p 0000f000 00:66 922572                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/zlib.so
7f9551b51000-7f9551b54000 r-xp 00000000 00:66 922468                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/cgi/escape.so
7f9551b54000-7f9551d53000 ---p 00003000 00:66 922468                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/cgi/escape.so
7f9551d53000-7f9551d54000 r--p 00002000 00:66 922468                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/cgi/escape.so
7f9551d54000-7f9551d55000 rw-p 00003000 00:66 922468                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/cgi/escape.so
7f9551d55000-7f9551d84000 r-xp 00000000 00:66 922471                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/date_core.so
7f9551d84000-7f9551f83000 ---p 0002f000 00:66 922471                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/date_core.so
7f9551f83000-7f9551f84000 r--p 0002e000 00:66 922471                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/date_core.so
7f9551f84000-7f9551f85000 rw-p 0002f000 00:66 922471                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/date_core.so
7f9551f85000-7f9551f86000 rw-p 00000000 00:00 0 
7f9551f86000-7f9551f87000 r-xp 00000000 00:66 922548                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/nonblock.so
7f9551f87000-7f9552187000 ---p 00001000 00:66 922548                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/nonblock.so
7f9552187000-7f9552188000 r--p 00001000 00:66 922548                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/nonblock.so
7f9552188000-7f9552189000 rw-p 00002000 00:66 922548                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/nonblock.so
7f9552189000-7f955218c000 r-xp 00000000 00:66 922479                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/digest.so
7f955218c000-7f955238b000 ---p 00003000 00:66 922479                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/digest.so
7f955238b000-7f955238c000 r--p 00002000 00:66 922479                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/digest.so
7f955238c000-7f955238d000 rw-p 00003000 00:66 922479                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/digest.so
7f955238d000-7f955244e000 rw-p 00000000 00:00 0 
7f955244e000-7f95526e9000 r-xp 00000000 00:66 13771813                   /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7f95526e9000-7f95528e8000 ---p 0029b000 00:66 13771813                   /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7f95528e8000-7f9552914000 r--p 0029a000 00:66 13771813                   /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7f9552914000-7f9552916000 rw-p 002c6000 00:66 13771813                   /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7f9552916000-7f9552919000 rw-p 00000000 00:00 0 
7f9552919000-7f955299a000 r-xp 00000000 00:66 13771951                   /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7f955299a000-7f9552b99000 ---p 00081000 00:66 13771951                   /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7f9552b99000-7f9552ba2000 r--p 00080000 00:66 13771951                   /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7f9552ba2000-7f9552ba6000 rw-p 00089000 00:66 13771951                   /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7f9552ba6000-7f9552bf8000 r-xp 00000000 00:66 922556                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/openssl.so
7f9552bf8000-7f9552df8000 ---p 00052000 00:66 922556                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/openssl.so
7f9552df8000-7f9552dfb000 r--p 00052000 00:66 922556                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/openssl.so
7f9552dfb000-7f9552dfc000 rw-p 00055000 00:66 922556                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/openssl.so
7f9552dfc000-7f9552e06000 r-xp 00000000 00:66 1310817                    /var/lib/gems/2.5.0/gems/http_parser.rb-0.8.0/lib/ruby_http_parser.so
7f9552e06000-7f9553005000 ---p 0000a000 00:66 1310817                    /var/lib/gems/2.5.0/gems/http_parser.rb-0.8.0/lib/ruby_http_parser.so
7f9553005000-7f9553006000 r--p 00009000 00:66 1310817                    /var/lib/gems/2.5.0/gems/http_parser.rb-0.8.0/lib/ruby_http_parser.so
7f9553006000-7f9553007000 rw-p 0000a000 00:66 1310817                    /var/lib/gems/2.5.0/gems/http_parser.rb-0.8.0/lib/ruby_http_parser.so
7f9553007000-7f9553009000 r-xp 00000000 00:66 922549                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/wait.so
7f9553009000-7f9553208000 ---p 00002000 00:66 922549                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/wait.so
7f9553208000-7f9553209000 r--p 00001000 00:66 922549                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/wait.so
7f9553209000-7f955320a000 rw-p 00002000 00:66 922549                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/io/wait.so
7f955320a000-7f9553234000 r-xp 00000000 00:66 922568                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/socket.so
7f9553234000-7f9553433000 ---p 0002a000 00:66 922568                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/socket.so
7f9553433000-7f9553434000 r--p 00029000 00:66 922568                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/socket.so
7f9553434000-7f9553435000 rw-p 0002a000 00:66 922568                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/socket.so
7f9553435000-7f955344c000 r-xp 00000000 00:66 13762975                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f955344c000-7f955364b000 ---p 00017000 00:66 13762975                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f955364b000-7f955364c000 r--p 00016000 00:66 13762975                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f955364c000-7f955364d000 rw-p 00017000 00:66 13762975                   /lib/x86_64-linux-gnu/libgcc_s.so.1
7f955364d000-7f95537c6000 r-xp 00000000 00:66 13763759                   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f95537c6000-7f95539c6000 ---p 00179000 00:66 13763759                   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f95539c6000-7f95539d0000 r--p 00179000 00:66 13763759                   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f95539d0000-7f95539d2000 rw-p 00183000 00:66 13763759                   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
7f95539d2000-7f95539d6000 rw-p 00000000 00:00 0 
7f95539d6000-7f95539f7000 r-xp 00000000 00:66 1188355                    /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so
7f95539f7000-7f9553bf6000 ---p 00021000 00:66 1188355                    /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so
7f9553bf6000-7f9553bf8000 r--p 00020000 00:66 1188355                    /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so
7f9553bf8000-7f9553bf9000 rw-p 00022000 00:66 1188355                    /var/lib/gems/2.5.0/gems/eventmachine-1.2.7/lib/rubyeventmachine.so
7f9553bf9000-7f9553c00000 r-xp 00000000 00:66 922552                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/generator.so
7f9553c00000-7f9553dff000 ---p 00007000 00:66 922552                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/generator.so
7f9553dff000-7f9553e00000 r--p 00006000 00:66 922552                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/generator.so
7f9553e00000-7f9553e01000 rw-p 00007000 00:66 922552                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/generator.so
7f9553e01000-7f9553e07000 r-xp 00000000 00:66 922553                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/parser.so
7f9553e07000-7f9554006000 ---p 00006000 00:66 922553                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/parser.so
7f9554006000-7f9554007000 r--p 00005000 00:66 922553                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/parser.so
7f9554007000-7f9554008000 rw-p 00006000 00:66 922553                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/json/ext/parser.so
7f9554008000-7f955400d000 r-xp 00000000 00:66 922570                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/strscan.so
7f955400d000-7f955420c000 ---p 00005000 00:66 922570                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/strscan.so
7f955420c000-7f955420d000 r--p 00004000 00:66 922570                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/strscan.so
7f955420d000-7f955420e000 rw-p 00005000 00:66 922570                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/strscan.so
7f955420e000-7f955422b000 r-xp 00000000 00:66 922443                     /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.5
7f955422b000-7f955442a000 ---p 0001d000 00:66 922443                     /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.5
7f955442a000-7f955442b000 r--p 0001c000 00:66 922443                     /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.5
7f955442b000-7f955442c000 rw-p 0001d000 00:66 922443                     /usr/lib/x86_64-linux-gnu/libyaml-0.so.2.0.5
7f955442c000-7f9554432000 r-xp 00000000 00:66 922558                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/psych.so
7f9554432000-7f9554632000 ---p 00006000 00:66 922558                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/psych.so
7f9554632000-7f9554633000 r--p 00006000 00:66 922558                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/psych.so
7f9554633000-7f9554634000 rw-p 00007000 00:66 922558                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/psych.so
7f9554634000-7f955463a000 r-xp 00000000 00:66 922541                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/etc.so
7f955463a000-7f9554839000 ---p 00006000 00:66 922541                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/etc.so
7f9554839000-7f955483a000 r--p 00005000 00:66 922541                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/etc.so
7f955483a000-7f955483b000 rw-p 00006000 00:66 922541                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/etc.so
7f955483b000-7f9554842000 r-xp 00000000 00:66 922557                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/pathname.so
7f9554842000-7f9554a41000 ---p 00007000 00:66 922557                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/pathname.so
7f9554a41000-7f9554a42000 r--p 00006000 00:66 922557                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/pathname.so
7f9554a42000-7f9554a43000 rw-p 00007000 00:66 922557                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/pathname.so
7f9554a43000-7f9554a4a000 r-xp 00000000 00:66 922569                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/stringio.so
7f9554a4a000-7f9554c4a000 ---p 00007000 00:66 922569                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/stringio.so
7f9554c4a000-7f9554c4b000 r--p 00007000 00:66 922569                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/stringio.so
7f9554c4b000-7f9554c4c000 rw-p 00008000 00:66 922569                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/stringio.so
7f9554c4c000-7f9554c4e000 r-xp 00000000 00:66 922527                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/trans/transdb.so
7f9554c4e000-7f9554e4e000 ---p 00002000 00:66 922527                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/trans/transdb.so
7f9554e4e000-7f9554e4f000 r--p 00002000 00:66 922527                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/trans/transdb.so
7f9554e4f000-7f9554e50000 rw-p 00003000 00:66 922527                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/trans/transdb.so
7f9554e50000-7f9554e52000 r-xp 00000000 00:66 922484                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/encdb.so
7f9554e52000-7f9555051000 ---p 00002000 00:66 922484                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/encdb.so
7f9555051000-7f9555052000 r--p 00001000 00:66 922484                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/encdb.so
7f9555052000-7f9555053000 rw-p 00002000 00:66 922484                     /usr/lib/x86_64-linux-gnu/ruby/2.5.0/enc/encdb.so
7f9555053000-7f95551f0000 r-xp 00000000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f95551f0000-7f95553ef000 ---p 0019d000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f95553ef000-7f95553f0000 r--p 0019c000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f95553f0000-7f95553f1000 rw-p 0019d000 00:66 13762982                   /lib/x86_64-linux-gnu/libm-2.27.so
7f95553f1000-7f95553fa000 r-xp 00000000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f95553fa000-7f95555f9000 ---p 00009000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f95555f9000-7f95555fa000 r--p 00008000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f95555fa000-7f95555fb000 rw-p 00009000 00:66 13762965                   /lib/x86_64-linux-gnu/libcrypt-2.27.so
7f95555fb000-7f9555629000 rw-p 00000000 00:00 0 
7f9555629000-7f955562c000 r-xp 00000000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f955562c000-7f955582b000 ---p 00003000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f955582b000-7f955582c000 r--p 00002000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f955582c000-7f955582d000 rw-p 00003000 00:66 13762967                   /lib/x86_64-linux-gnu/libdl-2.27.so
7f955582d000-7f95558ac000 r-xp 00000000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f95558ac000-7f9555aac000 ---p 0007f000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f9555aac000-7f9555aad000 r--p 0007f000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f9555aad000-7f9555aae000 rw-p 00080000 00:66 13763734                   /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7f9555aae000-7f9555ac8000 r-xp 00000000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f9555ac8000-7f9555cc7000 ---p 0001a000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f9555cc7000-7f9555cc8000 r--p 00019000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f9555cc8000-7f9555cc9000 rw-p 0001a000 00:66 13763018                   /lib/x86_64-linux-gnu/libpthread-2.27.so
7f9555cc9000-7f9555ccd000 rw-p 00000000 00:00 0 
7f9555ccd000-7f9555eb4000 r-xp 00000000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f9555eb4000-7f95560b4000 ---p 001e7000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f95560b4000-7f95560b8000 r--p 001e7000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f95560b8000-7f95560ba000 rw-p 001eb000 00:66 13762957                   /lib/x86_64-linux-gnu/libc-2.27.so
7f95560ba000-7f95560be000 rw-p 00000000 00:00 0 
7f95560be000-7f9556359000 r-xp 00000000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f9556359000-7f9556558000 ---p 0029b000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f9556558000-7f955655e000 r--p 0029a000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f955655e000-7f955655f000 rw-p 002a0000 00:66 922438                     /usr/lib/x86_64-linux-gnu/libruby-2.5.so.2.5.1
7f955655f000-7f955656f000 rw-p 00000000 00:00 0 
7f955656f000-7f9556598000 r-xp 00000000 00:66 13762939                   /lib/x86_64-linux-gnu/ld-2.27.so
7f9556687000-7f9556688000 ---p 00000000 00:00 0 
7f9556688000-7f9556794000 rw-p 00000000 00:00 0 
7f9556796000-7f9556798000 r--s 00000000 00:66 921140                     /usr/bin/ruby2.5
7f9556798000-7f9556799000 r--p 00029000 00:66 13762939                   /lib/x86_64-linux-gnu/ld-2.27.so
7f9556799000-7f955679a000 rw-p 0002a000 00:66 13762939                   /lib/x86_64-linux-gnu/ld-2.27.so
7f955679a000-7f955679b000 rw-p 00000000 00:00 0 
7fffa01ff000-7fffa09fe000 rw-p 00000000 00:00 0                          [stack]
7fffa0b39000-7fffa0b3c000 r--p 00000000 00:00 0                          [vvar]
7fffa0b3c000-7fffa0b3d000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]


[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Here is the Gemfile

gemspec
gem 'bootstrap', '~> 4.1', '>= 4.1.2'
root@c7f48cc530fe:/haproxy# cat Gemfile.lock
PATH
  remote: .
  specs:
    consul-templaterb (1.33.1)
      em-http-request (~> 1.1)
      eventmachine (~> 1.2)
      parallel (~> 1.2)

Here is the Gem.lock

PATH
  remote: .
  specs:
    consul-templaterb (1.33.1)
      em-http-request (~> 1.1)
      eventmachine (~> 1.2)
      parallel (~> 1.2)

GEM
  remote: https://rubygems.org/
  specs:
    actionpack (6.1.4.6)
      actionview (= 6.1.4.6)
      activesupport (= 6.1.4.6)
      rack (~> 2.0, >= 2.0.9)
      rack-test (>= 0.6.3)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.0, >= 1.2.0)
    actionview (6.1.4.6)
      activesupport (= 6.1.4.6)
      builder (~> 3.1)
      erubi (~> 1.4)
      rails-dom-testing (~> 2.0)
      rails-html-sanitizer (~> 1.1, >= 1.2.0)
    activesupport (6.1.4.6)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (>= 1.6, < 2)
      minitest (>= 5.1)
      tzinfo (~> 2.0)
      zeitwerk (~> 2.3)
    addressable (2.8.0)
      public_suffix (>= 2.0.2, < 5.0)
    ast (2.4.2)
    autoprefixer-rails (10.4.2.0)
      execjs (~> 2)
    bootstrap (4.6.1)
      autoprefixer-rails (>= 9.1.0)
      popper_js (>= 1.14.3, < 2)
      sassc-rails (>= 2.0.0)
    builder (3.2.4)
    concurrent-ruby (1.1.9)
    cookiejar (0.3.3)
    crack (0.4.5)
      rexml
    crass (1.0.6)
    diff-lcs (1.5.0)
    em-http-request (1.1.7)
      addressable (>= 2.3.4)
      cookiejar (!= 0.3.1)
      em-socksify (>= 0.3)
      eventmachine (>= 1.0.3)
      http_parser.rb (>= 0.6.0)
    em-socksify (0.3.2)
      eventmachine (>= 1.0.0.beta.4)
    erubi (1.10.0)
    eventmachine (1.2.7)
    execjs (2.8.1)
    ffi (1.15.5)
    hashdiff (1.0.1)
    http_parser.rb (0.8.0)
    i18n (1.10.0)
      concurrent-ruby (~> 1.0)
    jaro_winkler (1.5.4)
    loofah (2.14.0)
      crass (~> 1.0.2)
      nokogiri (>= 1.5.9)
    method_source (1.0.0)
    minitest (5.15.0)
    nokogiri (1.12.5-x86_64-linux)
      racc (~> 1.4)
    parallel (1.21.0)
    parser (3.1.1.0)
      ast (~> 2.4.1)
    popper_js (1.16.0)
    public_suffix (4.0.6)
    racc (1.6.0)
    rack (2.2.3)
    rack-test (1.1.0)
      rack (>= 1.0, < 3)
    rails-dom-testing (2.0.3)
      activesupport (>= 4.2.0)
      nokogiri (>= 1.6)
    rails-html-sanitizer (1.4.2)
      loofah (~> 2.3)
    railties (6.1.4.6)
      actionpack (= 6.1.4.6)
      activesupport (= 6.1.4.6)
      method_source
      rake (>= 0.13)
      thor (~> 1.0)
    rainbow (3.1.1)
    rake (12.3.3)
    rexml (3.2.5)
    rspec (3.11.0)
      rspec-core (~> 3.11.0)
      rspec-expectations (~> 3.11.0)
      rspec-mocks (~> 3.11.0)
    rspec-core (3.11.0)
      rspec-support (~> 3.11.0)
    rspec-expectations (3.11.0)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.11.0)
    rspec-mocks (3.11.0)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.11.0)
    rspec-support (3.11.0)
    rspec_junit_formatter (0.4.1)
      rspec-core (>= 2, < 4, != 2.12.0)
    rubocop (0.80.1)
      jaro_winkler (~> 1.5.1)
      parallel (~> 1.10)
      parser (>= 2.7.0.1)
      rainbow (>= 2.2.2, < 4.0)
      rexml
      ruby-progressbar (~> 1.7)
      unicode-display_width (>= 1.4.0, < 1.7)
    rubocop-junit-formatter (0.1.4)
    ruby-progressbar (1.11.0)
    sassc (2.4.0)
      ffi (~> 1.9)
    sassc-rails (2.1.2)
      railties (>= 4.0.0)
      sassc (>= 2.0)
      sprockets (> 3.0)
      sprockets-rails
      tilt
    sprockets (4.0.2)
      concurrent-ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-rails (3.4.2)
      actionpack (>= 5.2)
      activesupport (>= 5.2)
      sprockets (>= 3.0.0)
    thor (1.2.1)
    tilt (2.0.10)
    tzinfo (2.0.4)
      concurrent-ruby (~> 1.0)
    unicode-display_width (1.6.1)
    webmock (2.3.2)
      addressable (>= 2.3.6)
      crack (>= 0.3.2)
      hashdiff
    zeitwerk (2.5.4)

PLATFORMS
  x86_64-linux

DEPENDENCIES
  bootstrap (~> 4.1, >= 4.1.2)
  bundler (>= 1.14)
  consul-templaterb!
  rake (~> 12.3)
  rspec (~> 3.0)
  rspec_junit_formatter (~> 0.4.1)
  rubocop (~> 0.80.0)
  rubocop-junit-formatter (= 0.1.4)
  webmock (~> 2.1)

BUNDLED WITH
   2.2.27

Potential Memory Leak

Hey Criteo friends,

We have been using consul-templaterb and we have noticed that overtime the memory utilization for the process slow creeps up and it recently caused some issues for our cluster.

Would like to provide some more information to help in the diagnosis and remediation steps, what would you need to help find the issue?

Warnings with ruby 2.7.0 and consul-templaterb 1.21.8

/usr/local/bundle/gems/consul-templaterb-1.21.8/bin/consul-templaterb:291: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/usr/local/bundle/gems/consul-templaterb-1.21.8/lib/consul/async/consul_endpoint.rb:11: warning: The called method `initialize' is defined here
/usr/local/bundle/gems/consul-templaterb-1.21.8/bin/consul-templaterb:292: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/usr/local/bundle/gems/consul-templaterb-1.21.8/lib/consul/async/vault_endpoint.rb:15: warning: The called method `initialize' is defined here

Signal Handling from Orchestrator

First of all: Awesome work, this an amazingly fast and awesome tool. Thanks for sharing this!

#! /bin/bash /usr/local/bin/consul-templaterb --wait=60 --no-vault-renew --vault-addr=${VAULT_ADDR} --consul-addr=${CONSUL_HTTP_ADDR} \ --sig-reload=USR2 --exec "/haproxy/bin/haproxy -f /haproxy/hap.conf" "$@"

and the variables being passed is
"--template", "/haproxy/hap.conf.erb:/haproxy/hap.conf", "--template", "/haproxy/routing.map.erb:/haproxy/routing.map", "--template", "/haproxy/secrets_generator.erb:/haproxy/secrets_generator"

This is a watered down version of our entrypoint running in a Ubuntu18.04 container. Our goal is to run this consul-templaterb rendering HAProxy configs and reloading the process when consul values are changed. This is generally working as expected, however we are running some tests and we are not seeing signal handling as expected.

We tried running consul-templaterb in the background and trapping the signals, however I am not sure that this was the intent of this when you wrote consul-templaterb.

When using an orchestrator what is your suggested deployment/signal handling?

[FEATURE] Prometheus Endpoint for Template Rendering Times

Hey Criteo!

This is an amazing product, we have been using it for over a year to render large and extra-large pools. The one thing that we are missing from this product is away to view statistics on each template including: reloads, render times, failures (if any, we generally code around missing values, but being able to notify prometheus would be great).

Again, this awesome, hope this is a reasonable ask! Have a great holiday!

Expose list of templates objects being generated

Goal is to be able to have one template rendering after all other templates have been rendered once.
This would serve as a sort of checkpoint "initialization is complete" and would be used as healthcheck for the whole consul-templaterb process.

For instance:

consul-templaterb -t one_template -t second_template -t health would be launched and health template would contain something like:

<% return nil unless templates.reject { |t| t == __FILE__ }.all?(&:rendered_once) %>

This would be a mixup between current api allowing to access current template info and the list of other templates.

Cannot see nodes/services/any in the UI

Hi,

When builder the Dockerfile and going to the inferface, I can't see anything concerning my nodes or services in the UI. When I go inside the container and try to wget my nodes for example, I receive them (wget $CONSUL_HTTP_ADDR/v1/catalog/nodes works). While I'm in the container, I can see them in consul_services.json.

Could it be because it tries to consult them directly, instead of asking the $CONSUL_HTTP_ADDR for information ?

If it still calls $CONSUL_HTTP_ADDR, then my network configuration is not the reason for this.

But then, when I try to build/launch from scratch (i.e without docker), running bundle exec consul-templaterb -c http://192.168.1.27:8500 samples/consul-ui/*.erb, the UI is still accessible, I see that the json files are filed (consul_nodes.json, consul_services.json), but I still don't see data present in the static html files of consul-ui (consul-templaterb/samples/consul-ui/consul-timeline-ui.html, built from the consul-templaterb/samples/consul-ui/consul-timeline-ui.html.erb file).

Perhaps the following errors in the browser (FF 77) console is the reason?

ReferenceError: navBarDecorator is not definedconsul-keys-ui.html:91:37
ReferenceError: fetchedResponseDecorator is not definedtypes.js:11:9

If not, could you please explain me where I missed a step?

Question: multiple unrelated consul endpoints

Is interaction with multiple unrelated consul endpoints supported and if not, would such a feature be within the scope of this project?

My specific use-case that I want to implement with consul-templaterb is replacement for Prometheus' own intentionally limited (and possibly buggy) consul_sd. Due to the stance of the Prometheus project developers that if one needs anything more complex than they have already implemented, one should use some external tooling to produce a file with metrics endpoints and their settings, consul-templaterb seems like a great fit. But... my setup involves multiple unrelated (i.e. not federated using datacenters mechanism) consul clusters. The set of additional consul clusters is dynamic and is obtained from the main consul cluster. Specifically, consul agents connected to those clusters are registered as services in the main consul cluster.

Of course, I could try cascading multiple instances of consul-templaterb but that seems to be a tricky kludge.

undefined method `[]' for #<Consul::Async::ConsulTemplateNodes:0x000055744a631640>

We're seeing sporadic

undefined method `[]' for #<Consul::Async::ConsulTemplateNodes:0x000055744a631640>

in our logs.

This is coming from a node(node_id)["Services"] call.

We're currently on consul-templaterb version 1.29.0, running consul 1.9.1.

Since this works 99% of the time, I'm not sure where the issue is coming from. Perhaps it hasn't resolved to the consul response yet?

Trying to auth to vault with certs

Hello,

I'm not able to connect to vault with certs.
My consul-templaterb version is 1.27.0

I have a vault_test.erb file with :

<%= secret("ssl/cloudflare/origin/key")['data'] %>

I run this command :

consul-templaterb --vault-addr http://vault_address:8200 --vault-cert-chain /etc/consul-templaterb/ssl/vault_auth.crt --vault-private-key /etc/consul-templaterb/ssl/vault_auth.key -o -t vault_test.erb:vault_test.txt

I get this error :
[FATAL][TEMPLATE EVALUATION ERROR] vault_test.erb:1:in `render': You need to provide a vault token to use 'secret' keyword

I succeed to connect to vault via vault cli with cert method.

Authentification without vault token is not possible yet ?

Thanks

How to stop after x retries?

If running in --once mode with invalid CONSUL_ADDR/CONSUL_TOKEN/VAULT_ADDR/VAULT_TOKEN, consul-templaterb will apparently error forever.

By comparison, consul-template has --retry and --vault-retry-attempts to stop early.

Is there a way to stop consul-templaterb after x errorenous retries? hot-reload has no effect (which makes sense since it's for the template, not the backend).

Executing command on each change

consul-templaterb has option for run permanent process:

-e, --exec= Execute the following command

but some cases requires run command on template changing, e.g. rndc reload

Now I have to write wrapper like:

#! /bin/sh

cleanup() {
	 rndc reload <zone>
}

trap "cleanup" INT

while true
do
	sleep 1
done

Could you add option for running command on template changing with interval --wait=<min_duration> ? Or are there other possibilites for it?

Improve Docker image builld

As suggested by @simongareste, there is room for improvement for Docker Image as explained in #61 (comment) :

However, I believe you still have an issue in the repository, as the Gemfile.lock provided here states

BUNDLED WITH
2.1.4

whereas the docker image ruby:2.5 comes with bundler 1.17.2. Because of this, building the image by directly building the Dockerfile upon clone won't work :

[...]
Step 5/10 : RUN bundle install
 ---> Running in 6507a122ed1f
You must use Bundler 2 or greater with this lockfile.
The command '/bin/sh -c bundle install' returned a non-zero code: 20

I see a few options to fix this:

  • update rubygems in the Dockerfile before running bundle install: RUN gem update --system. This leads to a warning (Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running gem install bundler:2.1.4.), but compiles successfully, and works (my consul-ui is working fine)
  • do not ship the Gemfile.lock in the image, by adding Gemfile.lock to the .dockerignore file (or even remove the Gemfile.lock altogether). This would lead to a variation of gems in the image, depending on the time/date of the build, which may or may not be a super idea. May I suggest, however, to lighten the image and speed up the build by removing everything that is not necessary, starting with the .git folder and a few others files? I can do a pull request for this one.
  • upgrade the ruby image used, to one that is using the same bundle version as the one in your Gemfile.lock. This looks messy.
  • rebuild and recommit the Gemfile.lock with a 1.17.x version.
  • other options: I'm pretty sure there are a lot more options, these are the simplest that come to mind :)

Correct usage of --wait-signal option

Thanks for this wonderful tool. This is my first time using it so I would like an advice.

My understanding of --wait-signal=n option is that consul-templaterb waits n seconds before sending the signal defined in --sig-reload to the long-running --exec proccess. However what I see is that the signal is sent immediately after Consul service data changes. For example I'm using Nomad for spawning tasks and registrating them and as soon as I tell Nomad to run or stop tasks the signal is sent to my other process. Am I wrong or is there a bug here?

The command:

consul-templaterb --template "members.json.erb:members.json" \
  --consul-addr=127.0.0.1:8500 --sig-reload USR1 --wait-signal 5 --exec=myctl

consul_templaterb uses deprecated methods

When I run consul_templaterb I get the following output in the terminal:

/usr/local/share/gems/gems/consul-templaterb-1.33.2/lib/consul/async/consul_template.rb:321: warning: Passing trim_mode with the 3rd argument of ERB.new is deprecated. Use keyword argument like ERB.new(str, trim_mode: ...) instead.
/usr/local/share/gems/gems/consul-templaterb-1.33.2/lib/consul/async/consul_template.rb:321: warning: Passing safe_level with the 2nd argument of ERB.new is deprecated. Do not use it, and specify other arguments as keyword arguments.

[Q] AIX 7.1 Support

Hi, I'm wondering if consul-templaterb can be installed on AIX 7.1 or not.

I'd like to use consul-template but it's written by golang and Golang is supported from AIX 7.2.
But I need consul-template like functions (template, K/V Watch) on AIX 7.1

Please help me out.

inactivity_timeout for the vault endpoint isn't configurable/too short

We run a somewhat unconventional consul/vault setup, in that our clusters are far away from some of our servers and thus latency is pretty poor. With the hard-coded inactivity_timeout for vault of 1s here

inactivity_timeout: 1 # default connection inactivity (post-setup) timeout

consul-templaterb often times out during a run for some keys. I confirmed that increasing this to a longer time fixes the issue. Potentially somewhat of a niche request, but making this configurable would allow increase the timeout in cases where vault was a stupid distance away from the host consul-templaterb was running on.

Throttle EM requests to max/sec or max parallel?

With Consul 1.6.3 limits and a large catalog I had to increase http_max_conns_per_client very high (2000) in order to avoid hitting many connection closed errors.

I would be willing to make a small trade-off for max # of RPCs in order to have my templates render slightly slower.

I am not extremely familiar with EventMachine, but perhaps making the threadpool_size configurable can help here?

Getting timestamp in templates

Hello!

I have to get timestamp of last template changing and might use Time.now.to_i. However I get realtime changing timestamp instead timestamp of last template changing. Consul-template allows use timestamp "unix" and there is no similar problem. Timestamp requires for SOA records :(

`ready?` method for remote_resource.as_json is always true

To reproduce, build a simple template to an endpoint that returns a 401 with json content type (such as apache marathon api with authentication). The template will be considered ready immediately.

The cause is https://github.com/criteo/consul-templaterb/blob/master/lib/consul/async/json_endpoint.rb#L205 where

enforce_json_200 && !(200..299).cover?(http.response_header.status) && http.response_header['Content-Type'] != 'application/json'

should probably be replaced by:

enforce_json_200 && !(200..299).cover?(http.response_header.status) || http.response_header['Content-Type'] != 'application/json'

The logic should be: if the response is not a 200 OK or is not advertize as json, then it's an error.

This bug leads to consider template as immediately ready.

Helpers to list all templates being rendered

I'd like to build a small collection of templates and have a index.html page that would list links to all templates being rendered.

It seems there is no endpoint in the template API to access list of templates.
Could we consider adding one?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.