Quelle est la bonne façon de vérifier l'existence d'un ensemble d'attribut en Chef?
Il y a plusieurs façons de vérifier l'existence d'un ensemble d'attribut en chef, et je ne suis pas sûr de ce qui est correct/le meilleur, et si tout va entraîner des attributs vides stockés sur le nœud:
node[:parent] and node[:parent][:child]
node.attribute?(:parent) and node[:parent].attribute?(:child))
node[:parent].nil? and node[:parent][:child].nil?
Il avait préféré de beaucoup pour être en mesure de vérifier pour le parent et l'enfant en même temps, mais je ne sais pas si c'est possible. Je suis avec le Chef de 10, pas de Chef 11, bien que les réponses à expliquer sont les bienvenus.
OriginalL'auteur borntyping | 2013-09-24
Vous devez vous connecter pour publier un commentaire.
Nœud attribut de l'objet est HashMap. Vous pouvez utiliser ruby API native de recherche imbriquée attributs.
Chef Nœud Objet fournit un certain nombre de méthodes d'assistance comme:
Il y a aussi une nouvelle méthode
node.debug_value()
en chef 11 pour vous aider à déboguer des attributs de nœud qui est également utile:De détails peuvent être trouvés à partir de l'article Chef 11 En Profondeur: Les Attributs De Changements
OriginalL'auteur shawnzhu
La façon dont je l'ai résolu ce, plus récemment, a été de toujours définir des valeurs par défaut pour les attributs utilisés dans un livre de cuisine où c'est possible.
Par exemple,
cookbook/attributes/default.rb
contient:Et la dans la recette, à toute vérification pour les attributs de la valeur peut être réduite à:
Bien sûr, il est généralement beaucoup plus utile d'avoir un produit de valeur par défaut et de ne pas avoir à vérifier à tous.
OriginalL'auteur borntyping
Découvrez le chef-sucre livre de cuisine
deep_fetch
extension qui permet pour la sécurité des références à une profonde attributs.OriginalL'auteur Jason Martin