Строчные значения переменных в шаблоне 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
файл.
Надеюсь это поможет. -Джефф