2012-03-01 13 views
7

Instaluję pakiet z modułu (Nginx w tym konkretnym przypadku) i chciałbym dołączyć plik konfiguracyjny spoza modułu, tj. Z najwyższego poziomu katalogu files równolegle do katalog najwyższego poziomu manifests. Nie widzę żadnego sposobu na pozyskanie pliku bez włączenia go do modułu lub w moim obecnym środowisku Vagrant, odwołując się do bezwzględnej ścieżki lokalnej.Pozyskiwanie plików Puppet spoza modułów

Czy marionetka umożliwia pobieranie plików spoza modułów zgodnie z opisem w dokumentacji?

Odpowiedz

3

jeśli dobrze rozumiem twoje pytanie, możesz. W module prosty kod jak ten

file { '/path/to/file': 
    ensure => present, 
    source => [ 
       "puppet:///files/${fqdn}/path/to/file", 
       "puppet:///files/${hostgroup}/path/to/file", 
       "puppet:///files/${domain}/path/to/file", 
       "puppet:///files/global/path/to/file", 
    ], 
} 

będzie wykonać zadanie. Plik /ścieżka/do/plik będzie pochodził z pliku znajdującego się w udziale "Kukiełki" plików. (w powyższym przykładzie jest to wyszukiwanie w 4 różnych lokalizacjach).

aktualizacja może mówisz katalogu do przechowywania plików, które nie są współdzielone przez Lalek serwera plików (zobacz http://docs.puppetlabs.com/guides/file_serving.html), w tym przypadku nie mogę myśleć, Vagrant, czy nie, ale można dodać do serwera plików Puppet, aby to zrobić. Uważam, że jest to najlepszy (i być może jedyny) sposób na zrobienie tego.

1

Jeśli masz wiele Vagrant VM, możesz po prostu przechowywać pliki w swoim katalogu projektu Vagrant (zawierającym Twój VagrantFile). Ten katalog jest zwykle dostępny dla wszystkich maszyn wirtualnych jako/vagrant w VM podczas tworzenia.

Jeśli chcesz innych katalogów na komputerze, aby mieć dostęp do maszyn wirtualnych wystarczy dodać następujące wpisy do VagrantFile

# see http://docs.vagrantup.com/v1/docs/config/vm/share_folder.html 
config.vm.share_folder "v-packages", "/vagrant_packages", "../../dpkg" 

Następnie użyć plików w lalek można po prostu traktować je jako pliki lokalne do maszyny wirtualnej

# bad example, bub basically use 'source => 'file:///vagrant/foo/bar' 
file { '/opt/cassandra': 
    ensure => directory, 
    replace => true, 
    purge => true, 
    recurse => true, 
    source => 'file:///vagrant/conf/dist/apache-cassandra-1.2.0', 
} 

jest to prawdopodobnie jedyny mądry zrobić, jeśli tylko przy użyciu lokalnych przejawia lalkowe/modułów.

0

prawdopodobnie zbyt późno, aby pomóc bennylope, ale dla innych, którzy się w całej tej sprawie, jak już przedtem zastanawianie go dla siebie ...

Dołącz rzeczy jak to w swoim Vagrantfile ...

GUEST_PROVISIONER_CONFDIR = "/example/destination/path" 
HOST_PROVISIONER_CONFDIR = "/example/source/path" 
config.vm.synced_folder HOST_PROVISIONER_CONFIDIR, GUEST_PROVISIONER_CONFDIR 
puppet.options = "--fileserverconfig='#{GUEST_PROVISIONER_CONFDIR}/fileserver.conf'" 

Następnie upewnij się, że/example/source/path zawiera odniesiony plik fileserver.conf. Powinno to wyglądać mniej więcej tak ...

[foo] 
    path /example/destination/path 
    allow * 

Teraz zakładając Przykładem-plik.txt istnieje w/przykład/źródło/ścieżki dodaje będą pracować w swoich manifestach:

source => "puppet:///foo/example-file.txt", 

Patrz:

  1. Puppet configuration reference entry for fileserverconfig
  2. Serving Files From Custom Mount Points
Powiązane problemy