Замена строк в Puppet?
Можно ли выполнить подстановку/преобразование строк в Puppet с использованием регулярного выражения?
Если $hostname является "web1", я хочу, чтобы $hostname_without_number был "web". Недопустимый синтаксис Puppet, но я думаю, что мне нужно что-то вроде этого:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
Ответы
Ответ 1
Да, это возможно.
Проверьте ссылку на функцию марионетки: 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+$/, "") %>')
Ответ 2
На этой странице:
https://blog.kumina.nl/2010/03/puppet-tipstricks-testing-your-regsubst-replacings-2/comment-page-1/
это довольно хорошо объяснено, и есть фантастический трюк для тестирования ваших регулярных выражений с irb.
С этой ссылкой и ответом freiheit я мог бы решить свою проблему с заменой '\' на '/'.
$ programfiles_sinbackslash = regsubst ($ env_programfiles, '\', '/', 'G')