Cómo instalar Cloud Foundry en local (Ubuntu)

¿Qué es Cloud Foundry?

CloudFoundry (CF) es la propuesta de VMWare para la creación de un entorno PaaS (plataforma como servicio) sobre un entorno IaaS (infraestructura como servicio). Está basado en software abierto y se está convirtiendo en el estándar en la industria para soluciones PaaS. Una de las grandes ventajas que ofrece CF es que es una solución opensource y multi-nube.

Para probar el funcionamiento de CF podremos utilizar alguna de las cuentas gratuitas de prueba que ofrecen los proveedores como por ejemplo la prueba de 60 días de Pivotal PWS. En nuestro caso hemos optado por crear una instancia local en nuestro entorno de trabajo basado en Ubuntu.

 

Requisitos

La instalación en local la vamos a realizar en un entorno de escritorio con Ubuntu utilizando Vagrant y Virtualbox. Se requiere una gran cantidad de RAM para levantar el entorno de CF, si a esto le sumamos que la máquina la vamos a utilizar también como entorno de desarrollo recomiendo utilizar 16 GB de RAM y un disco SSD para no morir en el intento.

La configuración de mi equipo en el que he realizado la instalación:

  • i7-4790K CPU @ 4.00GHz
  • 16 GB RAM
  • 120 GB SSD
  • Ubuntu 15.10

 

Instalando software necesario

Para crear la VM con la instancia local de CF necesitaremos tener instalado las últimas versiones disponibles de Vagrant, Virtualbox, Ruby y Go.

Para instalar vagrant, virtualbox y ruby bastará con ejecutar los siguientes comandos:

$ sudo apt-get install virtualbox
$ sudo apt-get install vagrant
$ sudo apt-get install ruby-full

Para realizar la instalación de go tendremos que añadir una PPA en nuestro sistema:

$ sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable
$ sudo apt-get update
$ sudo apt-get install golang

Si todo ha ido bien ya tenemos todo el software necesario, podemos comprobar las versiones instaladas con los siguientes comandos:

$ vboxmanage --version
5.0.14_Ubuntur105127
$ vagrant --version
Vagrant 1.7.4
$ ruby --version
ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]
$ go version
go version go1.6 linux/amd64

 

Instalando BOSH Lite

BOSH Lite nos permite la creación de un entorno de desarrollo local para BOSH utilizando contenedores Warden en máquinas Vagrant. A continuación vamos a explicar los pasos de instalación utilizando Vagrant y Virtualbox, para otras configuraciones podéis seguir el README disponible en el repositorio de BOSH Lite.
Instalamos BOSH CLI

# Instalando prerequisitos
$ sudo apt-get install build-essential ruby ruby-dev libxml2-dev libsqlite3-dev libxslt1-dev libpq-dev libmysqlclient-dev zlib1g-dev
# Instalando gema bosh_cli
$ sudo gem install bosh_cli --no-ri --no-rdoc

Clonamos el repositorio BOSH Lite

$ mkdir -p ~/workspace
$ cd ~/workspace
$ git clone https://github.com/cloudfoundry/bosh-lite

Creamos la VM que contendrá la instancia de Cloud Foundry utilizando Vagrant. La primera vez Vagrant utilizará el fichero de configuración existente en el repositorio bosh-lite para crear la instancia. Para ello ejecutamos los siguientes comandos.

$ cd ~/workspace/bosh-lite
$ vagrant up --provider=virtualbox

 

Ahora que tenemos instalada la herramienta de línea de comandos BOSH CLI configuramos BOSH seleccionando como destino la máquina que acabamos de instanciar.

$ bosh target 192.168.50.4 lite
Target set to `Bosh Lite Director'
Your username: admin
Enter password: 
Logged in as `admin'

Configuramos la tabla de enrutamiento

$ sudo bin/add-route
+ old_ips=10.244.0.0/19
+ ips=10.244.0.0/16
+ gw=192.168.50.4
+ echo 'Adding the following route entry to your local route table to enable direct container access: 10.244.0.0/16 via 192.168.50.4. Your sudo password may be required.'
++ uname
+ '[' Linux = Darwin ']'
++ uname
+ '[' Linux = Linux ']'
+ type route
+ sudo route del -net 10.244.0.0/19 gw 192.168.50.4
SIOCDELRT: No existe el proceso
+ sudo route add -net 10.244.0.0/16 gw 192.168.50.4

 

Instalando herramientas para despliegue Cloud Foundry

Antes de poder desplegar Cloud Foundry necesitaremos instalar varias herramientas en nuestro sistema: spdiff y godep. Estas herramientas serán utilizadas por el script de despliegue automático de CF.

Instalando spdiff

$ mkdir ~/bin 
$ cd ~/bin 
$ wget https://github.com/cloudfoundry-incubator/spiff/releases/download/v1.0.7/spiff_linux_amd64.zip 
$ unzip spiff_linux_amd64.zip
$ rm spiff_linux_amd64.zip
# añadimos el directorio bin al path 
$ export PATH="$PATH:$HOME/bin" 
$ echo 'export PATH="$PATH:$HOME/bin"' >> ~/.profile

Instalando godep

$ mkdir $HOME/workspace/go
$ export GOPATH=$HOME/workspace/go
$ echo 'GOPATH=$HOME/workspace/go"' >> ~/.profile
$ export PATH=$PATH:$GOPATH/bin
$ echo 'PATH=$PATH:$GOPATH/bin' >> ~/.profile
$ go get github.com/tools/godep

Ya que estamos instalando herramientas, aprovechamos para instalar las CF CLI tools

$ cd ~/bin
$ curl -L "https://cli.run.pivotal.io/stable?release=linux64-binary&source=github" | tar -zx
$ cf -v
cf version 6.16.1+924508c-2016-02-26

 

Desplegando Cloud Foundry

En este punto tenemos todo preparado y listo para el despliegue de CF en nuestra máquina virtual. Podemos seguir las instrucciones de instalación en la página oficial, aunque en nuestro caso vamos a utilizar el script de instalación incluido en el repositorio cf-release. Este proceso puede tardar bastante, en mi caso fueron 17 minutos.

$ cd ~/workspace
$ git clone https://github.com/cloudfoundry/cf-release.git
$ cd ~/workspace/bosh-lite
$ ./bin/provision_cf
..............
Deployed `cf-warden' to `Bosh Lite Director'
Deploy completed.
Make sure you invoke bin/add-route to be able to access your deployment at
https://login.bosh-lite.com

Ya tenemos instalado nuestro sistema CF en local, podemos probar que todo ha ido bien mostrando el estado de todas las máquinas que componen la plataforma de CF con el comando bosh vms.

$ bosh vms
Acting as user 'admin' on 'Bosh Lite Director'
Deployment `cf-warden'

Director task 4

Task 4 done

+---------------------------------------------------------------------------+---------+-----+-----------+--------------+
| VM                                                                        | State   | AZ  | VM Type   | IPs          |
+---------------------------------------------------------------------------+---------+-----+-----------+--------------+
| api_z1/0 (16276c0c-e04e-4f7c-9b87-63befd2a8092)                           | running | n/a | large_z1  | 10.244.0.138 |
| blobstore_z1/0 (795376e9-9c63-4d6c-8ad3-63db5d6ebe39)                     | running | n/a | medium_z1 | 10.244.0.130 |
| consul_z1/0 (076fe93b-c8c4-4afe-b8cc-bb44179c2c88)                        | running | n/a | small_z1  | 10.244.0.54  |
| doppler_z1/0 (0fd0fcdd-f8f4-482d-bc6c-edb89f0457b0)                       | running | n/a | medium_z1 | 10.244.0.146 |
| etcd_z1/0 (f831c7be-5332-4eb0-a919-48769e369462)                          | running | n/a | medium_z1 | 10.244.0.42  |
| ha_proxy_z1/0 (3443d111-3de9-45da-a1c8-75bf7620b17d)                      | running | n/a | router_z1 | 10.244.0.34  |
| hm9000_z1/0 (56df7e19-93cd-45ff-a1c2-227666165ceb)                        | running | n/a | medium_z1 | 10.244.0.142 |
| loggregator_trafficcontroller_z1/0 (86ba7bad-cae1-41cc-930b-82f8b2d94886) | running | n/a | small_z1  | 10.244.0.150 |
| nats_z1/0 (da17e1c6-9eb8-4e3e-b9ea-7ddd320b1c98)                          | running | n/a | medium_z1 | 10.244.0.6   |
| postgres_z1/0 (05fad25a-62ef-4875-90c4-e8a62017f7d4)                      | running | n/a | medium_z1 | 10.244.0.30  |
| router_z1/0 (acc7625e-2405-4667-a0b2-2c60089c7178)                        | running | n/a | router_z1 | 10.244.0.22  |
| runner_z1/0 (a455e873-a4fd-46b3-bd9e-d74bcfb92c1e)                        | running | n/a | runner_z1 | 10.244.0.26  |
| uaa_z1/0 (3b4d91c8-a790-4281-92d2-ce98b7c7a059)                           | running | n/a | medium_z1 | 10.244.0.134 |
+---------------------------------------------------------------------------+---------+-----+-----------+--------------+

 

Importante

Una nota importante, si paramos/reiniciamos la máquina virtual tendremos problemas a la hora de volverla a arrancar ya que las máquinas que component los servicios de Cloud Foundry no arrancarán fácilmente. Para evitar estos problemas la mejor opción es utilizar el comando vagrant suspend para pausar la máquina virtual y vagrant resume para volverla a arrancar.

$ cd ~/workspace/bosh-lite
$ vagrant suspend
$ vagrant resume

En el caso de que se nos olvide pausar la máquina virtual podemos ejecutar el comando bosh cck para intentar recuperar la instancia de CF.

Con esto ya tenemos instalada una instancia de CF en nuestro equipo. En próximas entradas explicaré como configurar y desplegar una aplicación en nuestro entorno Cloud Foundry local.
Recursos:

 

Sobre el autor

Apasionado de las tecnologías, entusiasta del desarrollo de software. Especializado en Java EE. Cofundador de www.logrosxbox.com.

7 Comentarios

Puedes escribir comentarios en esta página.


  • […] En esta entrada vamos a ver cómo instalar el servicio mysql en la plataforma Cloud Foundry. Para ello utilizaremos nuestro entorno de pruebas Clound Foundry local. […]

    Instalando servicio mysql en Cloud Foundry | David Muñoz Fernández hace 3 años Reply


  • […] En esta entrada voy a explicar como desplegar una aplicación basada en Spring en la plataforma Cloud Foundry. Para ello utilizaremos nuestro entorno Cloud Foundry local. […]

    Cómo desplegar una app en Cloud Foundry | David Muñoz Fernández hace 3 años Reply


  • […] have installed vagrant and bosh-lite on Ubuntu. using instruction from below url http://dmunozfer.es/como-instalar-cloud-foundry-en-local-ubuntu/ (please […]

    Cloud Bursting using CloudFoundry on vagrant with Bosh-lite | Mentalist Nuno hace 3 años Reply


  • Hola… Cuando doy el comando cck o Bosh tárget 192.168.50.4 lite, tengoñ mensaje [WArning] cannot access director, trying 4 more times….

    Byron Orbea hace 2 años Reply


  • Hola David, por favor ayudame con lo siguinete,tengo un error al ejecutar ./provision_cf, dice “/var/lib/gems/2.1.0/gems/minitar-0.5.4/lib/archive/tar/minitar.rb:630:in `read’: unexpected end of file (Zlib::GzipFile::Error)”, te detallo todo el resultado del comando:
    root@byrono:~/workspace/bosh-lite/bin# ./provision_cf
    Acquiring bosh-lite IP
    Bosh IP is: 192.168.50.4
    Target set to ‘Bosh Lite Director’
    Uploading stemcell from latest-bosh-lite-stemcell-warden.tgz
    Acting as user ‘admin’ on ‘Bosh Lite Director’

    Verifying stemcell…
    File exists and readable OK
    Verifying tarball…
    Read tarball OK
    /var/lib/gems/2.1.0/gems/minitar-0.5.4/lib/archive/tar/minitar.rb:630:in `read’: unexpected end of file (Zlib::GzipFile::Error)
    from /var/lib/gems/2.1.0/gems/minitar-0.5.4/lib/archive/tar/minitar.rb:630:in `block in each_entry’
    from /var/lib/gems/2.1.0/gems/minitar-0.5.4/lib/archive/tar/minitar.rb:611:in `loop’
    from /var/lib/gems/2.1.0/gems/minitar-0.5.4/lib/archive/tar/minitar.rb:611:in `each_entry’
    from /var/lib/gems/2.1.0/gems/minitar-0.5.4/lib/archive/tar/minitar.rb:593:in `each’
    from /var/lib/gems/2.1.0/gems/minitar-0.5.4/lib/archive/tar/minitar.rb:685:in `each’
    from /var/lib/gems/2.1.0/gems/bosh_cli-1.3262.4.0/lib/cli/stemcell.rb:34:in `perform_validation’
    from /var/lib/gems/2.1.0/gems/bosh_cli-1.3262.4.0/lib/cli/validation.rb:18:in `validate’
    from /var/lib/gems/2.1.0/gems/bosh_cli-1.3262.4.0/lib/cli/commands/stemcell.rb:63:in `upload’
    from /var/lib/gems/2.1.0/gems/bosh_cli-1.3262.4.0/lib/cli/command_handler.rb:57:in `run’
    from /var/lib/gems/2.1.0/gems/bosh_cli-1.3262.4.0/lib/cli/runner.rb:59:in `run’
    from /var/lib/gems/2.1.0/gems/bosh_cli-1.3262.4.0/bin/bosh:19:in `’
    from /usr/local/bin/bosh:23:in `load’
    from /usr/local/bin/bosh:23:in `’
    Como puedo solventarlo?
    Gracias.

    Byron Orbea hace 2 años Reply


    • Hola, desde la publicación de esta entrada la gente de Pivotal ha lanzado una versión de CF llamada PCF Dev que permite ejecutar una instancia de CF en una máquina virtual. Ahora mismo creo que esta sería la mejor vía a explorar para ejecutar un entorno de pruebas CF en local.
      En la web de PCF DEV https://pivotal.io/pcf-dev tienes más información y una guía de instalación.

      Un saludo

      David Muñoz Fernandez hace 2 años Reply


      • Gracias David, luego de buscar un poco en la web encontre que borrando y volviendo a descargar el archivo latest-bosh-stemcell-warden.tgz, se solucionó el incidente que te habia indicado. :).

        Ahora ya tengo todo como indicas en tu blog:
        Deployed ‘cf-warden’
        to ‘Bosh Lite Director’

        Deploy completed.

        Make sure you invoke
        bin/add-route to be able to access your deployment at

        https://login.bosh-lite.com

        De aqui en adelante necesito desplegar VMs para que sean publicadas y que mis usuarios las utilicen con los aplicativos que me soliciten…. me puedes guiar con esto?

        Byron Orbea hace 2 años Reply


Responder