Chciałbym wiedzieć, jak skonfigurować :datadir:
w hiera.yaml
celu optymalnego wykorzystania z Lalki i Vagrant. Obecnie używam vagrant 1.5.0 z virtualbox 4.2 na Ubuntu 13.10 z gościem Ubuntu 12.04 z marionetką 3.1.1
Próbuję skonfigurować środowisko podobne do tego postu na blogu, Puppet Best Practices: Specyficzne dla środowiska konfiguracje . W szczególności mój plik Vagrantfile zawiera:
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
Mogę potwierdzić, że hiera_config_path
jest poprawny, ponieważ po usunięciu pojawia się błąd hiera.yaml
.
puppet/hiera.yaml
zawiera:
---
:backends: yaml
:yaml:
:datadir: "manifests/configuration"
:hierarchy:
- "%{::clientcert}"
- "%{::environment}"
- "virtual_%{::is_virtual}"
- common
:logger: console
Ponadto puppet/manifests/configuration/common.yaml
zawiera:
---
myvar: "test"
Testowanie tego z wiersza poleceń:
$ hiera -c hiera.yaml myvar
test
Na razie w porządku. Jeśli jednak spróbuję to przetestować z poziomu pliku manifestu lalek, zmiennej nie można znaleźć i pojawia się błąd. Przykładowy test:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
Błąd jest następujący:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
Jeśli ssh do mojej maszyny za pośrednictwem vagrant ssh
, widzę, że Vagrant instaluje mój katalog manifestu w / tmp / vagrant-puppet-2. Jeśli zmienię hiera.yaml
plik i zastąpię :datadir:
pełną ścieżką /tmp/vagrant-puppet-2/manifests/configuration
, moje manifesty Marionetkowe będą miały dostęp do moich danych Hiera. Czy mogę to zrobić za pomocą ścieżki względnej?
hiera.yaml
plików, jednego do użycia z włóczęgą, a drugiego do użycia z Puppet (w produkcji)?hiera.yaml
Pracuję z Określa,:datadir: /etc/puppet/hiera
a ja nie miałem szczęścia do ustawiania--yamldir
opcji, jak niektóre z innych odpowiedzi podanych. Jednak po chwili zdałem sobie sprawę, że mogę po prostu zmapować moje hieradata do tej lokalizacji w vm gościa:Działa to ładnie :-)
źródło
config.vm.synced_folder("D:/branches/preprod/hieradata", "/etc/puppet/hieradata")
a także określiłempuppet.hiera_config_path = "D:/branches/preprod/hiera.yaml"
w sekcjach konfiguracji lalek.To właśnie robię we własnych eksperymentach z marionetkami.
Mój minimalistyczny hiera.yaml wygląda następująco:
W celach ilustracyjnych moja struktura katalogów na hoście (MacBook) wygląda następująco:
źródło
Twoim pierwotnym problemem było / jest to, że
:datadir
musi to być ścieżka bezwzględna. Hiera nie pozwala na określenie ścieżek względnych dla:datadir
. Jeśli uważasz, że powinno to być dozwolone, prześlij prośbę o zmianę .manifestdir jest przestarzały . Zamiast tego możesz użyć yamldir . Możesz zastąpić to ustawienie, gdy przejdziesz zastosować marionetkę.
Dla włóczęgów:
AKTUALIZACJA : Ponieważ musisz podać ścieżkę bezwzględną (i dlatego, że włóczęga), powinieneś skonfigurować swój własny folder współdzielony, abyś mógł jasno określić, gdzie on jest, i nie przyjmować założeń na ścieżce ustawiania włóczęgi do wykonania marionetki. Dodaj to do
Vagrantfile
:a następnie zmień pierwszy wiersz powyżej na:
źródło
config.vm.synced_folder "puppet/manifests/configuration", "/hieradata"
puppet apply
. Datadir będzie względny do bieżącego katalogu, w którym uruchomiono Puppet.