Mediante el uso de atributos en Chef Solo JSON
Pregunta
Es posible especificar valores de atributo en el Chef Solo, JSON?Tengo un solitario.json con una lista y me gustaría especificar los atributos de allí.El Chef de la documentación parece indicar que debería ser posible para mí para hacer algo como:
{
"hostname": {
"test": "value2"
},
"default_attributes": {
"hostname": {
"test": "value3"
}
},
"override_attributes": {
"hostname": {
"test": "value4"
}
},
"default": {
"hostname": {
"test": "value5"
}
},
"run_list": [
"recipe[hostname::default]"
]
}
Sin embargo, cada vez que intento acceder a el valor en mi receta:
p node['hostname']['test']
Acabo de obtener el valor definido en los atributos/default.rb, y si yo no lo definen allí, puedo obtener un valor nulo de la espalda.
Hay una forma de hacer referencia a estos valores?
Solución
El único nivel de atributos que puede almacenar en los datos del nodo es normal
, todo lo demás se restablece al inicio del converge y reconstruido de los roles, entornos y libros de cocina.Quieres algo como parece esto:
{
"normal": {
"hostname": {
"test": "something"
}
},
"run_list": [
"recipe[hostname::default]"
]
}
Otros consejos
He intentado utilizar el ejemplo anterior de los atributos de configuración en un archivo JSON para chef-solo, y el "normal": {...}
bloque fue completamente ignorado.La lista de ejecución fue leído, pero los atributos que parece que nunca a trabajar.
Mi mandamiento es:
chef-solo -c /path/to/config_file.rb -j /path/to/file.json
Mi archivo 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]",
]
}
Durante los converge, el Chef fue directamente de vuelta a los valores predeterminados en el interior de attributes/default.rb
.Son el JSON que los valores sean correctos?Hasta ahora, mi única solución ha sido crear una nueva receta para cada "git_branch":
atributo quiero probado con el chef-solo, y añadiendo que ejecutar actualizada de la lista a otro archivo JSON.Esencialmente, copiar toda una receta para cambiar una sola node.normal['my_cookbook']['git_branch']
valor.Huelga decir que esto no debería ser una solución.
El Uso De Chef 14.0.202
Seguimiento:
No se establece la prioridad de atributo en el archivo JSON con el Chef trabajos en Solitario.El JSON que debe ser similar a esta:
{
"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]",
]
}
No se incluye el "normal": {...}
o "default_attributes": {...}
, etc, va a pasar atributos para chef-solo para uso.