Ich würde gerne wissen , wie einzurichten :datadir:in hiera.yamlfür eine optimale Nutzung mit Puppet und Vagrant. Derzeit verwende ich Vagrant 1.5.0 mit Virtualbox 4.2 unter Ubuntu 13.10 mit einem Ubuntu 12.04-Gast, auf dem Puppet 3.1.1 ausgeführt wird
Ich versuche, eine Umgebung einzurichten, die diesem Blog-Beitrag " Puppet Best Practices: Umgebungsspezifische Konfigurationen" ähnelt . Insbesondere enthält meine Vagrant-Datei:
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
Ich kann bestätigen, dass das hiera_config_pathkorrekt ist, da beim Löschen eine Fehlermeldung angezeigt wird hiera.yaml.
puppet/hiera.yaml enthält:
---
:backends: yaml
:yaml:
:datadir: "manifests/configuration"
:hierarchy:
- "%{::clientcert}"
- "%{::environment}"
- "virtual_%{::is_virtual}"
- common
:logger: console
Und puppet/manifests/configuration/common.yamlenthält außerdem:
---
myvar: "test"
Testen Sie dies über die Befehlszeile:
$ hiera -c hiera.yaml myvar
test
So weit, ist es gut. Wenn ich jedoch versuche, dies aus einer Puppet-Manifestdatei heraus zu testen, kann die Variable nicht gefunden werden, und es wird eine Fehlermeldung angezeigt. Beispieltest:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
Der Fehler ist:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
Wenn ich über ssh in meinen Computer ssh vagrant ssh, kann ich sehen, dass Vagrant mein Manifest-Verzeichnis unter / tmp / vagrant-puppet-2 bereitstellt. Wenn ich die hiera.yamlDatei bearbeite und durch :datadir:den vollständigen Pfad ersetze /tmp/vagrant-puppet-2/manifests/configuration, können meine Puppet-Manifeste auf meine Hiera-Daten zugreifen. Kann ich dies jedoch mit einem relativen Pfad tun?
hiera.yamlDateien benötige , eine für die Verwendung mit Vagrant und eine für die Verwendung mit Puppet (in der Produktion)?