Не удается прочитать Service Meta с консулом-шаблоном

У меня есть тестовая служба, зарегистрированная в Consul со следующим определением службы:

{
  "name": "web",
  "tags": ["web1"],
  "address": "example.com",
  "meta": {
    "meta": "cluster",
    "acl": "host_test",
    "cluster": "test_cluster"
  },
  "port": 8000
}

И я хочу загрузить эту информацию в конфигурацию HAProxy, используя consul-template. Я могу получить адрес и порт, как указано в документации:

{{ range service "web" }}{{if in .Tags "web1"}}
    server {{.Node}} {{ .Address }}:{{.Port}} cookie A check
    {{ end }}{{end}}

Но я не могу получить метаинформацию. Я думал, что могу получить доступ к этому, используя что-то вроде этого в диапазоне обслуживания:

 {{range .Meta}}
  {{.}}{{end}}

Любая идея, как я могу получить acl или кластер из мета?


person seemvision    schedule 11.10.2018    source источник
comment
когда я смотрю на github.com/hashicorp/consul-template/ blob/master/dependency/ я вижу, что там есть ServiceMeta, но я также ничего не получаю   -  person Arne Burmeister    schedule 28.02.2019


Ответы (1)


Чтобы использовать пары ключ: значение из метакарты, вам нужно использовать index. Кроме того, метакарта в сервисе обозначается как .ServiceMeta.

Так, например, чтобы получить значение ключа acl в Meta, вы должны использовать:

{{index .ServiceMeta "acl"}}
person Mitchell Stankowski    schedule 27.03.2019