Best Practice zum Testen von Kochrezepten?

18

Mein Team hat eine große Anzahl von Kochbüchern erstellt. Ich habe mich gefragt, welche Methoden und Frameworks ich untersuchen soll, damit wir Tests erstellen können, um sicherzustellen, dass unsere Knoten ordnungsgemäß konfiguriert sind.

linusthe3rd
quelle
Klingt wie es auf cooking.se gehört;)
Mark Henderson
Für einen Moment dachte ich, Sie sprachen über Chef: de.wikipedia.org/wiki/Chef_%28programming_language%29
Janne Pikkarainen

Antworten:

7

Sie könnten (auch) Vagrant dafür untersuchen.
Ein Video zeigt, wie die Kombination aus Vagrant- und Chefkochbüchern verwendet wird. Und auf der Opscode-Site gibt es eine spezielle Seite für Vagrant und Chef (Update 23.01.2015: Seite ist verschwunden ...).

Henk
quelle
3

Es gibt das cucumber-chefRubinjuwel und ein kürzlich veröffentlichtes Buch, Nelson-Smith et al. - "Test-driven Infrastructure with Chef", das dieses Juwel nutzt - http://www.cucumber-chef.org/

Ich erinnere mich gerade daran von meiner Github-Beobachtungsliste: https://github.com/gregretkowski/vmth/

Das VMTH (Virtual Machine Test Harness) bietet einen Mechanismus zum Komponententest Ihrer Infrastrukturautomatisierung - Marionettenrichtlinien, Kochrezepte, Freigabeskripts usw. Es verwendet Funktionen moderner VM-Monitore (wie qemu), um den Systemstatus zu erfassen und anschließend zurückzusetzen diesen Zustand nach jedem Test, so dass eine Reihe von Tests in einer VM-Instanz in schneller Folge durchgeführt werden können

pfo
quelle
1

Es gibt eine Reihe von Optionen.

Opscode hat auf der Chef-Entwicklungs-Roadmap "No-Op" -Unterstützung, die beim Testen helfen wird. Wir argumentieren, dass "no-op" nicht unbedingt das tut, was Sie wollen, sondern den Wunsch nach der Funktion versteht.

jtimberman
quelle
1

Einige der Antworten hier scheinen ein bisschen alt zu sein. Für CI- und lokale Tests würde ich ein Test-Harness-Tool wie Test Kitchen einsetzen, das auch Vagrant unterstützt, wenn Sie das bereits verwendet haben.

Damit können Sie Ihre Coobkooks mit vielen Cloud- und Virtualisierungslösungen betreiben, die es heute gibt: EC2, Digital Ocean, Vagrant, Docker usw.

Es verfügt auch über Plugins, mit denen Sie eines der vielen heute verfügbaren Infrastruktur-Test-Tools ausführen können:

  • serverspec - Das beliebteste Test-Framework.
  • goss - YAML, einfache, in sich geschlossene Binärdatei, extrem schnell.
  • inspec - Betrachten Sie es als Serverspezifikation verbessert (geschrieben von den Chefs).
  • testinfra - Python-basiertes Server-Testframework.
Ahmed Elsabbahy
quelle
0

Nach meiner Erfahrung ist der einzige Weg, dies wirklich zu tun, eine Staging-Umgebung und sorgfältige Entwicklungspraktiken. Das Verspotten der tatsächlich zu erledigenden Arbeit ist unglaublich chaotisch und fragil, und CI-Testsuiten, die auf Commit oder Push ausgeführt werden, sind mit viel Aufwand zu schreiben und zu warten (obwohl Chefkoch darin wahrscheinlich viel besser ist als Puppet, was meine Haupterfahrung ist ), und nehmen Sie sich lächerlich viel Zeit zum Laufen.

BEARBEITEN

Kurz nachdem ich dies geschrieben hatte, wurde mir plötzlich klar, dass es eine Möglichkeit geben könnte, einigermaßen effiziente "Unit" -Tests von Chef / Puppet-Rezepten mit einem Union-Dateisystem und einer beträchtlichen Menge an Gerüsten durchzuführen. Allerdings kann ich dort nichts herausfinden, was schon jemand in diesem Bereich gemacht hat. Vielleicht habe ich gerade ein Projekt gefunden.

womble
quelle
Das Testen der Infrastruktur selbst ist unglaublich wichtig. Natürlich gibt es eine Reihe von Methoden, dh funktionale und nicht funktionale, die erforderlich sind, um dies etwas anders zu implementieren als Software-Methoden.