El Generador de entornos OCA(x) comprende una serie de automatizaciones para el despliegue de OCA(x) en entornos tanto de desarrollo como de producción.
OCAx (Observatorio Ciudadano del Ayuntamiento x) es una aplicación web de apoyo a los Observatorios Ciudadanos Municipales (OCM), para ayudar a la fiscalización colectiva y abierta de las cuentas de los ayuntamientos.
Este generador ha sido pensado con dos fines diferenciados:
- Para personas detrás de OCMs, que deseen contar con su propio OCA(x) sin tener que realizar tediosos procesos de instalación.
- Para desarrolladores de OCA(x): contar con un entorno de desarrollo para pruebas.
En líneas generales, el generador de entornos OCA(x) realiza tres operaciones:
- Construir una vmx VirtualBox basada en Ubuntu 13.04
- Instalar OCA(x) y sus dependencias.
- Opcionalmente, realizar un despliegue en la nube. Actualmente sólo DigitalOcean es soportado (próximamente AWS).
El generador de entornos OCA(x) está basado en Vagrant + CHEF-solo :
-
Vagrant es una herramienta para la creación y configuración de entornos de desarrollo virtualizados. Lo utilizaremos para generar máquinas virtuales para el entornos OCA(x).
-
CHEF-solo es parte de la suite CHEF, una herramienta de gestión de la configuración. CHEF-solo está indicado para provisionar entornos en los que solo hace falta desplegar software, y no realizar una gestión de la configuración completa. Lo utilizamos para programar la receta de despliegue de OCA(x) y sus dependencias
Para poder usar el generador de entornos OCA(x) es necesario:
- Tener instalado VirtualBox (se recomienda versión Oracle 1.4.3)
- Tener instalado Vagrant (se recomienda versión 4.3).
Con VirtualBox y Vagrant, procedemos a instalar el plugin de omnibus:
user@host:~/ocax-vmx$ vagrant plugin install vagrant-omnibus
Y ya podemos lanzar la construcción del entorno OCA(x):
user@host:~/ocax-vmx$ vagrant up
Tras unos 15 minutos, si no hay errores ya podremos acceder por ssh a nuestro recién-construido-entorno con
user@host:/ocax-vmx$ vagrant ssh
Y desde nuestra máquina host podemos acceder a OCA(x):
El usuario/contraseña de administrador por defecto es admin/admin. Te recomendamos que lo primero que hagas sea modificarla.
DigitalOcean es un proveedor de servicios cloud-computing que cuenta con una serie de características muy especiales para hacer despliegues rápidos. DigitalOcean dispone de un plugin para Vagrant, haciendo muy sencillo contar con nuestro OCA(x) desplegado en la red de forma muy sencilla.
Advertencia: DigitalOcean es un proveedor de pago. Este generador de entornos OCA(x) realiza una instalación básica en Digitalocean (1CPU, 512MB RAM, 20GB SSD, 1TB Transfer), que tiene un coste máximo de $5/mes. Véase el plan de precios para más información.
Lo primero que necesitamos es una cuenta de usuario en DigitalOcean. Una vez tengamos nuestra cuenta de usuario, sería necesario configurar:
- Datos de cobro: ¡lo siento! Es la parte fea de este asunto :)
- SSH Key: seguir las instrucciones desde el menú SSH Key.
- API Key: seguir las instrucciones desde el menu API Key.
Una vez generada la cuenta, deberemos sustituir en el fichero Vagrantfile la dirección a la private ssh key (ssh.private_key_path), client_id y api_key:
# Setting for deploying on digitalocean
config.vm.provider :digital_ocean do |provider, override|
config.omnibus.chef_version = :latest
override.ssh.private_key_path = '~/.ssh/id_rsa' <--- aqui
override.vm.box = 'digital_ocean'
override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"
provider.client_id = 'pon-tu-client_id' <--- aqui
provider.api_key = 'pon-tu-api_key' <--- y aqui
end
Procedemos a instalar los plugins de digitalocean y omnibus para Vagrant. Nota: estas instrucciones son para sistemas GNU/Linux. Si está intentando generar un entorno OCA(x) desde Mac/Windows, por favor lea la nota en la documentación de vagrant-digitalocean.
user@host:~/ocax-vmx$ vagrant plugin install vagrant-digitalocean
user@host:~/ocax-vmx$ vagrant plugin install vagrant-omnibus
Lanzamos construcción del entorno OCA(x) en DigitalOcean. ¡Estate atento! En el proceso se te informará de la dirección IP para tu entorno OCA(x) en DigitalOcean.
user@host:~/ocax-vmx$ vagrant up --provider=digital_ocean
Tras unos 15 minutos, si no hay errores ya podremos acceder por ssh a nuestro recién-construido-entorno
user@host:~/ocax-vmx$ vagrant ssh
Y desde nuestra máquina host podemos acceder a los distintos servicios:
El usuario/contraseña de administrador por defecto es admin/admin. Te recomendamos que lo primero que hagas sea modificarla.
El generador de entornos OCA(x) son una serie de ficheros, este es el árbol:
ocax-vmx
├── cookbooks
│ ├── apache2
│ ├── apt
│ ├── aws
│ ├── build-essential
│ ├── database
│ ├── mysql
│ ├── ocax
│ ├── openssl
│ ├── postgresql
│ └── xfs
└── Vagrantfile
El entorno de generación OCA(x) es completamente configurable. El ficheros clave a modificar para adaptar los entornos de desarrollo a nuestras necesidades es Vagrantfile que contiene las instrucciones de configuración para:
- Sistema operativo a usar como máquina virtual base. Se recomienda escoger un sistema operativo pre-empaquetado para Vagrant/VirtualBox como los disponibles en Vagrantbox
- Opciones de configuración de red entre la máquina virtual y el sistema host. Por defecto una private network con IP 192.168.56.101
- Capacidades de la máquina virtual, memoria RAM, etc.
- Credenciales MySQL para usuario root.
El arbol de ficheros de la receta maestra, opendatajdavmx, es el siguiente:
ocax-vmx/cookbooks/ocax
├── attributes
│ └── default.rb
├── metadata.rb
├── recipes
│ └── default.rb
└── templates
├── default
│ ├── etc_hosts
│ ├── ocax_main.php
│ └── site.conf.erb
└── ubuntu -> default/
Los ficheros más importantes son:
- attributes/default.rb: Contiene variables de configuración tales como, la IP y nombre de dominio para los servicios en nuestra máquina virtual, etc. Es un fichero comentado con instrucciones útiles para personalizar nuestro entorno.
- recipes/default.rb: Contiene las instrucciones de provisionamiento del sistema. Este sería el fichero a editar si queremos provisionar nuestro entorno con más componentes
- templates/default/*: Plantillas de ficheros de configuración. Desde recipes/default.rb se pueden incluir directivas para aplicar las plantillas con variables definidas attributes/default.rb en nuestro sistema virtual.