Ich würde gerne wissen , wie einzurichten :datadir:
in hiera.yaml
fü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_path
korrekt 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.yaml
enthä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.yaml
Datei 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.yaml
Dateien benötige , eine für die Verwendung mit Vagrant und eine für die Verwendung mit Puppet (in der Produktion)?