Atualmente, personalizo meu post_processor assim:
"output": "boxes/rhel-server-6.5-x64-{{.Provider}}-{{.BuildName}}_{{timestamp}}.box"
Seria bom ter {{git_hash}} em vez de timestamp. Se houver outra maneira de fazer isso, além de uma chamada de função no packer, acho que não estou familiarizado o suficiente sobre como fazê-lo.
Eu vejo onde isso pode ser feito: packer/config_template.go.
Achei que a maioria das pessoas acharia isso útil.
Ex: Se quisermos conhecer toda a configuração de nossa pilha de marionetes, também devemos saber em qual caixa do empacotador cada nó foi construído, e o timestamp não nos dá isso. É uma boa coisa para auditoria ou até mesmo para as mais desagradáveis estratégias de recuperação de desastres.
Pensamentos? Alternativas?
_editar_:
Há também o caso de uso do empacotador em uma árvore git suja, onde o hash resultante não seria preciso. Você provavelmente gostaria que o git hash retornasse 'dirty_tree' nesse caso.
Hum. Acho que adicionar funções específicas do git é complicado, porque abre a porta para outros SCMs nos quais podemos não ter o mesmo nível de experiência. Existe uma razão pela qual você não pode usar um user-var para isso como:
packer -var "git_sha=`git rev-parse HEAD`"
E então declare a variável:
{
"variables": {
"git_sha": "none"
}
}
{{git_hash}}
faz algumas suposições, sendo a mais importante - você tem o Git instalado. Eu não acho que todos os nossos usuários usem o Git, então encontrar o UX correto quando o git não está instalado pode ser difícil (nós cometemos erros, substituímos por uma string vazia, etc).
Acordado com @sethvargo
Outra pequena dica para as pessoas que estão lendo isso: você pode querer usar o argumento --short
para rev-parse:
packer -var "git_sha=`git rev-parse --short HEAD`"
para obter um valor como 21feafa
em vez de 21feafa9a86a45b3008d133f0803d2ac2087c63f
.
Comentários muito úteis
Hum. Acho que adicionar funções específicas do git é complicado, porque abre a porta para outros SCMs nos quais podemos não ter o mesmo nível de experiência. Existe uma razão pela qual você não pode usar um user-var para isso como:
E então declare a variável:
{{git_hash}}
faz algumas suposições, sendo a mais importante - você tem o Git instalado. Eu não acho que todos os nossos usuários usem o Git, então encontrar o UX correto quando o git não está instalado pode ser difícil (nós cometemos erros, substituímos por uma string vazia, etc).