web-dev-qa-db-ja.com

Puppetの文字列置換?

正規表現を使用してPuppetで文字列の置換/変換を行うことはできますか?

$ hostnameが「web1」の場合、$ hostname_without_numberを「web」にしたい。以下は有効なPuppet構文ではありませんが、私はこのようなものが必要だと思います:

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

はい、可能です。

パペット関数リファレンスを確認してください: 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+$/, "") %>')
39
freiheit

このページでは:

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

それは非常によく説明されており、irbで正規表現をテストするための素晴らしいトリックがあります。

このリンクとfreiheitの回答のどちらを使用しても、「/」を「\」に置き換えることで問題を解決できます。

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

2
user45949