2012-03-01 11 views
7

Estoy instalando un paquete de un módulo (Nginx en este caso específico) y me gustaría incluir un archivo de configuración desde fuera del módulo, es decir, desde un nivel superior files directorio paralelo al nivel superior manifests directorio. No veo ninguna forma de obtener el archivo aunque no lo incluya en un módulo o en mi entorno Vagrant actual, refiriéndome a la ruta local absoluta.Sourcing Puppet archivos desde fuera de los módulos

¿Puppet permite buscar archivos desde fuera de los módulos como se describe en la documentación?

Respuesta

3

si entiendo su pregunta correctamente, puede hacerlo. En el módulo de un código simple como esto

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

hará el trabajo. El /path/to/file se obtendrá de un archivo ubicado en el archivo "Puppet" compartido por Puppet. (en el ejemplo anterior, busca en 4 ubicaciones diferentes). actualización

tal vez usted está hablando de un directorio para almacenar archivos que no es compartida por la marioneta servidor de archivos (mira http://docs.puppetlabs.com/guides/file_serving.html), y en este caso no se puede pensar que, vagabundo o no, pero se puede añadir a tu Puppet fileserver para hacerlo. Creo que es la mejor (y tal vez única) forma de hacerlo.

1

Si tiene un número de VM Vagrant, puede simplemente almacenar archivos dentro del directorio de su proyecto Vagrant (que contiene su VagrantFile). Este directorio generalmente está disponible para todas las máquinas virtuales como/vagabundo dentro de la máquina virtual en la creación.

Si desea que otros directorios en el equipo para estar a disposición de sus máquinas virtuales sólo tiene que añadir lo siguiente a su VagrantFile

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

Luego de usar los archivos dentro de títere puede simplemente tratarlos como archivos locales a la máquina virtual

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

Esto es probablemente lo más inteligente si solo utiliza módulos/manifiestos locales de marionetas.

0

probablemente demasiado tarde para ayudar a bennylope, pero para otros que sucede a través de esta cuestión, como lo hacía antes averiguarlo por mí mismo ...

Incluir este tipo de cosas en su 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'" 

Luego asegúrese de que/example/source/path contenga el archivo referenciado fileserver.conf. Debe ser algo como ...

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

Ahora, suponiendo ejemplo- existe en archivo.txt/ejemplo/fuente/ruta, lo siguiente será trabajar en sus manifiestos:

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

Ver:

  1. Puppet configuration reference entry for fileserverconfig
  2. Serving Files From Custom Mount Points
Cuestiones relacionadas