Я пишу шаблон для параметризованной работы HashiCorp Nomad. Один из его параметров - priority
, которое должно быть целым числом от 0 до 100.
Как и другие инструменты, Nomad поддерживает переменная интерполяция, так что переменная может быть определена в какой-то момент и позже на нее будет ссылаться. Nomad также позволяет определять «мета-переменные», которые передаются во время выполнения и могут использоваться в файле HLC.
То, что я пытаюсь сделать, выглядит следующим образом:
job "my-job" {
parametrized {
meta_required = ["TASK_PRIORITY"]
}
priority = "${NOMAD_META_TASK_PRIORITY}"
...
}
Я нашел единственный способ прочитать эти переменные - внутри строк. Поскольку priority
строфа ожидает целое число, выдается следующая ошибка:
error parsing 'job': 1 error(s) decoding: * cannot parse 'Priority' as int: strconv.ParseInt: parsing "${NOMAD_META_TASK_PRIORITY}": invalid syntax
Есть ли способ «преобразовать» строку в целое число? Или, альтернативно, есть ли какой-нибудь другой способ ссылки на переменную, который будет работать?
Кажется, это было проблема в какой-то момент это было исправлено, но если вы используете самую последнюю версию, это должно сработать:
prioritystr = "${NOMAD_META_TASK_PRIORITY}"
priority = int(prioritystr)
В итоге я поднял вопрос на Github. Они ответили, что пока невозможно интерполировать поле приоритета. См. Проблему.