2017-02-26 12 views
1

Wir haben manchmal Kochbücher, die in der Staging-Umgebung nicht vollständig getestet werden können, da das Ergebnis nicht immer widerspiegelt, was in der Produktionsumgebung passieren könnte. Als eine Lösung, was ich versuche, wie so die Version für die Umwelt zu tun ist, frieren:Testen eines Updates für ein Kochbuch auf einem einzigen Produktionsserver

{ 
    "name": "production", 
    "description": "Production Environment", 
    "cookbook_versions": { 
    "deployment": "= 0.1.12" 
    }, 
... 

und einen bestimmten Server für diese Beschränkung ausschließen, indem Sie die neue Version explizit in seiner Laufliste der Angabe wie folgt:

... 
    "run_list": [ 
    "recipe[base]", 
    "recipe[security]", 
    "recipe[deployment::[email protected]]" 
] 
... 

Problem ist, wenn die Version der Umwelt nicht das gleiche ist, dass, wie in dem run_list, Koch-Client angegeben auf resolving cookbooks for run list: ...

stecken bleibt, warum ist das so? Gibt es eine Möglichkeit, dies zu umgehen? Gibt es eine bessere Möglichkeit, ein Update für ein Rezept nur auf einem Server zu testen?

Antwort

2

Sie können eine vorhandene Abhängigkeit nicht überschreiben, daher müssen Sie diesen Knoten vorübergehend zu Testzwecken in eine neue Umgebung verschieben.

+0

Leider würde dies den Zweck zunichte machen, da sich einige Rezepte abhängig von der Umgebung des Knotens unterschiedlich verhalten, was bedeutet, dass der Test nicht widerspiegelt, was in der Produktion passieren wird. Außerdem glaube ich nicht, dass dies wahr ist, das scheint grundlegend genug zu sein, um von Design zu machen. Ich habe auch festgestellt, dass der Chef an der gleichen Stelle hängt, wenn er eine bestimmte Version in der Runlist verwendet, auch wenn es keine Einschränkung gibt. Es scheint, dass es nur ein Fehler ist. –

+0

Die Funktion wird nur selten benutzt, wenn wir sie testen, also kann ich ziemlich sicher sagen, dass es keinen (einfachen) Bug gibt. Selbst wenn dies der Fall wäre, würde es nicht mit einer Konfliktbedingung in der Umgebung funktionieren, da dieser Fehler korrekt ist und wie vorgesehen funktioniert. – coderanger

+0

Eine weitere Option ist die Deaktivierung von Daemon-Modus- oder Hintergrundkonvergen in der Produktion, die Aktualisierung der Umgebung und die Ausführung einer kanarischen Bereitstellung auf einigen Computern. – coderanger

Verwandte Themen