¿Cómo se realiza la implementación a la producción desde el entorno de desarrollo local VirtualBox / Vagrant?


Recientemente comencé a leer sobre la construcción de entornos de desarrollo con software de virtualización (soy un principiante) y parece que 'infraestructura como código' es un concepto realmente poderoso.

Me gusta mucho la estructura de flujo de trabajo descrita aquí :

  1. La misma imagen base de VirtualBox se utiliza alrededor del equipo
  2. Vagrant se utiliza para 'construir' y 'aprovisionar' rápidamente una imagen a una configuración necesaria con la ayuda de
  3. Chef (o Títere) recetas que es la única pieza de código necesario para ser puesto bajo control de versiones.

Sin embargo, todavía no entiendo muy bien cómo se transfiere e implementa el código en servidores de producción.

Según entiendo, la forma común de mantener idénticos los entornos de DESARROLLO y PROD es administrar la instancia del servidor de Producción como una imagen virtual más que se aprovisionará con Chef. Puedo tener exactamente el mismo sistema operativo instalado en el servidor de producción que yo (y el equipo) uso diariamente con VirtualBox-Vagrant-Chef.

Pero el servidor de producción puede tener hardware que difiere del del sistema operativo invitado virtual y esto podría conducir a inconsistencias nuevamente.

Entonces, aquí está la pregunta:

¿Cuál es la mejor práctica conocida y común para transferir e implementar código a un servidor de Producción desde un entorno de desarrollo que se administra con la cadena de herramientas VirtualBox-Vagrant-Chef? ¿Permite esta práctica un despliegue continuo?

[Editar]: Nota: ¿Existe alguna práctica de ejecutar la misma instancia de máquina virtual aprovisionada con Chef / Vagrant en el servidor de producción, como se muestra en este diagrama ?

Author: skanatek, 2014-06-12

2 answers

Soy el autor del artículo que vinculaste, por lo que mi 0.02

Si entendí correctamente su pregunta, no mueve las máquinas virtuales de desarrollo a producción, crea un proceso repetible que le permite crear el mismo estado final (SO + config + app) una y otra vez, sin importar dónde esté el destino.

Al usar vagrant, garantiza que sus desarrolladores usen el mismo sistema operativo que sus servidores de producción, sin importar el sistema operativo que usen para el desarrollo.

Usando Puppet / Chef you garantice que el sistema operativo está configurado de la misma manera, ya sea que se ejecute en una máquina virtual con Vagrant, una máquina virtual en producción, una máquina virtual en la nube o hardware de metal desnudo. No necesita ser virtual.

 22
Author: csanchez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-16 11:07:56

En el caso de Puppet (Chef probablemente puede hacer esto también), puede construir el manifiesto (receta) de tal manera que se comporten de manera diferente en su entorno vagabundo, por ejemplo,

if $::virtual != "virtualbox" { # not in vagrant
    include sysctl_tuning
}

La pregunta sobre la entrega continua es un poco demasiado amplia en este contexto. Creo que la respuesta sería "sí", por lo que vale.

 1
Author: Felix Frank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-12 21:07:52