Actualmente personalizo mi post_procesador de esta manera:
"output": "boxes/rhel-server-6.5-x64-{{.Provider}}-{{.BuildName}}_{{timestamp}}.box"
Sería bueno tener {{git_hash}} en lugar de la marca de tiempo. Si hay otra forma de hacer esto, además de una llamada de función en Packer, entonces supongo que no estoy lo suficientemente familiarizado con cómo hacerlo.
Veo dónde se podría hacer esto: packer/config_template.go.
Pensé que la mayoría de la gente encontraría esto útil.
Ej.: si queremos conocer la configuración completa de nuestra pila de marionetas, también debemos saber en qué empaquetador se construyó cada nodo, y la marca de tiempo no nos da eso. Es bueno tenerlo para la auditoría o incluso para las estrategias de recuperación ante desastres más desagradables.
¿Pensamientos? ¿Alternativas?
_editar_:
También existe el caso de uso de ejecutar packer contra un árbol git sucio, donde el hash resultante no sería exacto. Probablemente quieras que el hash de git devuelva 'dirty_tree' en ese caso...
Hm. Creo que agregar funciones específicas de git es complicado, porque abre la puerta a otros SCM en los que es posible que no tengamos el mismo nivel de experiencia. ¿Hay alguna razón por la que no pueda usar una variable de usuario para esto como:
packer -var "git_sha=`git rev-parse HEAD`"
Y luego declarar la variable:
{
"variables": {
"git_sha": "none"
}
}
{{git_hash}}
hace algunas suposiciones, la más importante es que tienes Git instalado. No creo que todos nuestros usuarios usen Git, por lo que encontrar el UX correcto cuando git no está instalado puede ser difícil (tenemos un error, lo reemplazamos con una cadena vacía, etc.).
De acuerdo con @sethvargo
Otro pequeño consejo para las personas que están leyendo esto: es posible que desee utilizar el argumento --short
para rev-parse:
packer -var "git_sha=`git rev-parse --short HEAD`"
para obtener un valor como 21feafa
en lugar de 21feafa9a86a45b3008d133f0803d2ac2087c63f
.
Comentario más útil
Hm. Creo que agregar funciones específicas de git es complicado, porque abre la puerta a otros SCM en los que es posible que no tengamos el mismo nivel de experiencia. ¿Hay alguna razón por la que no pueda usar una variable de usuario para esto como:
Y luego declarar la variable:
{{git_hash}}
hace algunas suposiciones, la más importante es que tienes Git instalado. No creo que todos nuestros usuarios usen Git, por lo que encontrar el UX correcto cuando git no está instalado puede ser difícil (tenemos un error, lo reemplazamos con una cadena vacía, etc.).