2012-05-02 45 views
21

是否可以使用正則表達式在Puppet中進行字符串替換/轉換?Puppet中的字符串替換?

如果$ hostname是「web1」,我希望$ hostname_without_number是「web」。以下是無效的Puppet語法,但我認爲我需要類似如下:

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

回答

37

是的,這是可能的。

檢查木偶功能參考: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

謝謝!這次我將使用內置的regsubst(),但我很高興知道inline_template!這非常靈活。 – richardkmiller

+0

值得指出的是'regsubst()'也支持第四個位置的標誌arg。諸如'G'之類的標誌將全局替換所提供的字符串中的所有匹配。 – killthrush