正規表現を使用してPuppetで文字列の置換/変換を行うことはできますか?
$ hostnameが「web1」の場合、$ hostname_without_numberを「web」にしたい。以下は有効なPuppet構文ではありませんが、私はこのようなものが必要だと思います:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
はい、可能です。
パペット関数リファレンスを確認してください: 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+$/, "") %>')
このページでは:
https://blog.kumina.nl/2010/03/puppet-tipstricks-testing-your-regsubst-replacings-2/comment-page-1/
それは非常によく説明されており、irbで正規表現をテストするための素晴らしいトリックがあります。
このリンクとfreiheitの回答のどちらを使用しても、「/」を「\」に置き換えることで問題を解決できます。
$ programfiles_sinbackslash = regsubst($ env_programfiles、 '\'、 '/'、 'G')