En chef, ¿cómo accedo a los atributos dentro de los archivos de roles?


13

Puedo establecer atributos en los archivos de roles tal como se documenta, pero no puedo acceder a los atributos ya establecidos por los libros de cocina que estoy usando.

Por ejemplo dentro de /roles/appserver.rb:

name "appserver"

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

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

Lo que obtengo es una excepción que indica que el chef no puede encontrar el método / variable 'nodo'.

Gracias

Respuestas:


12

No puedes. El rol Ruby DSL se convierte de Ruby a JSON cuando carga el rol al servidor con un cuchillo. El objeto de nodo no está disponible, ya que no se procesa en el contexto de una ejecución de Chef.

Si desea combinar atributos de nodo, en su lugar, debe hacerlo en una receta, por ejemplo:

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

0

Realmente puede usar require_relative 'base_role_file'dentro de un rol y este archivo requerido puede establecer algunas variables globales para su uso. Bastante hacky.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.