私は、ユーザーが独自のbash_profile.localを提供できるように、迷惑メールVMをプロビジョニングしようとしていますが、このファイルをVMのvcsリポジトリで追跡したくありません。名前を変更できるbash_profile.local.distファイルがあります。どのようにして、ソースファイルが存在する場合にのみ、人形がファイルを作成するように指示できますか?現在は正しく動作していますが、プロビジョニング中にエラーが記録されます。これが回避しようとしている問題です。あなたがこの方法でファイルを悪用する可能性が人形が存在する場合にのみ、人形のコピーをファイルにする方法を教えてください。
class local
{
file { '.bash_profile.local':
source => 'puppet:///modules/local/bash_profile.local',
path => '/home/vagrant/.bash_profile.local',
replace => false,
mode => 0644,
owner => 'vagrant',
group => 'vagrant',
}
}
ニースのトリック、ありがとう。誰かがこれを読んで何が起こっているのか疑問に思っている場合、file()は成功するまで各ファイルを順番に読み込もうとするので、最初のファイルが存在しなければ '/'を返します。 – pdizz
ファイルリソースとbashテスト[関数]のunlessまたはonlyifを使用しない理由(http://ryanuber.com/04-17-2010/conditional-file-creation-puppet.html)? – mestachs
これは素晴らしいことですが、この回答のコードをコピーしてパスに変数を付けると、一重引用符は変数が解釈されないことを意味します。変数を使用する場合は、一重引用符を二重引用符に変更します。 ( - : –