Je voudrais savoir comment mettre en place :datadir:dans hiera.yamlpour une utilisation optimale avec des marionnettes et Vagrant. Actuellement, j'utilise vagrant 1.5.0 avec virtualbox 4.2 sur Ubuntu 13.10 avec un invité Ubuntu 12.04 exécutant la marionnette 3.1.1
J'essaie de mettre en place un environnement similaire à cet article de blog, Puppet Best Practices: Environment specific configs . Plus précisément, mon Vagrantfile contient:
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
Je peux confirmer que hiera_config_pathc'est correct, car j'obtiens une erreur si je supprime hiera.yaml.
puppet/hiera.yaml contient:
---
:backends: yaml
:yaml:
:datadir: "manifests/configuration"
:hierarchy:
- "%{::clientcert}"
- "%{::environment}"
- "virtual_%{::is_virtual}"
- common
:logger: console
Et puppet/manifests/configuration/common.yamlcontient en outre :
---
myvar: "test"
Tester cela depuis la ligne de commande:
$ hiera -c hiera.yaml myvar
test
Jusqu'ici tout va bien. Cependant, si j'essaie de tester cela à partir d'un fichier manifeste de marionnettes, la variable est introuvable et j'obtiens une erreur. Exemple de test:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
L'erreur est:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
Si je ssh dans ma machine via vagrant ssh, je peux voir que Vagrant monte mon répertoire manifeste dans / tmp / vagrant-puppet-2. Si je modifie le hiera.yamlfichier et le remplace :datadir:par le chemin complet /tmp/vagrant-puppet-2/manifests/configuration, mes manifestes Puppet peuvent accéder à mes données Hiera. Puis-je faire cela avec un chemin relatif, cependant?
hiera.yamlfichiers, un pour une utilisation avec vagabond et un pour une utilisation avec Puppet (en production)?