INSTALANDO OPENSTACK EN
CENTOS 6
Breve introduccion
Openstack esta por ahora sonando mucho como una alternativa seria a una
cloud privada opensource, de manera que la gestion y utilizacion de una
cloud no dependa unicamente de terceros como Amazon, Rackspace, entre
muchos otros.
Hace tiempo que vengo probandolo y realmente es fantastico. Cuando se
trabaja con ambientes de produccion y desarrollo, la gestion de maquinas
virtuales (y el provisionamiento de los sysadmins para los desarrolladores)
consume la mayor parte del tiempo, no porque sean complicada si no que
de por si consumen tiempo. Y aunque hay herramientas de
provisionamiento de maquinas virtuales como Vagrant, o sea posible
lograrlo con Chef, Puppet, la mayoria de alternativas son por lineas de
comando.
Openstack basicamente una pila de herramientas (stack), un set de
herramientas opensource que ya existian o que en su efecto formaron una
nuevo software. Basicamente consiste en un Dashboard (escrito en Python,
utilizando Apache o Nginx), un hypervisor (KVM/qemu, Xen, VMware o
incluso Docker), un block storage (Openstack Cinder, Ceph, GlusterFS), un
gestor de red (OpenvSwitch + Iptables + Bridge-utils).
Ademas de esto es posible tener un object storage (Openstack Swift),
similar a Amazon S3, una base de datos como SaaS, un medidor de
rendimiento de VMs (Openstack Ceilometer), un servicio de orquestracion
de VMs (Openstack Heat). Estas herramientas son adicionales puesto que
ofrecen ayuda para ambientes grandes (+100 VMs) y en los cuales se
escala constantemente.
Cada recurso esencial ha sido divido y separado por proyectos de manera
que se pueda trabajar sobre ellos optimamente. Entre los mas importantes
estan CPU (Nova), Disco duro (Cinder), y Red (Neutron).
De la misma manera, cada proyecto no esta ligado unicamente a una
herramienta para funcionar, en el caso de Nova la gestion de CPUs que se
realiza a traves de un hypervisor, puede ser gestionada por KVM o Xen (asi
fue como empezo), dependiendo de por cual se opta a la hora de
implementar Openstack por completo. Aqui pueden encontrar mas detalle,
o empezar por la version en castellano.
Sin ir muy lejos Rackspace, uno de los principales contribuidores y
creadores de Openstack, utiliza a Xen como Hypervisor, cuando KVM es la
alternativa mas usada por la mayoria.
Instalacion
Dado que son muchas las herramientas involucradas en todo el stack,
puede que tome un cierto tiempo lograr instalarlo por completo (si se parte
desde cero).
Actualmente existen alternativas como Mirantis, que ofrece una ISO para
instalable (aunque sobre VirtualBox/VMware), tambien esta Devstack que
provee scripts de instalacion muy utiles, disponible para Ubuntu, Debian,
Fedora.
Para mi caso, despues de probar los ambos mencionados, la solucion mas
sencilla me parece es usar Openstack RDO, que es el esfuerzo de RedHat
por proporcionar una instalacion automatica y sencilla de Openstack,
ademas de ofrecer la certeza que el proceso de instalacion es correcto. Esta
disponible para RedHat, Fedora, CentOS.
RDO es un conjunto de scripts y de modulos de Puppet que no solo instalan
todos los paquetes necesario (porque en verdad son bastantes) sino que
tambien los configura. Lo entrega caliente del horno.
En este oportunidad lo haremos sobre CentOS 6.6, en mi caso el driver de
mi tarjeta grafica no funcionaba bien en CentOS 7 asi que tuve que optar
por CentOS 6.
La guia rapida ofrece casi todo lo necesario para tener Openstack
configurado (para CentOS 7), aun asi indico cuales son los procedimientos
necesarios segun nuestro caso.
Ojo, mi recomendacion es que lo hagan en una instalacion fresca de
CentOS, si no tienes un knowhow notable sobre Linux puede que sufras si
se detiene la instalacion o los parametros asignados son incorrectos.
Empecemos!
Lo primero que debemos hacer es remover/desahabiltar NetworkManager
ya que hace conflicto con los scripts de red basicos de red.
[root@alphonse ~]# chkconfig NetworkManager of
[root@alphonse ~]# service NetworkManager stop
[root@alphonse ~]# service network start
Los scripts del demonio de red deberan estar presentes
/etc/sysconfig/network-scripts/icfg-*
Actualmente el release de Openstack es Juno, y para fin de mes saldra Kilo.
Para el caso de CentOS 6, Juno solo se encuentra disponible para CentOS 7,
asi que solo la version anterior se encuentra disponible, Openstack
Icehouse.
[root@alphonse ~]# yum update -y
[root@alphonse ~]# yum install -y [Link]
Instalamos el paquete primario
[root@alphonse ~]# yum install -y openstack-packstack
Dado que, para mi caso, he instalado Openstack en un unico host la
opcion allinone es necesaria. En caso de que se quiera instalar los
servicios de Storage y CPU separados en hosts o servidores distintos, habra
que indicarle a PackStack la opcion y valores correspondientes.
[root@alphonse ~]# packstack --allinone
Luego de esto, alrededor de entre 25 a 50 minutos, dependiendo de tu
conexion a internet, tomara en instalarse todo.
El instalador, una vez culminado el proceso, dejara un archivo con los
accesos correspondientes, ademas de un log del proceso de instalacion. Los
accesos estaran en el home del usuario usado a traves del terminal. Esto es
lo que tengo:
keystonerc_admin
keystonerc_demo
[Link]
En caso sea necesario ejecutar alguna tarea a partir de la linea de
comandos, sera necesario utilizar los accessos (credenciales de
autenticacion) dentro de esos archivos, este es digamos un nivel de
seguridad dentro del mismo host.
[root@alphonse ~]# source /root/keystonerc_admin
Si no ejecutamos esto, que lo unico que hace es cargar los passwords como
variables globales en la shell, no podriamos hacer ni siquiera un listado
simple.
[root@alphonse ~(keystone_admin)]# nova image-list
+--------------------------------------+-------------------+--------+--------+
| ID
| Name
| Status | Server |
+--------------------------------------+-------------------+--------+--------+
| a44ef8e9-1780-4c83-afcd-409a2a917483 | CentOS 6.6 x86_64 | ACTIVE |
| 1be35705-1a10-455d-a6e4-9f1cdcb5cbec | cirros
| ACTIVE |
|
+--------------------------------------+-------------------+--------+--------+
Una vez terminado el proceso de instalacion, se nos notificara y podremos
acceder a traves de[Link]
Los accesos del usuario admin estan en el archivo keystonerc_admin,
tambien es recomendable cambiar el password una vez dentro del
dashboard.
Aunque el proceso de instalacion haya terminado, es necesario realizar un
par
de
pasos
mas.
Por lo menos en esta version de PackStack aun no esta automatizado
configuracion correcta del bridging entre NIC (interfaz de red) principal y las
interfaces bridge creadas para cada tipo de red (para si) que Openstack
utiliza. Este proceso no es necesario hasta el momento en que se empiezan
a crear IPs flotantes.
Para ello sera necesario reeditar los scripts de red, recomiendo sacar una
copia de los mismos antes de modificarlos.
Crear el siguiente archivo
[root@alphonse ~]# touch /etc/sysconfig/network-scripts/ifcfg-br-ex
Incluir lo siguiente
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=[Link]
NETMASK=[Link]
GATEWAY=[Link]
DNS1=[Link]
DNS2=[Link]
Modificar o incluir lo siguiente, de manera que se vea asi
[root@alphonse ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=14:DA:E9:22:1E:70
TYPE=OVSPort
OVS_BRIDGE=br-ex
DEVICETYPE=ovs
NM_CONTROLLED=no
ONBOOT=yes
En mi caso, la red de mi router es [Link]/24 y la tarjeta de red que
utilizo es la eth0, le he asignado una IP fija (dado que tengo reglas de NAT
desde afuera hacia este host), aunque tambien puede hacerse con DHCP.
Tecnicamente he mantenido los valores de red que tenia en un comienzo,
solo se los pase a la interfaz bridge.
Tambien hay que incluir lo siguiente
network_vlan_ranges = physnet1
bridge_mappings = physnet1:br-ex
en el archivo
/etc/neutron/[Link]
Reiniciamos la red
[root@alphonse ~]# service network restart
y es necesario eliminar un router creado por defecto
[root@alphonse
[root@alphonse
[root@alphonse
[root@alphonse
~]# cd /root
~]# source keystonerc_admin
~(keystone_admin)]# neutron router-gateway-clear router1
~(keystone_admin)]# neutron subnet-delete public_subnet
Ojo, recordar que se podra borrar correctamente siempre y cuando no se
haya creado ninguna otra red ni ningun router a traves del dashboard o la
terminal.
Bien, ahora lo que haremos sera, a partir de un segmento o bloque (pool)
de IPs locales en nuestra red, asignarlas a Openstack, para Openstack este
pool vendran a ser IPs externas (aunque tecnicamente esten en la LAN).
De esta forma al asignarle una IP externa a una VM le estaremos
asignando una IP dentro de la red local.
En mi caso asigne alrededor de 100 IPs de mi red local.
[root@alphonse ~(keystone_admin)]# neutron subnet-create --name public_subnet
--enable_dhcp=False --allocation-pool=start=[Link],end=[Link]
--gateway=[Link] public [Link]/24
Seguidamente volvemos a crear el router que habiamos borrado
[root@alphonse ~(keystone_admin)]# neutron router-gateway-set router1 public
Una vez hecho esto, Openstack ya esta listo para ser usado!
Lo siguiente por hacer sera crear una VM en Openstack