3

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

どこ.Namegeoserver_dev_hello_orgあり、server_name=geoserver.hello.orgタグがあります。.Tags範囲ループの終わりまでに、$server_name値は になるはずですgeoserver.hello.orgが、元の値はまだ ですgeoserver.dev.hello.org

ループがオーバーライドされるようにするにはどうすればよい$server_nameですか (値が見つかったときにループを終了します)。

4

3 に答える 3