¿Cuál es la mejor manera de implementar código desde un repository y Ansible?

Para nuestro website de comercio electrónico, utilizo el siguiente process de deployment con Ansible: – Extraiga fonts del repository a la máquina remota – Enlace simbólico a este repository a / var / www / mysite / current – Enlace simbólico de files de configuraciones

Pero no estoy seguro de que sea la mejor forma de implementar el código, ya que podemos tener todo el repository en el control remoto con files no necesarios allí.

Así que me preguntaba si sería mejor: – Extraer el código en local (en un tmp por ejemplo) – Crear un file y cargar el file al control remoto directamente en / var / www / mysite / release / xxxxxxx – Enlace simbólico que lanzamiento a la stream

Qué piensas ? ¿Hay alguna manera de hacer eso con Ansible?

Gracias.

Es una pregunta difícil si puede haber una "mejor" respuesta sin conocer todas las complejidades de su entorno de implementación. Dicho esto, tomaría un par de cosas en consideración en base a lo que ha dicho:

¿Por qué es un problema desplegar todo el repository?

¿Está almacenando files binarys grandes que no interactúan con su código de ninguna manera? Es posible que desee considerar dividirlos en otro repository, o administrarlos de una manera diferente (por ejemplo, las imágenes de un disco grande podrían ser servidas por un sistema de compilation en lugar de mantenerse en git). Un submodule con estos otros componentes también podría ser un enfoque útil, ya que el repository puede ser clonado sin tirar de los submodules, si así lo desea.

¿O es la gran historia del git repo que causa que el clon sea grande? En ese caso, podría hacer un clon superficial, que el module git de Ansible admite.

Archivar y copyr

Esto suena como una solución que es más complicada de lo que necesita ser.

Presumiblemente, esto implicaría mantener una list de files que desea eliminar en su Repo Ansible (boost el acoplamiento de su código Ansible y repo implementado objective), coordinar el clon local en un file temporal, eliminar los files, hacer el file, hacer la transferencia remota , haz el desfile remoto.

Esto se contrasta con simplemente llamar al submodule Ansit git .

Odio agregar más complejidad donde no es necesaria. Apuntaría al enfoque más simple.