Este articulo explica como instalar Ryu con OpenStack en la modalidad de DevStack utilizando OFAgent 
está basado en [OFAgent -IceHouse](https://github.com/osrg/ryu/wiki/OFAgent-Openstack-IceHouse-environment-HOWTO)

En este tutorial usaremos Ubuntu 12.04 LTS y vamos a instalar OpenStack IceHouse bajo KVM.

Arquitectura 
-----------------

    +--------+
    | Client |
    +----+---+
         |
    -----+---------+-------------------+-----------
                   |                   |
          +--------+--------+  +-------+--------+
          | All-in-one Node |  | Compute Node   |
          |  Nova           |  |  Neutron       |
          |  Keystone       |  |   ofagent      |
          |  Glance         |  |  Nova          |
          |  Neutron        |  |   nova-compute |
          |  Cinder         |  +----------------+
          |  Horizon        |
          +-----------------+

Iniciando 
------------------

Primeramente vamos a instalar Ubuntu Server en ambos nodos 
Como sugerencia recomiendo instalar una máquina con Ubuntu e instalar los siguientes paquetes 

    $ sudo apt-get install git python-dev python-pip
    $ sudo pip install -U six

Instalando devstack tuve algunos problemas de dependencias, las cuales tuve que instalar manualmente, acá están las librerías instaladas

    $ sudo pip install -U setuptools 
    $ sudo pip install unicodecsv testrepository bandit futurist urllib3 debtcollector taskflow os-client-config reno keystoneauth1 python-neutronclient

y descargar devStack en la máquina con el fin de poder clonarla y no tener que hacer el mismo procedimiento 2 veces.

    $ git clone https://github.com/openstack-dev/devstack.git -b stable/kilo


Para cada host se definen las siguientes direcciones de red

Red provista por KVM

    Network: 192.168.122.0/24

Máquinas instaladas

        All-in-one Node:
            Host name: allinone
            IP address: 192.168.122.60

        Compute Node:
            Host name: compute1
            IP address: 192.168.122.61
 
La máquina cliente (en mi caso la máquina donde está instalado KVM)

        Cliente:
            Host name: client
            IP address: 192.168.122.1

Configurando la red
====================

En ambas máquinas hay que modificar el archivo **/etc/network/interfaces**

All-in-one
------------------
    auto lo
    auto eth0
    iface eth0 inet static
            address 192.168.122.60
            netmask 255.255.255.0
            gateway 192.168.122.1
            dns-nameservers 192.168.122.1


Compute Node
------------------
    auto lo
    auto eth0
    iface eth0 inet static
            address 192.168.122.61
            netmask 255.255.255.0
            gateway 192.168.122.1
            dns-nameservers 192.168.122.1

Cliente
------------

Como estamos usando nuestra máquina física como anfitriona vamos a hacer especificarle una forma de acceder a la ip flotante dentro de las máquina virtual

        $ sudo route add -net 192.168.100.0/24 gw 192.168.122.60

Configurando compute node
============================

Como estamos utilizando un repositorio diseñado específicamente para instalar OFAgent ya tenemos la mayoría de las configuraciones hechas, solo tenemos que modificar las que varían de All-in-one
para esto vamos a la máquina que vamos usar como compute.

    $ nano ~/devstack/localrc

Descomentamos lo que indica compute node y comentamos lo que es para All-in-one node

    SERVICE_HOST=192.168.122.60
    # all-in-one node
    #disable_service n-net
    #enable_service q-svc q-agt q-dhcp q-l3 q-meta q-lbaas neutron
    # compute node
    disable_all_services
    enable_service n-cpu q-agt neutron

Corriendo devstack
==========================
 
Hay que ejecutar en **All-in-one node**

    $ cd ~/devstack/
    $ ./stack.sh

Luego se hace lo mismo en **Compute node**

    $ cd ~/devstack/
    $ ./stack.sh