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

Ophir Radnitz
sumber

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]}"
jtimberman
sumber
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.

brauliobo
sumber