Próbuję udostępnić maszynę wirtualną Vagrant, aby umożliwić użytkownikom dostarczanie własnego pliku bash_profile.local, ale nie chcę, aby ten plik był śledzony w repozytorium vcs na vcs. Mam śledzony plik bash_profile.local.dist, którego nazwę można zmienić. Jak mogę powiedzieć, aby marionetka tworzyła tylko plik, jeśli istnieje plik źródłowy? Obecnie działa poprawnie, ale rejestruje błąd podczas udostępniania i właśnie tego staram się uniknąć.Jak uczynić z lalek kopiowanie pliku, tylko jeśli istnieje źródło?
To jest oczywisty:
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',
}
}
Dobra sztuczka, dzięki. Jeśli ktokolwiek to czyta i zastanawia się, co się dzieje, file() spróbuje odczytywać każdy plik po kolei, aż się powiedzie, więc jeśli pierwszy plik nie istnieje, odczyta/dev/null, który zwróci ''. – pdizz
Dlaczego nie używać opcji unless lub onlyif dla zasobu plikowego i testu bash [funkcja] (http://ryanuber.com/04-17-2010/conditional-file-creation-puppet.html)? – mestachs
To świetnie, ale chciałbym dodać, że jeśli skopiujesz kod w tej odpowiedzi i wstawisz zmienną w ścieżce, pojedyncze cudzysłowy oznaczają, że zmienne nie są interpretowane. Zmień cudzysłów na podwójny cudzysłów, jeśli używasz zmiennej. (-: –