Lo qué es y lo hace Vagrant

Nota

Estos pasos son realizados automáticamente por Vagrant y Puppet para usted. Ellos están solamente interesantes si quieres saber lo que pasa bajo el capó para la preparación de su entorno de entrenamiento virtual.

Vagrant es una herramienta de automatización para que los desarrolladores puedan programar la configuración y arrancar / parar máquinas virtuales usando aplicaciones como VirtualBox o Vmware Fusion / Workstation. La belleza de Vagrant es que es en gran parte independiente de la plataforma para Linux, Windows y Apple, por lo que con un archivo ‘Vagrantfile’ por proyecto se describe una imagen virtual de instalación base y todo tipo de configuración de máquina virtual que de lo contrario tendría que hacer clic y escribir juntos la máquina virtual de la Aplicación.

Lo que hace Vagrant, por ejemplo, es instalar un puerto hacia adelante de modo que http://localhost:8080 en su computadora física se reenvíe automáticamente al puerto que Plone escuchará en la máquina virtual invitada. Después de que Vagrant haya hecho lo suyo para configurar su máquina virtual, no hemos terminado. Aunque Vagrant tiene la opción de pre-construir imágenes específicas sería mucho trabajo y desperdicio de ancho de banda descargando de nuevo una máquina de imágenes (los cuales son de 300 a 600 Mb) cada vez que nos gustaría cambiar cosas pequeñas en nuestro entorno de formación virtual.

Puppet es una herramienta de gestión de la configuración (otros de los que habrás oído hablar son Chef, Ansible y SaltStack) y ayuda a los administradores de sistemas a gestionar automáticamente servidores (reales y virtuales). No vamos a entrar en Puppet en detalle, sino que se basa en la parte superior de nuestra imagen base Vagrant para configurar aún más nuestro medio ambiente.

Vagrant detecta cuando se configura una nueva máquina y se ejecuta Puppet u otros Provisioners por defecto sólo una vez, aunque también se puede utilizar para mantener las máquinas al día, lo que es un poco más difícil. Consulte la documentación del archivo Vagrantfile y de Vagrant en si mismo, especialmente el capítulo `` Provisioning``.

Esto es básicamente lo que hace Puppet si configuráramos nuestro sistema a mano:

Primero nosotros actualizamos Ubuntu e instalamos algunos paquetes.

$ sudo aptitude update --quiet --assume-yes
$ sudo apt-get install build-essential
$ sudo apt-get install python-dev
$ sudo apt-get install python-tk
$ sudo apt-get install libjpeg-dev
$ sudo apt-get install libxml2-dev
$ sudo apt-get install libxslt-dev
$ sudo apt-get install git
$ sudo apt-get install libz-dev
$ sudo apt-get install libssl-dev
$ sudo apt-get install subversion
$ sudo apt-get install wget
$ sudo apt-get install curl
$ sudo apt-get install elinks
$ sudo apt-get install vim
$ sudo apt-get install gettext
$ sudo apt-get install python-virtualenv
$ sudo apt-get install putty-tools

Entonces creamos un entorno virtual de python usando virtualenv. Esta es siempre una buena práctica ya que de esa manera conseguimos una copia limpia y aislada de nuestro sistema python, para que no rompamos el sistema python mediante la instalación de paquete egg python que podrían colisionar con otros paquete egg python. Python se utiliza hoy en día mucho por su sistema operativo, así como para todo tipo de herramientas de sistema y secuencias de comandos.

$ virtualenv --no-site-packages /home/vagrant/py27

Ahora descargamos y descomprimimos el directorio buildout-cache que contiene todos los paquetes python que componen Plone. Esta es una optimización: Podríamos saltar este paso y tener buildout descargar todos los paquetes individualmente del python packaging index PyPi pero eso toma mucho más tiempo en una primera instalación.

$ wget http://dist.plone.org/release/4.3.10/buildout-cache.tar.bz2
$ tar xjf buildout-cache.tar.bz2

Entonces nosotros comprobamos nuestro buildout del tutorial de http://github.com/collective/training_buildout, nos cambiamos a la rama plone4 y lo construimos.

$ cd /vagrant
$ git clone https://github.com/collective/training_buildout.git buildout
$ cd buildout
$ git checkout plone4
$ /home/vagrant/py27/bin/python bootstrap.py
$ ./bin/buildout -c vagrant_provisioning.cfg

Esto descargará adicionales de paquetes egg que aún no forman parte del directorio buildout-cache y configurará Plone para que esté listo para ejecutarse.

En este punto Vagrant y Puppet han terminado su trabajo para configurar su entorno de entrenamiento virtual en su máquina local.

Ahora puede conectarse a la máquina y iniciar a Plone.

$ vagrant ssh
$ cd /vagrant/buildout
$ ./bin/instance fg

Ahora tenemos un servidor de aplicación Zope basado en Buildout, dispuesto a agregar un sitio Plone. Ir a http://localhost:8080 y cree un sitio Plone.