Cómo obtener un archivo en el manifiesto de marionetas desde el módulo

Estoy tratando de obtener archivos de módulos locales en un manifiesto de marionetas (usando marionetas en modo independiente):

file {
  '/home/repowt/.crontab':
    ensure => present,
    source => 'puppet:///modules/site/crontab';
}

pero obtengo:

Could not evaluate: Could not retrieve information from source(s) ...

El archivo está en:

config/puppet/modules/site/files/crontab

(la marioneta se llama vía vagrant provision y Vagrantfile especifica module_path = 'config / puppet / modules' y está claramente bien ya que puppet carga módulos con importación desde allí).

También probé:

source => 'puppet:///site/crontab'
source => 'site/crontab'
source => 'config/puppet/modules/site/files/crontab'
source => '/modules/site/crontab'

inútil. No encontré nada esclarecedor en la web, parece algo muy simple. tu ayuda es apreciada.

preguntado el 27 de agosto de 11 a las 18:08

5 Respuestas

Hay un par de cosas que suceden aquí.

Primero, como señala pwan, el fileserver.conf debe configurarse correctamente.

Teniendo en cuenta que /vagrant contiene el directorio donde Vagrantfile es (y por lo tanto todo su contenido), eso significaba para mí hacer:

vm_config.vm.provision :puppet, :module_path => "modules", :options => ["--fileserverconfig=/vagrant/fileserver.conf", ]

My fileserver.conf especifica que /etc/puppet/files se va a utilizar.

Si bien podría haber especificado una fileserver.conf, solo para Vagrant, quería que casi todo fuera igual a lo normal.

Entonces, también monté /etc/puppet/files también, con

vm_config.vm.share_folder "files", "/etc/puppet/files", "files"

Lo que hizo que las cosas funcionen para mí.

contestado el 05 de mayo de 12 a las 20:05

Además, esto probablemente también podría estar etiquetado con vagabundo - Akumria

Documentos para vm.share_folder: vagrantup.com/v1/docs/config/vm/share_folder.html - Henrik

mejor tarde que nunca aceptar. Abandoné esta pero buena respuesta. - Viktor Trón

Porque los enlaces simbólicos no siempre funcionan por lo tanto, no pude establecer el enlace simbólico de 'archivos' en mi combinación VagrantBox-OS-Virtualizer. Debido a esto, nunca pude acceder a cosas desde puppet:/// sendero - Tushar Goswami

puppet:///modules/my_module/file debe coincidir %vagrant_root%/modules/my_module/files/file

Respondido 26 Oct 12, 03:10

Este comentario me ayudó a solucionar mi problema. Gracias - khustochka

Noté que Vagrant montó una copia de su directorio en la VM de destino (estoy usando base http://dl.dropbox.com/u/15307300/vagrant-0.7-centos-64-base.box); haz un "montaje" y mira si tienes esto también.

Esto me permite crear un directorio dentro de mi Vagrant, paralelo a los manifiestos / que llamo "archivos /". Luego coloco mi archivo fuente de configuración allí, por ejemplo, ... / myvagrantproject / files / slapd.conf. Esto aparece en la VM como /vagrant/files/slapd.conf

Luego, en el manifiesto de marionetas para la fuente del archivo, enumero la fuente como una ruta de archivo absoluta, no una ruta de servidor de marionetas, como:

file { 'slapd.conf':
  name          => '/etc/openldap/slapd.conf',
  ensure        => present,
  source        => '/vagrant/files/slapd.conf',
  owner         => root,
  group         => ldap,
  mode          => 0640,
  require       => Package["ldapservers"],
}

No encontró ningún problema en su propio sistema de archivos remoto montado en vbox.

Respondido el 07 de Septiembre de 13 a las 02:09

sí, gracias, pensé en esto, pero es trampa. Quiero obtenerlo de un módulo en el fs desde el que llamo vagrant. - Viktor Trón

Su puppet: // modules / site / crontab original debería funcionar.

Sospecho que fileserver.conf en su puppetmaster puede no tener una sección de módulos. Intente agregar algo como a continuación si aún no está presente.

[modules]
    allow *

Consulte la sección "Búsqueda de módulos" en http://docs.puppetlabs.com/guides/modules.html

Respondido el 29 de Septiembre de 11 a las 01:09

También consulte los documentos para fileserver.conf docs.puppetlabs.com/guides/file_serving.html - Henrik

No queda claro en su descripción si está utilizando la marioneta en modo autónomo o en modo cliente-servidor. Suponiendo que está usando el modo independiente, verifique dos veces en su carpeta / tmp en su vm para ver si la carpeta del módulo está realmente allí y vagrant la ha montado. El hecho de que pueda cargar el manifiesto no significa que los módulos también estén allí.

Su configuración original parece correcta.

Respondido 14 Feb 12, 02:02

independiente sí. editó mi publicación. Incluso si está en tmp o montado en otro lugar, el hecho es que el títere en la máquina virtual no lo encuentra. Realmente me pregunto cómo puede suceder esto, quiero decir, si esta no es la característica más básica para colocar archivos de aquí para allá .... grr - Viktor Trón

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.