Me gustaría saber cómo configurar :datadir:
en hiera.yaml
para un uso óptimo con la marioneta y el vagabundo. Actualmente estoy usando vagrant 1.5.0 con virtualbox 4.2 en Ubuntu 13.10 con un invitado Ubuntu 12.04 ejecutando puppet 3.1.1
Estoy tratando de configurar un entorno similar a esta publicación de blog, Mejores prácticas de Puppet: configuraciones específicas del entorno . Específicamente, mi Vagrantfile contiene:
config.vm.define "servername" do |servername|
servername.vm.box = "precise-puppet-3"
servername.vm.network "private_network", ip: "192.168.213.2",
virtualbox__intnet: "networkname"
# Provision with puppet.
servername.vm.provision :puppet do |puppet|
puppet.hiera_config_path = "puppet/hiera.yaml"
puppet.manifests_path = "puppet/manifests"
puppet.module_path = "puppet/modules"
puppet.manifest_file = "servername.pp"
puppet.facter = {
"vagrant" => "1",
"server" => "servername",
}
end
end
Puedo confirmar que hiera_config_path
es correcto, porque recibo un error si lo borro hiera.yaml
.
puppet/hiera.yaml
contiene:
---
:backends: yaml
:yaml:
:datadir: "manifests/configuration"
:hierarchy:
- "%{::clientcert}"
- "%{::environment}"
- "virtual_%{::is_virtual}"
- common
:logger: console
Y, además, puppet/manifests/configuration/common.yaml
contiene:
---
myvar: "test"
Probar esto desde la línea de comandos:
$ hiera -c hiera.yaml myvar
test
Hasta ahora tan bueno. Sin embargo, si trato de probar esto desde un archivo de manifiesto de la marioneta, no se puede encontrar la variable y aparece un error. Prueba de ejemplo:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
El error es:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
Si accedo a mi máquina mediante vagrant ssh
, puedo ver que Vagrant está montando mi directorio de manifiesto en / tmp / vagrant-puppet-2. Si edito el hiera.yaml
archivo y lo reemplazo :datadir:
con la ruta completa /tmp/vagrant-puppet-2/manifests/configuration
, mis manifiestos de Puppet pueden acceder a mis datos de Hiera. Sin embargo, ¿puedo hacer esto con una ruta relativa?
hiera.yaml
archivos, uno para usar con vagabundo y otro para usar con Puppet (en producción)?El
hiera.yaml
que estoy trabajando especifica:datadir: /etc/puppet/hiera
y no tuve suerte con la configuración de la--yamldir
opción como algunas de las otras respuestas especificadas. Sin embargo, me di cuenta después de un tiempo que podía asignar mi hieradata a esa ubicación en el vm invitado:Esto funciona muy bien :-)
fuente
config.vm.synced_folder("D:/branches/preprod/hieradata", "/etc/puppet/hieradata")
y también especifiquépuppet.hiera_config_path = "D:/branches/preprod/hiera.yaml"
en las estrofas de configuración de títeres.Esto es lo que estoy haciendo en mis propios experimentos con títeres.
Mi minimalista hiera.yaml se ve así:
Y con fines ilustrativos, la estructura de mi directorio en el host (MacBook) se ve así:
fuente
Su problema original era / es que
:datadir
debe ser un camino absoluto. Hiera no le permite especificar rutas relativas para:datadir
. Si cree que esto debería permitirse, envíe una solicitud para cambiarlo .manifestdir está en desuso . Es posible que prefiera usar yamldir en su lugar. Puede anular esa configuración cuando pasa la aplicación de marionetas.
Para vagabundo:
ACTUALIZACIÓN : dado que debe proporcionar una ruta absoluta (y porque es vagabundo), debe configurar su propia carpeta compartida para que pueda ser explícito sobre dónde está y no hacer suposiciones en una ruta de conjunto vagabundo para la ejecución de títeres. Agregue esto a su
Vagrantfile
:y luego cambie la primera línea de arriba a:
fuente
config.vm.synced_folder "puppet/manifests/configuration", "/hieradata"
puppet apply
. El datadir será relativo al directorio actual donde se ejecutó Puppet.