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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top