Domanda

È possibile specificare i valori degli attributi nello chef Solo's JSON?Ho un solista.json con una lista di esecuzione e vorrei specificare gli attributi lì.La documentazione del cuoco unico sembra indicare che dovrebbe essere possibile per me fare qualcosa come:

{
    "hostname": {
        "test": "value2"
    },
    "default_attributes": {
        "hostname": {
            "test": "value3"
        }
    },
    "override_attributes": {
        "hostname": {
            "test": "value4"
        }
    },
    "default": {
        "hostname": {
            "test": "value5"
        }
    },
    "run_list": [
        "recipe[hostname::default]"
    ]
}
.

Tuttavia, ogni volta che provo ad accedere al valore nella mia ricetta:

p node['hostname']['test']
.

Ottenere il valore definito in Attributi / Default.rb, e se non lo definisco lì, ottengo un valore NIL indietro.

C'è un modo per fare riferimento a questi valori?

È stato utile?

Soluzione

L'unico livello di attributi che è possibile memorizzare nei dati del nodo è normal, tutto il resto viene ripristinato all'inizio della convergenza e ricostruita da ruoli, ambienti e libri di cucina.Vuoi qualcosa di simile a questo:

{
  "normal": {
    "hostname": {
      "test": "something"
    }
  },
  "run_list": [
    "recipe[hostname::default]"
  ]
}
.

Altri suggerimenti

Ho provato a utilizzare l'esempio sopra per impostare gli attributi in un file JSON per lo chef-Solo, e il blocco "normal": {...} è stato completamente ignorato.L'elenco di esecuzione è stato letto, ma gli attributi non sembrano mai funzionare.

Il mio comando è:

chef-solo -c /path/to/config_file.rb -j /path/to/file.json
.

Il mio file 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 i converge, lo chef è andato dritto ai valori predefiniti all'interno del attributes/default.rb.I valori JSON sono inseriti correttamente?Finora, la mia unica soluzione alternativa è stata quella di creare una nuova ricetta per ogni attributo "git_branch": che voglio testato con Chef-Solo e aggiungendo quella lista di esecuzione aggiornata a un diverso file JSON.Essenzialmente, copiando un'intera ricetta per modificare un singolo valore node.normal['my_cookbook']['git_branch'].Inutile dire che questa non dovrebbe essere una soluzione.

Utilizzo chef 14.0.202

Follow up:

Non impostare il livello di precedenza dell'attributo all'interno del file JSON con i lavori Solo Chef.Il JSON dovrebbe sembrare simile a questo:

{
  "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 incluso il "normal": {...} o "default_attributes": {...}, ecc., passerà gli attributi per lo chef-solato da utilizzare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top