Возможно ли иметь условные выражения в hiera yaml?

Я пытаюсь добиться следующего. - У меня есть определенные переменные, определенные в hiera yaml для a.yaml. - Некоторые переменные я хочу прочитать из внешних фактов. - Однако всякий раз, когда внешний факт не определен, я хочу использовать некоторые значения по умолчанию.

Так например

---
key1: value1
key2: %{value2_from_facts} | value2

В этом случае, если пользовательский факт «value2fromfacts» не определен, я хочу, чтобы ключ2 имел значение2. Это возможно?

Есть ли лучшая альтернатива назначению значений по умолчанию для переменной hiera, если используемые факты не разрешены?


person Manish Sapariya    schedule 14.05.2014    source источник


Ответы (1)


Я не думаю, что Hiera предлагает хороший способ в этом сценарии. Я рекомендую решить это на уровне манифеста, например.

if $factvalue {
  $myvalue = $factvalue
}
else {
  $myvalue = hiera('key2')
}

Чтобы сделать это модульным, создайте функции парсера, которая должна работать как

my_hiera($factvalue,'key2')

с таким телом

override = args.shift
if override.empty?
  # duplicate hiera()
  key, default, override = HieraPuppet.parse_args(args)
  HieraPuppet.lookup(key, default, self, override, :priority)
else
  override
end

Это совершенно не проверено и должно служить только наброском общей идеи.

person Felix Frank    schedule 14.05.2014
comment
Спасибо за предложение, Феликс, но я хотел избежать if/else, потому что у меня довольно много параметров. - person Manish Sapariya; 14.05.2014
comment
Ясно... Я добавлю альтернативу, используя пользовательскую функцию. - person Felix Frank; 14.05.2014