Визуализируйте файл yaml, используя консул-шаблон

У меня есть требование заполнить файл конфигурации значениями, когда экземпляр загружается. Чтобы добиться этого, я использую консул (для хранения ключей / значений) и консул-шаблон для отображения правильных значений во время выполнения. Я новичок в консуле и консул-шаблоне и обладаю очень базовыми знаниями по этому вопросу.

Вот параметр (ips) в моем Yaml, который нужно заполнить:

- function: get_logistics
      parameters:
          - ips: 

Так вот как должна быть логика:

При запуске процесса cons-шаблона он должен проверить, существует ли значение в ключе консула (env_var1/env_var2/env_var3/tokens). Если значение существует, семена должны иметь это значение. Если значение не существует, он должен запросить каталог услуг и получить первые 3 IP-адреса, которые проходят проверку работоспособности службы. Если он не находит никаких IP-адресов, он должен заполнить семена своим собственным IP-адресом.

Когда значение найдено в ключе на консуле. Выход должен быть:

- function: get_logistics
      parameters:
          - ips: '10.x.x.x,10.y.y.y'

env_var1 / env_var2 / env_var3 / ips: '10.xxx,10.yyy'

Когда не найдено в ключе на консуле, но найдено в проверке работоспособности. Выход должен быть:

- function: get_logistics
      parameters:
          - ips: '10.x.x.x,10.y.y.y,10.z.z.z'

"0.xxx,10.yyy,10.zzz" - это IP-адреса, которые проходят проверку работоспособности службы.

Когда IP-адрес не найден в каталоге услуг. Ips должен быть заполнен собственным IP.

- function: get_logistics
      parameters:
          - ips: '10.a.a.a'

Это код, который я пробовал:

- function: get_logistics
      parameters:
      {{$x := env "var1"}}
      {{$y := env "var2"}}
      {{$z := env "var3"}}
      {{$keyname := printf "%s/%s/%s/ips" $x $y $z}}
      {{if key $keyname}}
       - ips: "{{key $keyname}}"
      {{else}}
       {{if service "shared|passing"}}
        - ips: "{{range $index, $service := service "$z"}}{{if ne $index 0}},{{end}}{{.Address}}{{end}}"
       {{else}}
        - ips: "{{ env "IP_ADDRESS" }}"
       {{end}}
      {{end}}

Вывод, который я получаю, когда в ключе есть значение:

- function: get_logistics
  parameters:






       - ips: "10.x.x.x,10.y.y.y"

Я хочу получить следующий вывод (без пустых строк после 'parameters:'):

- function: get_logistics
  parameters:
       - ips: "10.x.x.x,10.y.y.y"

Пожалуйста, дайте мне знать, если есть лучший способ добиться этого. Также я хотел бы, чтобы ips заполнялся в одном и том же месте в файле yaml для всех возможных сценариев (то есть параметр ips должен быть ниже строки "parameter:"). Спасибо!

0 ответов

Другие вопросы по тегам