2012-03-01 11 views
7

Sto installando un pacchetto da un modulo (Nginx in questo caso specifico) e vorrei includere un file di configurazione dall'esterno del modulo, ovvero da una directory di livello superiore files parallela al directory di livello superiore manifests. Non vedo alcun modo di trovare il file senza includerlo in un modulo o nel mio attuale ambiente Vagrant che si riferisce al percorso locale assoluto.Sourcing di file Puppet dall'esterno dei moduli

Puppet consente l'acquisizione di file dall'esterno dei moduli come descritto nella documentazione?

risposta

3

se ho capito bene la tua domanda, puoi farlo. Nel modulo un semplice codice come questo

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", 
    ], 
} 

farà il lavoro. Lo /path/to/file verrà originato utilizzando un file che si trova nella condivisione "files" di Puppet. (nell'esempio sopra, cerca in 4 posizioni diverse).

aggiornamento forse si sta parlando di una directory per memorizzare i file che non è condivisa da Puppet fileserver (guarda http://docs.puppetlabs.com/guides/file_serving.html), e in questo caso non si può a mio avviso, Vagrant o no, ma è possibile aggiungere per farlo funzionare sul tuo fileserver Puppet. Penso che sia il modo migliore (e forse solo) per farlo.

1

Se si dispone di un numero di VM Vagrant, è possibile archiviare semplicemente i file all'interno della directory del progetto Vagrant (contenente VagrantFile). Questa directory è solitamente disponibile per tutte le macchine virtuali come/vagrant all'interno della VM alla creazione.

Se si desidera altre directory sul computer di essere a disposizione per la vostra VM basta aggiungere il seguente al vostro VagrantFile

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

Quindi per utilizzare i file all'interno di marionette si può semplicemente trattarli come file locali al VM

# 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', 
} 

Questo è probabilmente solo saggio da fare se si utilizzano solo manifesti/moduli puppet locali.

0

Probabilmente troppo tardi per aiutare bennylope, ma per gli altri che accada in tutta questa domanda, come ho fatto prima di capire che fuori per me ...

Includere roba come questo nel tuo 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'" 

Quindi assicurarsi che/example/source/path contenga il file fileserver.conf di riferimento. Esso dovrebbe essere simile ...

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

Ora, assumendo ad esempio-file.txt esiste in/es/source/percorso, il seguente lavorerà nei vostri manifesti:

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

See:

  1. Puppet configuration reference entry for fileserverconfig
  2. Serving Files From Custom Mount Points
Problemi correlati