Cargando...

Desplegar aplicación en producción con Vagrant

En este artículo te mostraré como desplegar con Vagrant, el código de una aplicación en un servidor remoto a través de SFTP, que perfectamente puede ser un entorno de producción.

Lo que aprenderás

  • Qué es Vagrant Push
  • Implementar una aplicación con Vagrant Push

Requisitos previos

Evidentemente, para desplegar una aplicación en producción debes tener preparado un entorno de desarrollo previamente. Te recomiendo nuestro artículo Implementar un entorno LAMP con Vagrant.

Por qué Vagrant Push

Vagrant es una herramienta para crear entornos virtuales de forma fácil y reproducible. Esa es su esencia. Sin duda, a solventado muchos de los problemas que teníamos anteriormente para pasar las aplicaciones del ambiente de desarrollo a producción. Sin embargo, aún usando Vagrant es posible que sigas dependiendo de alguien más para hacer el despliegue en producción. ¿Y si pudieras hacerlo directamente desde Vagrant? Pues, déjame decirte que es totalmente posible. Es momento de conocer que es Vagrant Push. A partir de la versión 1.7, Vagrant es capaz de implementar o insertar el código de la aplicación ubicada en el mismo directorio del Vagrantfile en un servidor remoto.

Antes de continuar quiero dejar claro que es una funcionalidad que nos da Vagrant, la tenemos ahí y le podemos sacar provecho cuando trabajamos con aplicaciones pequeñas, por ejemplo, sitios web estáticos, donde posiblemente seas el único que le mete mano a un sitio. Cuando trabajamos con aplicaciones más complejas, sobre todo, si queremos implementar completamente DevOps, utilizamos otras herramientas más poderosas. Vuelvo a remarcar que la principal característica de Vagrant es crear entornos de forma sencilla.

Tenemos 3 opciones para utilizar Vagrant Push:

  • FTP/SFTP
  • Heroku
  • Local Exec

En este ejemplo usaremos SFTP.

Implementación de Vagrant Push

Tengo la siguiente estructura de directorios:

Estructura de directorios

WebApp es el directorio que contiene mi aplicación, este directorio lo tengo sincronizado entre mi máquina anfitrión y la máquina virtual.

En el Vagrantfile agregamos el siguiente bloque de código:

config.push.define "ftp" do |push|
    push.host = "crashell.tech"
    push.username = "sftp_user"
    push.password = "Password_SFTP"
    push.secure = true
    push.dir = "App/"
    push.destination = "/var/www/WebApp"
end

Ahora paso a explicar las opciones de Vagrant Push definidas anteriormente.

host: La dirección (IP o dominio) del servidor remoto FTP/SFTP. Si el servidor FTP/SFTP se ejecuta en un puerto no estándar, puedes especificar el puerto después de la dirección.

username: El nombre de usuario que se utilizará para la autenticación con el servidor FTP/SFTP.

password: La contraseña que se usará para la autenticación con el servidor FTP/SFTP.

secure: Le indicamos usar el protocolo seguro (SFTP).

dir: El directorio base que contiene los archivos que se cargarán. De forma predeterminada, este es el mismo directorio del Vagrantfile, pero se puede especificar otro directorio que se desee cargar. Como en este caso, la aplicación está en App. El contenido de este directorio es el que se cargará al servidor remoto.

destination: El destino raíz del sistema remoto para sincronizar los archivos (el valor predeterminado es /). De igual manera, se puede cambiar como en nuestro caso, el directorio destino es /var/www/WebApp, que a su vez sería el directorio raíz del Virtual Host correspondiente.

Vagrant Push FTP y SFTP admiten otras opciones, puedes consultar la documentación oficial.

Finalmente, para hacer el despliegue basta con ejecutar desde la línea de comandos:

vagrant push


reproductor fragmento de código
reproductor Estructura de directorios image
  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.