Tengo algunas tareas que requieren mucho tiempo y me gusta distribuirlas en varias computadoras. Estas tareas requieren ejecutar un script idéntico de ruby o python (o una serie de scripts que se llaman entre sí) en cada máquina. Las máquinas tendrán un archivo de configuración separado que le indicará al script qué parte de la tarea completar.
Quiero encontrar la mejor manera de sincronizar los scripts en estas máquinas antes de ejecutarlos. Hasta ahora, he estado haciendo cambios en una copia del script en un recurso compartido de red y luego copiando una copia nueva en cada máquina cuando quiero ejecutarla. Pero esto es engorroso y deja una posibilidad de error (por ejemplo, falta un archivo en la copia o no hace clic en "copiar y reemplazar").
Supongamos que los sistemas son máquinas estándar de Windows que no están dedicadas a esta tarea y no necesito ejecutar estos scripts todo el tiempo (por lo que no quiero una solución que funcione las 24 horas del día, los 7 días de la semana y que siempre los mantenga actualizados, Prefiero algo que empuja / tira del comando).
Mis pensamientos sobre varias opciones:
- Adaptación simple de mi flujo de trabajo actual: mantenga los originales en la unidad de red, pero escriba un archivo por lotes que copie sobre la última versión de los scripts para que todo sea una operación de un solo clic. Requiere acción en cada sistema, pero ese no es el fin del mundo (ya que cada uno generalmente necesita que su archivo de configuración cambie también ligeramente).
- Ponga todo en un repositorio Mercurial / Git y extraiga una copia nueva en cada nodo. Ir directamente al repositorio desde cada máquina garantizaría una versión actual (y tendría el beneficio adicional de permitir que se realicen ediciones en el script desde cualquier máquina). Las desventajas serían que requiere que se instale VCS en cada máquina y puede haber algunos problemas relacionados con la autenticación, ya que no usaría un repositorio público.
- Abra el acceso de escritura en una carpeta compartida y escriba un script para usar rsync (o similar) para enviar los cambios a todas las máquinas a la vez. Esto obtiene una versión actual en cada máquina (aunque tendría que cambiar la secuencia de comandos si desea omitir una máquina o agregar una nueva). El posible problema sería que cada computadora tiene que permitir el acceso de escritura.
- Dropbox es una sugerencia razonable (y podría funcionar bien), pero no quiero usar un servicio externo y prefiero no tener Dropbox ejecutándose las 24 horas, los 7 días de la semana, en sistemas que normalmente no lo necesitarían.
¿Hay algo simple que me estoy perdiendo? ¿Alguna herramienta diseñada expresamente para hacer este tipo de cosas? De lo contrario, me inclino a vincular todos los sistemas a Mercurial ya que, si bien requiere software adicional, es un poco más robusto que escribir un archivo por lotes (por ejemplo, si divido parte de un script en un módulo separado, Mercurial sabrá qué hacer mientras que tendría que agregar una línea al archivo por lotes).