À l'aide d'attributs en Chef Solo JSON
Question
Est-il possible de spécifier des valeurs d'attribut dans le Chef de Solo JSON?J'ai un solo.json avec une liste en cours et je tiens à spécifier les attributs de là.Le Chef de la documentation semble indiquer qu'il devrait être possible pour moi de faire quelque chose comme:
{
"hostname": {
"test": "value2"
},
"default_attributes": {
"hostname": {
"test": "value3"
}
},
"override_attributes": {
"hostname": {
"test": "value4"
}
},
"default": {
"hostname": {
"test": "value5"
}
},
"run_list": [
"recipe[hostname::default]"
]
}
Cependant, chaque fois que j'essaie d'accéder à la valeur dans ma recette:
p node['hostname']['test']
Je viens d'obtenir la valeur définie dans les attributs par défaut.rb, et si je ne la définissez pas là, j'obtiens une valeur nulle en arrière.
Est-il un moyen de faire référence à ces valeurs?
La solution
Le seul niveau d'attributs que vous pouvez stocker dans le nœud de données est normal
, tout le reste est remis au début de l'convergent et reconstruite à partir des rôles, des environnements et des livres de cuisine.Vous voulez quelque chose comme ressemble à ceci:
{
"normal": {
"hostname": {
"test": "something"
}
},
"run_list": [
"recipe[hostname::default]"
]
}
Autres conseils
J'ai essayé en utilisant l'exemple ci-dessus pour la définition des attributs dans un fichier JSON pour le chef-solo, et le "normal": {...}
le bloc a été complètement ignorée.La liste de lancement a été lu, mais les attributs de ne jamais l'impression de travailler.
Ma commande est:
chef-solo -c /path/to/config_file.rb -j /path/to/file.json
Mon fichier JSON:
{
"name": "my_json_file",
"description": "JSON run-list and attributes.",
"normal": {
"my_cookbook": {
"git_branch": "staging"
}
},
"run_list": [
"recipe[my_cookbook::recipe1]",
"recipe[my_cookbook::recipe2]",
]
}
Au cours de l'converge, le Chef est allé directement aux valeurs par défaut à l'intérieur de attributes/default.rb
.Sont le JSON valeurs saisies correctement?Pour l'instant, ma seule solution a été de créer une nouvelle recette pour chaque "git_branch":
attribut je veux testé avec le chef-solo, et en ajoutant que la mise à jour de l'exécution de la liste vers un autre fichier JSON.Essentiellement, la copie de l'intégralité de la recette pour changer un seul node.normal['my_cookbook']['git_branch']
de la valeur.Inutile de dire que cela ne devrait pas être une solution.
À L'Aide De Chef 14.0.202
Suivi:
Pas de définition de l'attribut niveau de priorité, à l'intérieur du fichier JSON avec le Chef des oeuvres en Solo.Le JSON doit ressembler à ceci:
{
"name": "my_json_file",
"description": "JSON run-list and attributes.",
"my_cookbook": {
"git_branch": "staging"
},
"run_list": [
"recipe[my_cookbook::recipe1]",
"recipe[my_cookbook::recipe2]",
]
}
Non compris "normal": {...}
ou "default_attributes": {...}
, etc, va passer des attributs pour le chef-solo à utiliser.