Подтвердить что ты не робот

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

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

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

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

Ответ 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')