Saya ingin tahu cara mengatur :datadir:
di hiera.yaml
untuk penggunaan optimal dengan Wayang dan gelandangan. Saat ini saya menggunakan vagrant 1.5.0 dengan virtualbox 4.2 di Ubuntu 13.10 dengan tamu Ubuntu 12.04 menjalankan boneka 3.1.1
Saya mencoba membuat lingkungan yang mirip dengan posting blog ini, Puppet Best Practices: Konfigurasi khusus lingkungan . Secara khusus, Vagrantfile saya mengandung:
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
Saya dapat mengkonfirmasi bahwa hiera_config_path
itu benar, karena saya mendapatkan kesalahan jika saya menghapus hiera.yaml
.
puppet/hiera.yaml
mengandung:
---
:backends: yaml
:yaml:
:datadir: "manifests/configuration"
:hierarchy:
- "%{::clientcert}"
- "%{::environment}"
- "virtual_%{::is_virtual}"
- common
:logger: console
Dan selanjutnya, puppet/manifests/configuration/common.yaml
berisi:
---
myvar: "test"
Menguji ini dari commandline:
$ hiera -c hiera.yaml myvar
test
Sejauh ini baik. Namun, jika saya mencoba untuk menguji ini dari dalam file manifes boneka, variabel tidak dapat ditemukan, dan saya mendapatkan kesalahan. Contoh uji:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
Kesalahannya adalah:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
Jika saya ssh ke mesin saya melalui vagrant ssh
, saya dapat melihat bahwa Vagrant me-mount direktori manifes saya di / tmp / vagrant-puppet-2. Jika saya mengedit hiera.yaml
file, dan mengganti :datadir:
dengan path lengkap /tmp/vagrant-puppet-2/manifests/configuration
, maka manifes Wayang saya dapat mengakses data Hiera saya. Bisakah saya melakukan ini dengan jalur relatif?
hiera.yaml
file, satu untuk digunakan dengan gelandangan, dan satu untuk digunakan dengan Wayang (dalam produksi)?The
hiera.yaml
aku bekerja dengan menspesifikasikan:datadir: /etc/puppet/hiera
dan saya tidak beruntung dengan pengaturan--yamldir
pilihan sebagai beberapa jawaban lain yang ditentukan. Namun, saya menyadari setelah beberapa saat bahwa saya bisa memetakan hieradata saya ke lokasi itu di guest vm:Ini bekerja dengan baik :-)
sumber
config.vm.synced_folder("D:/branches/preprod/hieradata", "/etc/puppet/hieradata")
dan juga ditentukanpuppet.hiera_config_path = "D:/branches/preprod/hiera.yaml"
dalam bait konfigurasi boneka.Inilah yang saya lakukan dalam percobaan boneka saya sendiri.
Hiera.yaml minimalis saya terlihat seperti ini:
Dan untuk tujuan ilustrasi, struktur direktori saya di host (MacBook) terlihat seperti ini:
sumber
Masalah awal Anda adalah / yang
:datadir
perlu menjadi jalur absolut. Hiera tidak memungkinkan Anda menentukan jalur relatif untuk:datadir
. Jika Anda merasa ini harus diizinkan, silakan ajukan permintaan untuk mengubahnya .manifestdir sudah usang . Anda mungkin lebih suka menggunakan yamldir saja. Anda dapat mengganti pengaturan itu saat Anda meloloskan boneka.
Untuk gelandangan:
PEMBARUAN : Karena Anda perlu memberikan jalur absolut (dan karena gelandangan), Anda harus menyiapkan folder bersama Anda sendiri sehingga Anda dapat secara eksplisit tentang di mana itu dan tidak membuat asumsi pada jalur setel gelandangan untuk eksekusi boneka. Tambahkan ini ke Anda
Vagrantfile
:dan kemudian ubah baris pertama di atas ke:
sumber
config.vm.synced_folder "puppet/manifests/configuration", "/hieradata"
puppet apply
. Datadir akan relatif terhadap dir saat ini di mana Wayang dijalankan.