¿Vagrant puede apuntar a un directorio de manifiestos de Puppet para su ejecución?

9

Estoy usando Vagrant para iniciar una configuración inicial de Puppet y estoy confundido sobre cómo incluir / ejecutar múltiples manifiestos (aparte de solo site.pp) en el flujo de trabajo de ejecución de Puppet sin convertir los manifiestos adicionales en módulos e incluirlos de esa manera.

En el directorio de manifiestos de títeres al que apunto Vagrant (ver más abajo) tengo dos manifiestos que quiero ejecutar: site.pp y hierasetup.pp.

config.vm.provision "puppet" do |puppet|
  puppet.manifests_path = "puppet_files/manifests"
  puppet.module_path    = "puppet_files/modules"
  puppet.manifest_file  = "site.pp"
  puppet.options = "--verbose --debug"
end 

Actualmente estoy teniendo site.pp como el manifiesto que llama hierasetup.pp. Mi site.pp se ve así:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss

Pero me sale este error acerca de la obsolescencia de "importar":

Advertencia: El uso de 'importar' está en desuso en /tmp/vagrant-puppet-1/manifests/site.pp:33. Ver http://links.puppetlabs.com/puppet-import-deprecation (en grammar.ra: 610: en `_reduce_190 ')

De acuerdo con la URL a la que se hace referencia en "Cosas para probar en su lugar", dice " Para mantener sus definiciones de nodo en archivos separados, especifique un directorio como su manifiesto principal ".

Además, este documento de títeres sobre los principales manifiestos dice:

" Recomendado: si está utilizando el manifiesto principal en lugar de confiar en una ENC, considere cambiar la configuración del manifiesto a $ confdir / manifiestos. Esto le permite dividir su código de nivel superior en varios archivos mientras evita la palabra clave de importación. también coincidirá con el comportamiento de entornos simples " .

Parece que Puppet puede hacer referencia a un directorio completo en lugar de solo un archivo de manifiesto específico, de modo que esperaría que Vagrant hiciera una provisión para esto y me permitiera colocar la línea " puppet.manifest_file =" site.pp "y señalar el directorio padre en su lugar en el que se ejecutarán todos los archivos * .pp. Sin embargo, eliminar esa línea en Vagrant simplemente genera una queja sobre un "default.pp" esperado en su lugar:

aprovisionador de marionetas: * Falta el manifiesto de marionetas configurado. Especifique una ruta a un manifiesto existente: /some/path/puppet_files/manifests/default.pp

Entonces:

  1. En primer lugar, ¿entiendo la forma "nueva" (no importada) de llamar a múltiples manifiestos correctamente, en el sentido de que se debe apuntar a un directorio en el que se ejecutarán todos los archivos * .pp dentro de él?
  2. Y en segundo lugar, ¿Vagrant se ha "puesto al día" con este nuevo cambio para acomodar la referencia de directorios junto con la depreciación de Puppet de "importación"?

Actualización: Gracias a Shane, el problema con el n. ° 2 (el código del vagabundo no se detecta para permitir señalar a los directorios de manifiesto de títeres) se informó en el sitio del rastreador de problemas GitHub de Vagrant y desde entonces se ha parcheado: https://github.com/mitchellh/vagrant / temas / 4169

SeligkeitIstInGott
fuente

Respuestas:

6

En primer lugar, ¿entiendo la forma "nueva" (no importada) de llamar a múltiples manifiestos correctamente, en el sentido de que se debe apuntar a un directorio en el que se ejecutarán todos los archivos * .pp dentro de él?

Si tu puedes. Mira aquí :

Si está utilizando el manifiesto principal en lugar de confiar en una ENC, considere cambiar la configuración del manifiesto a $ confdir / manifiestos. Esto le permite dividir su código de nivel superior en varios archivos mientras evita la palabra clave de importación.

Además, manifesty modulepathtambién están siendo obsoletos en favor de los entornos de directorio y el comportamiento del directorio de manifiesto, consulte aquí :

Ahora que los entornos de directorio se han completado, los entornos de archivos de configuración están en desuso. La definición de bloques de entorno en puppet.conf provocará una advertencia de desuso, al igual que cualquier uso de la configuración modulepath, manifest y config_version en puppet.conf.

Este es un cambio bastante grande para muchas implementaciones, pero debería ser una buena mejora a largo plazo.


Y en segundo lugar, ¿Vagrant se ha "puesto al día" con este nuevo cambio para acomodar la referencia de directorios junto con la depreciación de Puppet de "importación"?

No, no lo tiene; de sus documentos:

manifest_file (string): el nombre del archivo de manifiesto que servirá como punto de entrada para la ejecución de Puppet. Se espera que este archivo de manifiesto exista en el manifiesto_path configurado

Para usar con Vagrant, por ahora está atascado con las advertencias de desaprobación, lo cual es lamentable. Pero, la importación no está programada para su eliminación hasta 4.x, por lo que esto le da a Vagrant algo de tiempo para ponerse al día.

Shane Madden
fuente
Bueno, es bueno saber que no me estoy volviendo loco porque he estado tratando de averiguar cuál era el trato durante más de una hora. ¿Los desarrolladores de Vagrant son conscientes de la necesidad de esa función, o si no, hay un lugar para sugerir tales adiciones?
SeligkeitIstInGott
Parece que aún no se les ha pedido, ver aquí . ¡Coloque un problema allí para alinearlo mejor con la marioneta moderna (o lo haré si no tiene una cuenta de github)!
Shane Madden
Creo que mis compañeros de desarrollo tienen cuentas de github, pero si tengo una, ni siquiera sé cuál sería mi inicio de sesión. No necesito uno ya que soy TI y no soy codificador. ¿Te importaría terriblemente hacer eso?
SeligkeitIstInGott
1
@SeligkeitIstInGott ¡Claro, conseguiré algo archivado!
Shane Madden
2
@SeligkeitIstInGott Hecho - github.com/mitchellh/vagrant/issues/4039
Shane Madden