Packer: git-Hash-Funktion zur Benennung der resultierenden Datei

Erstellt am 1. Dez. 2014  ·  3Kommentare  ·  Quelle: hashicorp/packer

Ich passe derzeit meinen post_processor wie folgt an:

"output": "boxes/rhel-server-6.5-x64-{{.Provider}}-{{.BuildName}}_{{timestamp}}.box"

Es wäre schön, {{git_hash}} anstelle des Zeitstempels zu haben. Wenn es eine andere Möglichkeit gibt, dies zu tun, als einen Funktionsaufruf im Packer, dann bin ich wohl nicht vertraut genug, wie man das macht.

Ich sehe, wo dies getan werden könnte: packer/config_template.go.

Ich dachte, die meisten Leute würden das nützlich finden.

Beispiel: Wenn wir die gesamte Konfiguration unseres Puppet-Stacks wissen wollen, sollten wir auch wissen, auf welcher Packerbox jeder Knoten aufgebaut wurde, und der Zeitstempel gibt uns das nicht. Es ist eine gute Sache, es für Audits oder sogar die fiesesten Disaster-Recovery-Strategien zu haben.

Gedanken? Alternativen?

_bearbeiten_:

Es gibt auch den Anwendungsfall, Packer gegen einen schmutzigen Git-Baum auszuführen, bei dem der resultierende Hash nicht genau wäre. In diesem Fall möchten Sie wahrscheinlich, dass der Git-Hash 'dirty_tree' zurückgibt.

waiting-reply

Hilfreichster Kommentar

Hm. Ich denke, das Hinzufügen von Git-spezifischen Funktionen ist schwierig, da es die Tür für andere SCMs öffnet, bei denen wir möglicherweise nicht über das gleiche Maß an Fachwissen verfügen. Gibt es einen Grund, warum Sie dafür keine Benutzer-Variable verwenden können:

packer -var "git_sha=`git rev-parse HEAD`"

Und deklarieren Sie dann die Variable:

{
  "variables": {
    "git_sha": "none"
  }
}

{{git_hash}} geht von einigen Annahmen aus, die wichtigste davon ist, dass Sie Git installiert haben. Ich glaube nicht, dass alle unsere Benutzer Git verwenden, daher kann es schwierig sein, die richtige UX zu finden, wenn Git nicht installiert ist (machen wir einen Fehler, ersetzen sie durch eine leere Zeichenfolge usw.).

Alle 3 Kommentare

Hm. Ich denke, das Hinzufügen von Git-spezifischen Funktionen ist schwierig, da es die Tür für andere SCMs öffnet, bei denen wir möglicherweise nicht über das gleiche Maß an Fachwissen verfügen. Gibt es einen Grund, warum Sie dafür keine Benutzer-Variable verwenden können:

packer -var "git_sha=`git rev-parse HEAD`"

Und deklarieren Sie dann die Variable:

{
  "variables": {
    "git_sha": "none"
  }
}

{{git_hash}} geht von einigen Annahmen aus, die wichtigste davon ist, dass Sie Git installiert haben. Ich glaube nicht, dass alle unsere Benutzer Git verwenden, daher kann es schwierig sein, die richtige UX zu finden, wenn Git nicht installiert ist (machen wir einen Fehler, ersetzen sie durch eine leere Zeichenfolge usw.).

Stimmt mit @sethvargo überein

Ein weiterer kleiner Tipp für Leute, die dies lesen: Vielleicht möchten Sie das Argument --short für rev-parse verwenden:

packer -var "git_sha=`git rev-parse --short HEAD`"

um einen Wert wie 21feafa statt 21feafa9a86a45b3008d133f0803d2ac2087c63f zu erhalten.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen