Замена строки в Puppet?

Можно ли выполнить замену/преобразование строки в Puppet с помощью регулярного выражения?

Если $hostname — «web1», я хочу, чтобы $hostname_without_number был «web». Следующий недопустимый синтаксис Puppet, но я думаю, что мне нужно что-то вроде этого:

$hostname_without_number = $hostname.gsub(/\d+$/, '')

person richardkmiller    schedule 02.05.2012    source источник


Ответы (2)


Да, это возможно.

Проверьте справку по функциям puppet: http://docs.puppetlabs.com/references/2.7.3/function.html

Встроенная функция подстановки регулярных выражений. Вероятно, она вызывает ту же базовую функцию gsub.

$hostname_without_number = regsubst($hostname, '\d+$', '')

Или, если вы предпочитаете обращаться к Ruby, вы можете использовать встроенный шаблон ERB:

$hostname_without_number = inline_template('<%= hostname.gsub(/\d+$/, "") %>')
person freiheit    schedule 03.05.2012
comment
Спасибо! На этот раз я буду использовать встроенную функцию regsubst(), но я также очень рад узнать о inline_template! Это очень гибко. - person richardkmiller; 05.05.2012
comment
Стоит отметить, что regsubst() также поддерживает аргумент flags в 4-й позиции. Такой флаг, как 'G', глобально заменит все совпадения в предоставленной строке. - person killthrush; 18.08.2016

На этой странице:

https://blog.kumina.nl/2010/03/puppet-tipstricks-testing-your-regsubst-replacings-2/comment-page-1/

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

С помощью этой ссылки и ответа freiheit я смог решить свою проблему с заменой «\» на «/».

$programfiles_sinbackslash = regsubst($env_programfiles,'\','/','G')

person user45949    schedule 11.07.2013