Di chef, bagaimana cara mengakses atribut dalam file peran?


13

Saya dapat mengatur atribut dalam file peran seperti yang didokumentasikan tetapi saya tidak dapat mengakses atribut yang sudah ditetapkan oleh buku masak yang saya gunakan.

Misalnya dalam /roles/appserver.rb:

name "appserver"

run_list(%w{
  recipe[tomcat::default]
})

default_attributes(
  :tomcat => {
    :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir]
  }
)

Apa yang saya dapatkan adalah pengecualian yang menyatakan chef tidak dapat menemukan metode / variabel 'simpul'.

Terima kasih

Jawaban:


12

Kamu tidak bisa. Peran Ruby DSL dikonversi dari Ruby ke JSON saat Anda mengunggah peran ke server dengan pisau. Objek simpul tidak tersedia, karena tidak diproses dalam konteks menjalankan Chef.

Jika Anda ingin menggabungkan atribut simpul, Anda harus melakukannya dalam sebuah resep, misalnya:

"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"

0

Anda sebenarnya dapat menggunakan require_relative 'base_role_file'di dalam peran dan file yang diperlukan ini dapat mengatur beberapa variabel global untuk Anda gunakan. Cukup berantakan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.