Puppet中的字符串替换?

时间:2012-05-02 16:43:45

标签: ruby puppet

是否可以使用正则表达式在Puppet中进行字符串替换/转换?

如果$ hostname是“web1”,我希望$ hostname_without_number为“web”。以下是无效的Puppet语法,但我认为我需要这样的东西:

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

2 个答案:

答案 0 :(得分:39)

是的,这是可能的。

检查木偶功能参考: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+$/, "") %>')

答案 1 :(得分: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')