Wie beschleunige ich meinen Entwicklungszyklus für Marionettenmodule?

8

Ich suche nach Best Practices, um meine Produktivität beim Schreiben neuer Marionettenmodule zu steigern. Mein Workflow sieht jetzt so aus:

  1. Landstreicher hoch
  2. Machen Sie Änderungen / Korrekturen
  3. vagrant provision
  4. Fehler / Fehler finden, GOTO 2

Nachdem ich alle Fehler / Fehler durchgemacht habe, die ich mache:

  1. Landstreicher zerstören
  2. Landstreicher hoch
  3. Stellen Sie sicher, dass alles funktioniert
  4. Übernehmen Sie meine Änderungen

Das ist zu langsam ... wie kann ich diesen Workflow schneller machen?
Ich leugne das Schreiben von Tests für Puppen. Was sind meine anderen Optionen?

    
olore 07.02.2014, 01:17
quelle

2 Antworten

14
  • cache dein apt / yum-Repository auf deinem Host mit dem vagrant-cachier -Plugin
  • Verwenden Sie profile -evaltrace, um zu ermitteln, wo Sie die Zeit verlieren. Bereitstellung
  • Paketbasisverteilung verwenden :
    • zB: rvm install ruby-2.0.0 vs. a pre-compiled ruby package erstellt mit fpm
    • Vermeiden Sie den Ansatz "wget ​​the internet and compile"
    • Dies wird wahrscheinlich Ihre Bereitstellung mehr reproduzierbar und schneller machen.
  • Module nicht codieren
    • Versuche, etwas von der Schmiede / github / ... zu verwenden.
    • Beachten Sie, dass es gegen meinen vorherigen Ratschlag sein kann
  • Wenn dies eine Option ist, aktualisieren Sie Ihre puppet / ruby ​​ Version
  • iterieren und verhindern Sie die vollständige Bereitstellung
    • Landstreicher hoch
    • vagrant provision
    • Ändern Sie Manifest / Module
    • vagrant provision
    • Ändern Sie Manifest / Module
    • vagrant provision
    • Landstreicher zerstören
    • vagabund up
    • Starten Sie Serverspezifikation
  • Minimiert eingegebenen Befehl
    • Startbefehl, wenn Sie Ihre Dateien ändern
    • Sie können vielleicht guard einrichten, um lint / test / spec / provision beim Speichern von
    • zu starten
    • Sie können auch Benachrichtigungen von Gast an Host-Rechner mit vagrant-notify senden
  • test ohne tatsächlich Bereitstellung in vagrant
  • Testen Sie Ihre Bereitstellung anstelle einer manuellen Überprüfung
    • stop vagrant ssh -ing überprüft, ob der Dienst ausgeführt wird oder eine Konfiguration einen bestimmten Wert hat
    • Starten Sie Serverspezifikation
    • werfen Sie einen Blick auf Becher
  • Delegieren Sie den Test auf Ihrem bevorzugten ci-Server (jenkins, travis-ci, ...)
  • Wenn Sie ein wenig von der Puppe gelenkt werden ... werfen Sie einen Blick auf ansible
    • einfach einzurichten (kein Ruby zum Installieren / Kompilieren)
    • Sie können Teile des Materials auswählen, das mit Tags
    • ausgeführt werden soll
    • Sie können die Spielbücher über synchronisierte Ordner teilen und ansible in der Vagrant-Box lokal ausführen (keine librairian-Puppe zum Starten)

update : Nach der Diskussion mit @garethr sehen Sie sich seine letzten Präsentation über Wache.

    
mestachs 07.02.2014, 07:54
quelle
2

Ich empfehle Sprachpuppe . Es wird mit einem Befehlszeilenprogramm ( puppetresources ) geliefert, mit dem Kataloge auf Ihrem Computer berechnet und untersucht werden können. Es hat ein paar nützliche Funktionen, die nicht in Puppet gefunden werden können:

  • Es ist wirklich schnell (6-mal schneller in einem einzelnen Katalog, etwa 50 Mal in vielen Katalogen)
  • Es verfolgt, wo jede Ressource definiert wurde und was der "Klassenstapel" zu diesem Zeitpunkt war, was wirklich nützlich ist, wenn Sie doppelte Ressourcen haben
  • Es prüft automatisch, ob die Dateien existieren, auf die Sie verweisen
  • Es ist strenger als Puppet (bricht zB bei undefinierten Variablen ab)
  • Damit können Sie den Inhalt jeder Datei auf Standardausgabe ausgeben, was für die Entwicklung komplexer Vorlagen nützlich ist

Die einzige Einschränkung ist, dass es nur mit "modernen" Marionettenpraktiken funktioniert. Zum Beispiel ist require nicht implementiert. Es funktioniert auch nur unter Linux.

    
bartavelle 07.02.2014 06:31
quelle

Tags und Links