2017-10-02 22 views
0

Les environnements sont parfaits pour remplacer le comportement par défaut et les databags sont excellents pour extraire des données des livres de recettes et les rendre aussi génériques que possible.Un environnement de chef peut-il être utilisé pour remplacer un article de sac de données?

J'ai un environnement json fichier par phase de développement: dev, qa, staging, et j'ai des sacs de données que je peux changer en fonction de l'environnement. Il me semble redondant de définir ces choses dans plus d'un répertoire, surtout parce que j'utilise le chef dans local mode.

Existe-t-il un moyen de définir des propriétés personnalisées dans le fichier json environnement chef? Si oui: comment puis-je y accéder dans les recettes?

note: Je suis déjà familier avec la propriété override_attributes de l'environnement json. Je me demande à propos de json personnalisé, comment y accéder, ou peut-être une meilleure solution?

Par exemple

{ 
    "name": "dev", 
    "default_attributes": {}, 
    "json_class": "Chef::Environment", 
    "my_custom_object" : {"key1":"value1", ...} 
    "chef_type": "environment" 
} 

Répondre

1

Non, vous ne pouvez pas faire cela. Le schéma sur les objets Chef est petit (c'est-à-dire juste quelles clés de niveau supérieur sont autorisées) mais fixe. Les seuls endroits où vous attachez des données arbitraires à un environnement sont des attributs de noeud ou (techniquement, mais probablement, ne le font pas) en tant que données codées dans la chaîne de description. Cela dit, les attributs de nœud font ce que vous décrivez, donc je ne suis pas tout à fait sûr pourquoi vous pensez que ce ne sont pas la solution (comme mon autre, supprimé réponse mentionné). J'ai vous avez des questions sur la façon d'utiliser les attributs de nœud Je voudrais poser cette question à la place ou demander sur Slack :)