ในพ่อครัวฉันจะเข้าถึงแอตทริบิวต์ภายในไฟล์บทบาทได้อย่างไร


13

ฉันสามารถตั้งค่าแอตทริบิวต์ในไฟล์บทบาทเป็นเอกสารได้แต่ฉันไม่สามารถเข้าถึงแอตทริบิวต์ที่ตั้งค่าโดยตำราที่ฉันใช้อยู่

ตัวอย่างเช่นภายใน /roles/appserver.rb:

name "appserver"

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

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

สิ่งที่ฉันได้รับคือข้อยกเว้นที่ระบุโดยเชฟไม่สามารถหาวิธี / ตัวแปร 'node'

ขอบคุณ

คำตอบ:


12

คุณไม่สามารถ. บทบาทRuby DSLถูกแปลงจาก Ruby เป็น JSON เมื่อคุณอัพโหลดบทบาทไปยังเซิร์ฟเวอร์ด้วยมีด วัตถุโหนดไม่สามารถใช้งานได้เนื่องจากไม่ได้รับการประมวลผลในบริบทของการเรียกใช้ Chef

หากคุณต้องการรวมแอตทริบิวต์ของโหนดเข้าด้วยกันคุณควรทำเช่นนั้นในสูตรตัวอย่างเช่น:

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

0

คุณสามารถใช้จริงrequire_relative 'base_role_file'ในบทบาทและไฟล์ที่จำเป็นนี้อาจตั้งค่าตัวแปรส่วนกลางบางอย่างเพื่อให้คุณใช้ สวยแฮ็ค

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.