Frage

Ist es möglich, Attributwerte in Chef Solos JSON anzugeben?Ich habe ein Solo.json mit einer Ausführungsliste und ich möchte dort die Attribute angeben.Die Chef-Dokumentation scheint darauf hinzudeuten, dass es mir möglich sein sollte, so etwas zu tun:

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

Wann immer ich jedoch versuche, auf den Wert in meinem Rezept zuzugreifen:

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

Ich bekomme nur den in attributes / default definierten Wert.rb, und wenn ich es dort nicht definiere, bekomme ich einen Nullwert zurück.

Gibt es eine Möglichkeit, auf diese Werte zu verweisen?

War es hilfreich?

Lösung

Die einzige Ebene von Attributen, die Sie in den Knotendaten speichern können, ist normal, wird alles andere zu Beginn der Konvergenz zurückgesetzt und aus Rollen, Umgebungen und Rezeptbüchern neu erstellt.Du willst so etwas wie das sieht so aus:

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

Andere Tipps

Ich habe versucht, das obige Beispiel zum Festlegen von Attributen in einer JSON-Datei für Chef-Solo zu verwenden, und das "normal": {...} block wurde komplett ignoriert.Die Ausführungsliste wurde gelesen, aber Attribute scheinen nie zu funktionieren.

Mein Befehl ist:

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

Meine JSON-Datei:

{
  "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]",
  ]
}

Während der Konvergenzen kehrte Chef direkt zu den Standardwerten innerhalb von zurück attributes/default.rb.Werden die JSON-Werte korrekt eingegeben?Bisher bestand meine einzige Problemumgehung darin, für jeden ein neues Rezept zu erstellen "git_branch": attribut, das ich mit chef-Solo testen und diese aktualisierte Ausführungsliste einer anderen JSON-Datei hinzufügen möchte.Im Wesentlichen das Kopieren eines gesamten Rezepts, um ein einzelnes zu ändern node.normal['my_cookbook']['git_branch'] Wert.Unnötig zu sagen, dass dies keine Lösung sein sollte.

Verwenden von Chef 14.0.202

Folgemaßnahmen:

Das Festlegen der Attributprioritätsstufe in der JSON-Datei mit Chef Solo funktioniert nicht.Der JSON sollte ähnlich aussehen:

{
  "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]",
  ]
}

Nicht einschließlich der "normal": {...} oder "default_attributes": {...}, usw., übergibt Attribute, die Chef-Solo verwenden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top