Je voudrais savoir comment mettre en place :datadir:
dans hiera.yaml
pour 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_path
c'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.yaml
contient 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.yaml
fichier 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.yaml
fichiers, un pour une utilisation avec vagabond et un pour une utilisation avec Puppet (en production)?