Строчные значения переменных в шаблоне Puppet

В моем марионеточном конфиге мне нужно прописать значение переменной в нижнем регистре, прежде чем использовать ее в шаблоне. Как этого добиться? Есть ли способ уменьшить значение переменной внутри манифеста марионетки? Нужно ли делать это в шаблоне?

И более общий: где находятся функции манипуляции со строками, которые я мог бы использовать в манифестах.

Должен ли я написать свои собственные функции ruby ​​для достижения этой цели?

2 ответа

Решение

Возможности марионеточных манипуляций внутри манифестов очень ограничены. Манифесты не предназначены для обработки подобных вещей.

Но в шаблоне это легко; нормальные рубиновые функции доступны. Скажем, я хотел в нижнем регистре osfamily факт:

<%= osfamily.downcase %>

Есть два основных решения, которые я могу придумать для этой проблемы. В общем, я имею в виду, что они будут работать в файлах и шаблонах манифеста, а не только в шаблонах.

Решение, которое я рекомендую, заключается в использовании downcase() Функция парсера в модуле стандартной библиотеки. Я рекомендую это, потому что вам не нужно писать никакой код ruby, и его легче читать:

class helloworld {
  $os_downcase = downcase($osfamily)
}
include helloworld

Если вы не хотите зависеть от stdlib модуль, то вы можете использовать inline_template Функция обобщения решения Шейна упоминается:

class helloworld {
  $os_downcase = inline_template('<%= osfamily.downcase %>')
}
include helloworld

inline_template избегает необходимости создавать отдельный *.erb файл.

Надеюсь это поможет. -Джефф

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