正規表現を使用して Puppet で文字列の置換/変換を行うことは可能ですか?
$hostname が「web1」の場合、$hostname_without_number を「web」にします。以下は有効な Puppet 構文ではありませんが、次のようなものが必要だと思います。
$hostname_without_number = $hostname.gsub(/\d+$/, '')
はい、可能です。
puppet 関数リファレンスを確認してください: 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')