OpenStack

Trabajo con Instancias

Alberto Molina Coballes / @alberto_molina y José Domingo Muñoz Rodríguez / @Pledin_JD

Theme by reveal.js

  1. Terminología de OpenStack
  2. Instancias, imágenes e instantáneas con Horizon
  3. Instancias, imágenes e instantáneas con nova cli
  4. Funcionamiento interno de las instancias

Conceptos previos (I)

  • Imagen: Imagen de sistema operativo preconfigurado que se utiliza como base para crear instancias. Dentro del cloud habrá diferentes imágenes para cada tipo de instacia que se quiera utilizar.
  • Instancia: Instancia de una imagen que se crea a demanda del usuario en uno de los nodos del cloud.
  • Sabor: Define para una instancia el número de CPUs virtuales, la RAM, si dispone o no de discos efímeros, etc.

Conceptos previos (II)

  • IP fija: Direccion IP con la que se crean una instancia en una red y que se utiliza para comunicacion interna. La dirección IP fija no cambia durante la vida de la instancia.
  • IP flotante: Direccion IP asociada a una instancia en un momento dado para poder acceder a ella desde fuera. Una IP flotante puede asignarse a otra instancia diferente cuando se estime oportuno.
  • Grupo de seguridad: Reglas de cortafuegos que controlan el acceso a las instancias.
  • Par de claves ssh: Par de claves RSA pública/privada utilizadas para acceder por ssh a las instancias desde fuera del cloud.

Instancias con Horizon

  • Utilizar instancias creadas a partir de la imagen cirros
  • Subir una imagen de Ubuntu y crear una instancia
  • Modificar la configuración de la instancia Ubuntu y crear una instantánea
  • Crear una nueva imagen a partir de la instantánea y comprobar su estado

Instancias con OpenStack CLI

  • Cada componente de OpenStack tiene su propio cliente de línea de comandos con toda las funcionalidades
  • Existe un cliente "unificado" (nova) que permite utilizar las funcionalidades básicas de los componentes principales

Configuración del entorno

  • Obtenemos el fichero openrc de Horizon (Acceso y seguridad->Acceso a la API->Descargar archivo RC de OpenStack)
  • Instalamos en el equipo el cliente de línea de comandos de OpenStack (con este método instalamos la última versión):
    
    # apt-get install python-pip
    # pip install python-novaclient
    	
  • Iniciamos la sesión del usuario:
    
    $ source proy-usuario22.sh
    	
  • Comprobamos que funciona correctamente:
    
    $ nova flavor-list
            

Instancias (1)


#Listar de imágenes
$ nova image-list

# Listar sabores
$ nova flavor-list

# Listar las redes que tenemos definidas
$ nova net-list

# Listar grupos de seguridad
$ nova secgroup-list

# Listar claves ssh
$ nova keypair-list
	

Instancias (2)


# Creamos una instancia
$ nova boot --flavor FLAVOR_ID --image IMAGE_ID
            --security-groups SEC_GROUP --key-name KEY_NAME \
	    --nic net-id=NET_ID \
	    INSTANCE_NAME

# Ejemplo
$ nova boot --flavor m1.tiny --image cirros-0.3.1-x86_64-uec \
            --security-groups default --key-name mis_claves 
            --nic net-id=d8d4d80e-923f-47fc-ac88-b9079328080b \
            instancia_prueba
	

Instancias (3)


# Pausar instancia
$ nova pause INSTANCE_NAME 
$ nova unpause INSTANCE_NAME 

# Suspender/resumir
$ nova suspend INSTANCE_NAME
$ nova resume INSTANCE_NAME

# Reiniciar
$ nova reboot --hard SERVER

# Borrar
$ nova delete INSTANCE_NAME

# Acceder por consola
$ nova get-vnc-console INSTANCE_NAME novnc
	

IPs Flotantes


# Listar el pool de ip flotantes
$ nova floating-ip-pool-list

# Listar las ip flotantes que asignadas al proyecto
$ nova floating-ip-list

# Asignar una IP flotante al proyecto
$ nova floating-ip-create

# Asociar una IP flotante a una instancia
$ nova floating-ip-associate instancia_prueba 172.24.4.227

# Desasociar una IP flotante de una instancia
$ nova floating-ip-disassociate instancia_prueba 172.24.4.227
	

Grupos de seguridad


# Listar grupos de seguridad
$ nova secgroup-list

# Crear un grupo de seguridad
$ nova secgroup-create cortafuegos

# Listar reglas de un grupo de seguridad
$ nova secgroup-list-rules default

# Añadir una regla a un grupo de seguridad
$ nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
	

Claves SSH


# Crear un par de claves ssh
$ nova keypair-add mi_claves > mi_claves.pem
$ chmod 600 mi_clave.pem

# Listar las claves ssh
$ nova keypair-list
	

Instantáneas


# Crear una instantánea de una instancia
$ nova image-create --poll instancia_prueba snapshot_prueba

# Listar instantáneas (e imágenes)
$ nova image-list

# Para crear una nueva instancia se puede usar esta instantánea como cualquier
# otra imagen
  

Conceptos avanzados

  • ¿Dónde se ubican las imágenes?
  • ¿Cómo se clona la imagen al disco de la instancia?
  • ¿En qué directorio se encuentran definidas las máquinas virtuales?