Para desarrollar este proyecto estamos usando Vagrant para administrar el ambiente de desarrollo y Ansible para manejar todas las dependencias y configuración del proyecto. De esta manera, tenemos un ambiente de desarrollo muy similar al ambiente productivo y podemos destruir y volver a crear ambientes (productivo o pruebas) de manera automatica gracias a Vagrant y Ansible.
Una de las responsabilidades de Ansible es administrar dependencias de los servidores, por ejemplo, installar php y mysql, y configurarlo de manera adecuada, por ejemplo, crear el virtual host para el web server.
Necesitas tener instalados los siguientes programas
- git
- ansible
- vagrant
- virtual box
Lo pasos para tener un ambiente de desarrollo funcional son los siguientes
- Clonar este repository
- Entrar al directorio donde se acaba de clonar el proyecto.
- Ejecutar
vagrant plugin install vagrant-hostsupdater
(ver nota) - Ahora,
- Si no has clonado el projecto
filmoteca
anteriormente, ejecutargit clone git@github.com:filmoteca/filmoteca.git project
- Si ya clonaste el proyecto filmoteca, copia toda la carpeta
filmoteca
a este projecto y renamobrala aproject
de tal manera que quedeinfrastructure/project
.
- Si no has clonado el projecto
- Ejecutar
vagrant up --provision
para "levantar" (crear) la máquina virtual. Te pedira la tu contraseña de administrador de la computadora donde se corrio el comando. - Ahora la página es accessible desde
filmoteca.dev
Con esto ya puedes modificar el proyecto dentro de la carpeta project
como normalmente se haría.
Nota: Si la instalación del plugin muestra el siguiente error instala vagrant desde la página oficial
Installing the 'vagrant-hostsupdater' plugin. This can take a few minutes...
/usr/lib/ruby/2.3.0/rubygems/specification.rb:946:in `all=': undefined method `group_by' for nil:NilClass (NoMethodError)
usuario: filmoteca@unam.mx
Password: filmoteca
Para provisionar el ambiente de producción se debe correr los siguientes commandos
ansible-playbook webservers.yml mysql.yml -i inventaries/production/hosts.yml
ansible-playbook webservers.yml mysql.yml -i inventaries/stating/hosts.yml
ansible-playbook webservers.yml mysql.yml -i inventaries/local/hosts.yml