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.
- 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 ejecutarapt update
. - La línea
package_upgrade: true
equivale a ejecutarapt 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.