¿Qué es un flujo de trabajo común o productivo para implementar aplicaciones desde el desarrollo hasta los serveres de producción aprovechando Vagrant y Git?

Actualmente estoy tratando de comprender el concepto de Vargrant y Git en lo que respecta a adoptar por completo un nuevo paradigma en el flujo de trabajo.

Por el momento, ejecuto 4 sitios web de WordPress en digitalocean. Desarrollo usando el flujo de trabajo más tradicional (vergonzoso): ftp. De hecho, a menudo me encuentro probando nuevas funciones en VM de producción sin una forma infalible de deshacer.

Comprendo los beneficios de Vagrant, pero estoy confundido sobre cómo encaja en un flujo de trabajo legítimo.

Esta es mi comprensión limitada: hago girar un Vagrant Box local, desarrollo mi aplicación, uso git para enviar a mi server de producción.

No entiendo: si cambio los files de configuration, instalo software adicional en mi Box local, no se refleja automáticamente en la VM de producción. Tengo que anotar los cambios que hago en este extremo y repetir en el otro extremo. Estoy seguro de que no estoy explotando por completo los poderes de vagrant y git.

¿Es posible duplicar su máquina virtual de producción exacta en su computadora local y realmente sincronizar los dos con git? ¿Cómo describiría una vista de pájaro para un flujo de trabajo mínimo usando Vagrant y git para lograr una productividad óptima?

La respuesta se llama gestión de configuration. Tener una máquina de desarrollo local que sea la misma que su máquina de producción significa que debe poder reproducir la configuration de la máquina. Vagrant viene con un buen soporte para las dos herramientas comunes Chef y Puppet (pero con algunos pequeños hacks debería ser posible usar cualquier otro). Esto significa que toda su configuration de la máquina vagabunda debe hacerse a través de instrucciones con su herramienta de gestión de configuration, y luego las mismas instrucciones pueden ejecutarse contra sus máquinas de producción. Puede sonar como un montón de trabajo, pero hay muchas recetas preparadas y bien escritas para un software común que solo necesita un poco de ajuste para su gusto.

Sabes que tienes un entorno de desarrollo reproducible si puedes hacer una destrucción vagrant seguido de un vagrant y terminar con la misma configuration. Este es el primer paso para poder reproducirlo en su entorno de producción.

Esto realmente no responderá a su pregunta, pero echaría un vistazo a Bedrock para el desarrollo de WordPress usando Git, Vagrant y Capistrano.

Creo que sus documentos ofrecen una buena explicación de cada herramienta y cómo incorporarlas mejor a su flujo de trabajo.