2016-01-19 1 views
0

J'essaie de définir une variable quelque part (probablement sous le fichier d'environnement) et l'utiliser/l'appeler dans ma recette afin que je puisse en obtenir la valeur, et si je change le fichier d'environnement (j'ai défini la même variable avec une valeur différente) alors je peux utiliser la même recette avec différentes valeurs de variables (définies sous environnement)appeler un chef variable/attributs dans la recette qui est définie sous le fichier environnement

quelqu'un peut-il m'aider à comprendre comment définir une variable/attributs dans un environnement puis comment l'appeler dans un fichier de recette

J'ai essayé de définir les attributs sous fichier d'environnement comme ci-dessous

"DB_IP":"xx.xx.xx.XX","BOX_NAME":"AIX2Wd4109", 

et a essayé d'appeler en recette ci-dessous

BOX_NAME = json['defaults']['BOX_NAME'] 
DB_IP = json['defaults']['DB_IP'] 

mais tout en exécutant la commande knife les valeurs ne sont pas ramasser, obtenir l'erreur comme ci-dessous

Chef Client failed. 0 resources updated in 5.975572324 seconds←[0m 
[2016-01-19T13:15:57+00:00] ERROR: uninitialized constant Chef::Recipe::BOX_NAME 
+0

Bienvenue sur stackoverflow. Ces variables sont appelées [attributs] (https://docs.chef.io/attributes.html). Vous pouvez y accéder dans une recette en utilisant 'node ['attribute_name']' ou 'node [: attribute_name]'. Votre fichier d'environnement ne ressemble pas à un fichier d'environnement. Je suggère de suivre [learn.chef.io] (https://learn.chef.io) pour commencer. – StephenKing

Répondre

0

Pour faire écho au commentaire ci-dessus qui est vraiment la réponse:

La façon d'accéder à ces attributs de noeud est node['DB_IP'] et node['BOX_NAME'].

Je suis également d'accord que vous devriez suivre le tutoriel de Learn Chef avant de continuer, il couvre les bases du travail avec Chef.