Packer: 結果のファイルに名前を付けるためのgit-hash関数

作成日 2014年12月01日  ·  3コメント  ·  ソース: hashicorp/packer

私は現在、post_processorを次のようにカスタマイズしています。

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

タイムスタンプの代わりに{{git_hash}}があると便利です。 パッカーでの関数呼び出し以外に、これを行う別の方法がある場合、私はそれを行う方法について十分に精通していないと思います。

これがどこで行われるかわかります:packer/config_template.go。

私はほとんどの人がこれが役に立つと思うだろうと思いました。

例:パペットスタックの構成全体を知りたい場合は、各ノードがどのパッカーボックスで構築されているかも知る必要がありますが、タイムスタンプではそれがわかりません。 監査のために、あるいは最も厄介な災害復旧戦略のために持っていることは良いことです。

考え? 代替案?

_編集_:

ダーティなgitツリーに対してpackerを実行するユースケースもあり、結果のハッシュは正確ではありません。 その場合、おそらくgitハッシュで「dirty_tree」を返す必要があります。

waiting-reply

最も参考になるコメント

うーん。 git固有の関数を追加すると、同じレベルの専門知識がない可能性がある他のSCMへの扉が開かれるため、注意が必要だと思います。 次のようにuser-varを使用できない理由はありますか?

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

そして、変数を宣言します。

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

{{git_hash}}はいくつかの仮定をしますが、最も重要なのはGitがインストールされていることです。 すべてのユーザーがGitを使用しているとは思わないので、gitがインストールされていないときに正しいUXを見つけるのは難しいかもしれません(エラーが発生したり、空の文字列に置き換えたりするなど)。

全てのコメント3件

うーん。 git固有の関数を追加すると、同じレベルの専門知識がない可能性がある他のSCMへの扉が開かれるため、注意が必要だと思います。 次のようにuser-varを使用できない理由はありますか?

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

そして、変数を宣言します。

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

{{git_hash}}はいくつかの仮定をしますが、最も重要なのはGitがインストールされていることです。 すべてのユーザーがGitを使用しているとは思わないので、gitがインストールされていないときに正しいUXを見つけるのは難しいかもしれません(エラーが発生したり、空の文字列に置き換えたりするなど)。

@sethvargoに同意しました

これを読んでいる人のためのもう1つの小さなヒント:rev-parseに--short引数を使用することをお勧めします。

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

21feafa9a86a45b3008d133f0803d2ac2087c63f 21feafaのような値を取得します。

このページは役に立ちましたか?
0 / 5 - 0 評価