Saltar a contenido

Cómo crear instancias en OpenStack

1. Iniciar sesión

En primer lugar, accedemos a Horizon, el servicio web que nos permite interactuar con OpenStack. Para ello, podemos utilizar cualquiera de las siguientes URLs:

¿Qué tengo que poner en el campo Dominio?

En la página de inicio de sesión aparece un campo llamado Dominio. En este campo hay que indicar que el dominio es Default. Cuando el LDAP del centro esté en producción habrá que indicar el dominio del LDAP.

2. Visión general

Al entrar en OpenStack veremos un panel de control donde se muestra el estado de las cuotas del proyecto.

3. Instancias

Seleccionamos la opción Computación > Instancias.

Seleccionamos el botón Lanzar instancia.

4. Origen

En este paso tenemos que seleccionar el origen de arranque que vamos a utilizar para crear la instancia. Las opciones disponibles son las siguientes:

  • Image: Permite crear una instancia a partir de una imagen preconfigurada.
  • Instance Snapshot: Permite crear una instancia a partir de una instantánea de una instancia.
  • Volume: Permite crear una instancia a partir de un volumen.
  • Volumne Snapshot: Pertmite crear una instancia a partir de una instantánea de un volumen.

Veamos un ejemplo de cada caso.

4.1 Origen: Image

En esta sección vamos a describir cómo crear una instancia a partir de una Imagen.

También tenemos la opción de crear un volumen asociado a la imagen, pero de momento vamos a seleccionar que No queremos un nuevo volumen.

Como hemos seleccionado que el origen de la instancia será una imagen, ahora tenemos que seleccionar cuál será la imagen base de la que vamos a partir. De momento hemos precargado algunas imágenes, pero si necesitas alguna que no está en este listado la podemos incluir.

El listado de imágenes disponibles actualmentes es el siguiente:

Nombre de la imagen Tamaño Formato
cirros 15.58 MB QCOW2
debian-10 542.18 MB QCOW2
fedora-35 359.44 MB QCOW2
fedora-37 470.00 MB QCOW2
freebsd-13 622.07 MB QCOW2
opensuse-15.2 539.83 MB QCOW2
opensuse-sles15-sp4 275.21 MB QCOW2
plesk-ubuntu-22-18.0.56 7.74 GB QCOW2
ubuntu-20.04 567.13 MB QCOW2
ubuntu-22.10 648.94 MB QCOW2
ubuntu-23.04 714.81 MB QCOW2
windows-server-2012 11.18 GB QCOW2

En este ejemplo vamos a seleccionar la imagen ubuntu-22.10.

Una vez que hemos seleccionado la imagen, la configuración que nos aparece en este paso debe ser similar a la que se muestra en la siguiente imagen.

4.2 Origen: Instance Snapshot

Esta sección está en progreso

Esta sección está en progreso

4.3 Origen: Volume

Esta sección está en progreso

Esta sección está en progreso

Referencias:

4.4 Origen: Volume Snapshot

Esta sección está en progreso

Esta sección está en progreso

5. Sabor

En este paso seleccionamos el sabor que tendrá en la instancia. Esto se refiere a las características hardware que tendrá la instancia, como número de vCPUs, memoria RAM, disco, etc.

Nombre VCPUS RAM Total de Disco Disco raíz Disco efímero
m1.nano 1 128 MB 10 GB 10 GB 0 GB
m1.micro 1 256 MB 10 GB 10 GB 0 GB
m1.mini 1 512 MB 10 GB 10 GB 0 GB
m1.normal 2 1 GB 10 GB 10 GB 0 GB
m1.medium 2 2 GB 10 GB 10 GB 0 GB
m1.large 4 4 GB 20 GB 20 GB 0 GB
m1.xlarge 4 8 GB 20 GB 20 GB 0 GB

En este ejemplo vamos a seleccionar el sabor m1.normal.

El sabor que hemos seleccionado debe aparecer en el listado superior, en la sección Asignados.

6. Red

En este paso seleccionamos a qué red queremos conectar nuestra instancia.

7. Puertos de red

En este paso seleccionamos los puertos de red. En este ejemplo no vamos a utilizar ninguno.

8. Grupo de seguridad

En este paso seleccionamos el grupo de seguridad que le vamos a asignar a la instancia. En el grupo de seguridad se configurar las reglas del firewall, indicando los puertos/protocolos a los que vamos a permitir/denegar el acceso.

Cada usuario tiene asignado un grupo de seguridad por defecto con dos reglas, una para permitir el tráfico ICMP y otra para permitir conexiones por SSH.

Si pinchamos sobre el icono de la flecha podemos ver las reglas que tiene el grupo de seguridad. Estas reglas se pueden editar desde el panel de control.

9. Par de claves SSH

En este paso seleccionamos las claves SSH que vamos a utilizar para conectar con la instancia.

Existen dos posibilidades:

  • Crear un par de claves. En esta opción vamos a crear un par de claves (Pública y Privada) desde el panel de control de OpenStack. OpenStack se quedará con la clave pública para inyectarla en las instancias y nosotros tendremos que descargarnos la clave privada para poder conectarnos con las instancias.

  • Importar un par de claves. En esta opción podemos importar una clave pública que ya tengamos creada en nuestro equipo de trabajo.

Veamos un ejemplo de cada caso.

9.1 Crear un par de claves

Indicamos un nombre y un tipo de clave, en nuestro caso seleccionaremos Clave SSH.

Al pulsar sobre el botón Crear un par de claves, OpenStack se quedará con la clave pública y nos mostrará el texto de la clave privada. Esta clave sólo se mostrará en este paso, por lo tanto, es muy importante guardar esta clave en algún directorio de nuestra máquina local.

Una vez que hemos creado el par de claves, nos aparecerá que esta clave es la que se va a utilizar para inyectarla en la instancia.

Las claves SSH se pueden reutilizar

No es necesario crear un par de claves cada vez que se crea una instancia, las claves se pueden reutilizar, de hecho, este es el modo de uso recomendado.

9.2 Importar un par de claves

La otra opción es importar una clave pública que ya tengamos creada en nuestra máquina. Si seleccionamos esta opción sólo tendremos que indicar un nombre para la clave pública, el tipo de clave (Clave SSH) y pegar el contenido de la clave pública.

Una vez que hemos importado la clave pública, se le asignará automáticamente a nuestra instancia.

10. Configuración

En este paso podemos definir:

  • un script de bash con los comandos que queremos que se ejecuten automáticamente al iniciar la instancia,
  • un archivo YAML de configuración de cloud-init.

10.1 Configuración: Script de bash

Al crear una instancia podemos indicar un script de bash que se ejecutará automáticamente al iniciar la instancia. Este script se puede utilizar para realizar tareas de configuración de la instancia, como por ejemplo, instalar paquetes.

Ejemplo de script de bash

#!/bin/bash

# Actualizamos la lista de paquetes
apt update

# Instalamos el paquete apache2
apt install apache2 -y

Si utilizamos este ejemplo, al iniciar la instancia se instalará el paquete apache2 y tendremos un servidor web Apache funcionando en la instancia.

10.2 Configuración: cloud-init

cloud-init es una utilidad que permite realizar la configuración inicial de una máquina virtual o una instancia que se ejecuta en un proveedor de cloud computing como AWS, Azure, OpenStack, entre otros.

Algunas de las tareas que se pueden realizar con cloud-init son crear usuarios, instalar paquetes de software, configurar redes, configurar claves SSH, etc.

Los archivos de configuración cloud-config son archivos de texto plano en formato YAML que contienen las instrucciones de configuración inicial de la instancia.

Ejemplo para configurar la contraseña del usuario por defecto

En este ejemplo vamos a modificar la contraseña del usuario que esté configurado en la imagen como usuario por defecto. Además vamos a indicar que la contraseña no caduca y que se puede acceder por SSH con contraseña.

#cloud-config
password: nueva_password
chpasswd: { expire: False }
ssh_pwauth: True
  • La primera línea con el texto #cloud-config es obligatoria.
  • La clave password indica cuál será la nueva contraseña del usuario de la imagen.
  • La clave chpasswd indica que la contraseña no caduca y no tiene que ser cambiada después de iniciar sesión la primera vez.
  • La clave ssh_pwauth indica que se habilita el acceso por SSH con contraseña.

Info

Para poder modificar la contraseña del usuario mediante el archivo cloud-config tiene que crear la instancia sin asignarle una clave SSH.

Ejemplo para instalar el servidor web nginx

En este ejemplo vamos a instalar el servidor web nginx y vamos a iniciar el servicio.

#cloud-config
package_update: true
package_upgrade: true
packages:
  - nginx
runcmd:
  - systemctl start nginx
  • La línea package_update: true equivale a ejecutar apt update.
  • La línea package_upgrade: true equivale a ejecutar apt upgrade -y. Tenga en cuenta que esta operación puede tardar varios minutos en algunos casos.

Referencias:

11. Grupo de servidores

En este ejemplo no es necesario utilizar esta opción.

12. Sugerencias de planificación

En este ejemplo no es necesario utilizar esta opción.

13. Metadatos

En este ejemplo no es necesario utilizar esta opción.

Para finalizar y crear nuestra instancia pulsamos sobre el botón Ejecutar instancia.

14. IP Flotante

Una vez que hemos creado la instancia podemos ver su estado en el listado de instancias. Para que la instancia sea accesible fuera de la red de OpenStack hay que asignarle una IP Flotante.

Para asociarle una IP flotante a la instancia, en primer lugar, hay que crearla. Para crearla podemos pulsar en el icono con el símbolo +. Si tuviésemos algunas direcciones IPs flotantes ya creadas y estuviesen sin asignar a ningún recurso, entonces aparecerían en el desplegable.

Indicamos en qué red estará la IP flotante. Por defecto, aparecerá que estará en la red-externa, que es la red 172.16.0.0/16.

Una vez que se ha creado la IP flotante nos aparecerá su valor en el desplegable que tiene la etiqueta Dirección IP, y seguidamente, tendremos que indicar a qué instancia la vamos a asociar.

Si la operación se realiza con éxito, podremos ver en el listado de instancias que la instancia tiene dos direcciones IP asociadas: - Una IP en de la red interna (10.0.0.0/24) - Una IP flotante en de la red externa (172.16.0.0/16)

Podemos obtener una visión del estado de la topología de la red desde el apartado Red > Topología Red.