consul-template で次のテンプレートを使用しています。
{{ range services }}
{{ $server_name := .Name | replaceAll "_" "." }}
{{ range .Tags }}
{{ if . | regexMatch "server_name=" }}
# found matching server_name in {{ . }}
{{ $server_name := . | regexReplaceAll ".*=" "" }}
{{ end }}
{{ end }}
# server_name = {{ $server_name }}
acl host_{{ .Name }} hdr(host) -i {{ $server_name }}
use_backend {{ .Name }}_backend if host_{{ .Name }}
{{ end }}
生産する
# found matching server_name in server_name=geoserver.hello.org
# server_name = geoserver.dev.hello.org
acl host_geoserver_dev_hello_org hdr(host) -i geoserver.dev.hello.org
use_backend geoserver_dev_hello_org_backend if host_geoserver_dev_hello_org
どこ.Name
にgeoserver_dev_hello_org
あり、server_name=geoserver.hello.org
タグがあります。.Tags
範囲ループの終わりまでに、$server_name
値は になるはずですgeoserver.hello.org
が、元の値はまだ ですgeoserver.dev.hello.org
。
ループがオーバーライドされるようにするにはどうすればよい$server_name
ですか (値が見つかったときにループを終了します)。