Dans chef, comment accéder aux attributs dans les fichiers de rôles?


13

Je suis en mesure de définir les attributs dans les fichiers de rôle documenté mais je ne suis pas en mesure d'accéder aux attributs déjà défini par les livres de cuisine que j'utilise.

Par exemple, dans /roles/appserver.rb:

name "appserver"

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

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

Ce que j'obtiens est une exception indiquant que le chef ne peut pas trouver la méthode / variable 'node'.

Merci

Réponses:


12

Vous ne pouvez pas. Le rôle Ruby DSL est converti de Ruby en JSON lorsque vous téléchargez le rôle sur le serveur avec couteau. L'objet nœud n'est pas disponible, car il n'est pas traité dans le contexte d'une exécution Chef.

Si vous souhaitez combiner des attributs de noeud, vous devez le faire dans une recette, par exemple:

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

0

Vous pouvez réellement utiliser à l' require_relative 'base_role_file'intérieur d'un rôle et ce fichier requis peut définir certaines variables globales à utiliser. Assez hacky.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.