Bisakah Vagrant menunjuk ke direktori Puppet bermanifestasi untuk dieksekusi?

9

Saya menggunakan Vagrant untuk melompat memulai beberapa konfigurasi Wayang awal dan saya bingung tentang cara memasukkan / menjalankan beberapa manifes (selain hanya site.pp) dalam alur kerja eksekusi boneka tanpa membuat manifes tambahan ke dalam modul dan memasukkannya dengan cara itu.

Dalam direktori manifes boneka yang saya arahkan ke Vagrant (lihat di bawah) saya memiliki dua manifes yang ingin saya jalankan: site.pp dan hierasetup.pp.

config.vm.provision "puppet" do |puppet|
  puppet.manifests_path = "puppet_files/manifests"
  puppet.module_path    = "puppet_files/modules"
  puppet.manifest_file  = "site.pp"
  puppet.options = "--verbose --debug"
end 

Saat ini saya memiliki site.pp menjadi manifes yang memanggil hierasetup.pp. Site.pp saya terlihat seperti ini:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss

Tapi saya mendapatkan kesalahan ini tentang penghentian "impor":

Peringatan: Penggunaan 'impor' tidak digunakan lagi di /tmp/vagrant-puppet-1/manifests/site.pp:33. Lihat http://links.puppetlabs.com/puppet-import-deprecation (di grammar.ra: 610: di `_reduce_190 ')

Menurut URL yang direferensikan di bawah "Hal yang harus dicoba" itu mengatakan " Untuk menjaga definisi simpul Anda dalam file yang terpisah, tentukan direktori sebagai manifes utama Anda ".

Lebih lanjut, dokumentasi boneka ini pada manifes utama mengatakan:

" Direkomendasikan: Jika Anda menggunakan manifes utama dan bukannya mengandalkan ENC, pertimbangkan untuk mengubah pengaturan manifes menjadi $ confdir / manifes. Ini memungkinkan Anda membagi kode tingkat atas menjadi beberapa file sekaligus menghindari kata kunci impor. Ini juga akan cocok dengan perilaku lingkungan yang sederhana. "

Tampaknya Puppet dapat mereferensikan seluruh direktori alih-alih hanya file manifes tertentu, sehingga saya berharap bahwa Vagrant akan membuat ketentuan untuk ini dan memungkinkan saya untuk menghapus baris " puppet.manifest_file =" site.pp "dan arahkan ke direktori induk sebagai gantinya di mana semua file * .pp di sana akan dieksekusi. Namun menghapus baris di Vagrant hanya menghasilkan keluhan tentang "default.pp" yang diharapkan sebagai gantinya:

pembayar boneka: * Manifes wayang yang dikonfigurasi tidak ada. Silakan tentukan jalur ke manifes yang ada: /some/path/puppet_files/manifests/default.pp

Begitu:

  1. Pertama, apakah saya memahami cara "baru" (non-impor) untuk memanggil banyak manifes dengan benar, dalam hal ini direktori harus diarahkan ke mana semua file * .pp di dalamnya akan dieksekusi?
  2. Dan kedua, sudahkah Vagrant "menyusul" perubahan baru ini untuk mengakomodasi referensi direktori sehubungan dengan penghilangan Wayang atas "impor"?

Pembaruan: Terima kasih kepada Shane, masalah dengan # 2 (kode Vagrant tidak ditangkap untuk memungkinkan menunjuk ke direktori manifes boneka) dilaporkan di situs pelacak masalah GitHub Vagrant dan sejak itu telah ditambal: https://github.com/mitchellh/vagrant / issues / 4169

SeligkeitIstInGott
sumber

Jawaban:

6

Pertama, apakah saya memahami cara "baru" (non-impor) untuk memanggil banyak manifes dengan benar, dalam hal ini direktori harus diarahkan ke mana semua file * .pp di dalamnya akan dieksekusi?

Ya, benar. Lihat di sini :

Jika Anda sering menggunakan manifes utama daripada mengandalkan ENC, coba ubah pengaturan manifes menjadi $ confdir / manifes. Ini memungkinkan Anda membagi kode tingkat atas menjadi beberapa file sekaligus menghindari kata kunci impor.

Selain itu, manifestdan modulepathsemakin ditinggalkan karena mendukung lingkungan direktori dan perilaku direktori manifes, lihat di sini :

Sekarang setelah lingkungan direktori selesai, lingkungan file konfigurasi sudah tidak digunakan lagi. Mendefinisikan blok lingkungan di puppet.conf akan menyebabkan peringatan penghentian, seperti halnya penggunaan modulepath, manifest, dan pengaturan config_version di puppet.conf.

Ini adalah perubahan yang cukup besar untuk banyak penempatan, tetapi harus menjadi perbaikan yang baik dalam jangka panjang.


Dan kedua, sudahkah Vagrant "menyusul" perubahan baru ini untuk mengakomodasi referensi direktori sehubungan dengan penghilangan Wayang atas "impor"?

Tidak, belum; dari dokumen mereka:

manifest_file (string) - Nama file manifes yang akan berfungsi sebagai titik masuk untuk menjalankan Wayang. File manifes ini diharapkan ada di manifests_path yang dikonfigurasi

Untuk digunakan dengan Vagrant, Anda terjebak dengan berurusan dengan peringatan penghinaan untuk saat ini, yang sangat disayangkan. Tapi, impor tidak dijadwalkan untuk dihapus sampai 4.x, jadi ini memberi Vagrant waktu untuk mengejar ketinggalan.

Shane Madden
sumber
Yah, senang mengetahui bahwa saya tidak menjadi gila karena saya sudah mencoba mencari tahu apa kesepakatannya selama lebih dari satu jam sekarang. Apakah pengembang Vagrant mengetahui perlunya fitur itu, atau jika tidak ada tempat untuk menyarankan penambahan seperti itu?
SeligkeitIstInGott
Sepertinya itu belum diminta dari mereka - lihat di sini . Letakkan masalah di sana untuk menyelaraskannya dengan boneka modern (atau saya akan melakukannya jika Anda tidak memiliki akun github)!
Shane Madden
Saya pikir rekan kerja pengembangan saya semua memiliki akun github, tetapi jika saya memilikinya, saya bahkan tidak tahu seperti apa login saya nantinya. Saya tidak memerlukannya karena saya IT dan bukan pembuat kode. Maukah Anda melakukannya dengan sangat buruk?
SeligkeitIstInGott
1
@ SeligkeitIstInGott Tentu saja, saya akan mendapatkan sesuatu yang diajukan!
Shane Madden
2
@SeligkeitIstInGott Selesai - github.com/mitchellh/vagrant/issues/4039
Shane Madden