Como lanzar una instancia usando el CLI de OpenStack

Generalidades

Las máquinas virtuales que se ejecutan dentro de la nube se denominan instancias. Antes de poder lanzar una instancia, recopila los siguientes parámetros:

  • Origen de la instancia — Puede ser una imagen, un snapshot o un volumen de almacenamiento en bloque que contenga una imagen o un snapshot.
  • Nombre de la instancia — El nombre de tu instancia.
  • Flavor — El flavor de tu instancia define los límites de memoria RAM y vCPU para una instancia.
  • Datos del usuario (no requerido) — Cualquier archivo de datos de usuario. Un archivo de datos de usuario es una clave especial en el servicio de metadatos que contiene un archivo al que pueden acceder las aplicaciones compatibles con la nube en la instancia de invitado. Por ejemplo, una aplicación que usa datos de usuario es el sistema cloud-init, que es un paquete de código abierto de Ubuntu que está disponible en varias distribuciones de Linux y que maneja la inicialización temprana de una instancia en la nube.
  • Credenciales de acceso y seguridad — Esto incluye una o ambas de las siguientes credenciales:
    • Llave de emparejamiento — Estas son credenciales SSH que se inyectan en las imágenes cuando se lanzan. Para que el par de claves se inyecte correctamente, la imagen debe contener el paquete cloud-init. Crea al menos un par de claves para cada proyecto. Si ya has generado un par de claves con una herramienta externa, puedes importarlas a DreamCompute. Puedes utilizar el par de claves para varias instancias que pertenecen a ese proyecto.
    • Grupo de Seguridad — Define qué tráfico de red entrante y saliente se reenvía hacia y desde las instancias. Los grupos de seguridad tienen un conjunto de políticas de firewall, conocidas como reglas de grupo de seguridad.
  • Direcciones IP — Si es necesario, puedes asignar una dirección IP flotante (pública) a una instancia en ejecución.
  • Volumen — También puedes adjuntar un dispositivo de almacenamiento en bloque, o volumen, para almacenamiento persistente.

Puedes lanzar una instancia directamente desde una de las imágenes de OpenStack disponibles o desde una imagen que hayas copiado en un volumen persistente. El servicio OpenStack Image proporciona un conjunto de imágenes a las que pueden acceder los miembros de diferentes proyectos.

Reúne parámetros para lanzar una instancia

Los siguientes ejemplos usan el Cliente de línea de comandos OpenStack:

Enumera los flavors disponibles

Anota el ID del flavor que deseas usar para tu instancia:

[user@localhost]$ openstack flavor list
+-----+----------------+-------+------+-----------+-------+-----------+
| ID  | Name           |   RAM | Disk | Ephemeral | VCPUs | Is Public |
+-----+----------------+-------+------+-----------+-------+-----------+
| 100 | gp1.subsonic   |  1024 |   80 |         0 |     1 | True      |
| 200 | gp1.supersonic |  2048 |   80 |         0 |     1 | True      |
| 300 | gp1.lightspeed |  4096 |   80 |         0 |     2 | True      |
| 400 | gp1.warpspeed  |  8192 |   80 |         0 |     4 | True      |
| 50  | gp1.semisonic  |   512 |   80 |         0 |     1 | True      |
| 500 | gp1.hyperspeed | 16384 |   80 |         0 |     8 | True      |
+-----+----------------+-------+------+-----------+-------+-----------+

Lista de las imágenes disponibles

Anota el ID de la imagen desde la que deseas iniciar tu instancia:

[user@localhost]$ openstack image list
+--------------------------------------+---------------+-------------+
| ID                                   | Name          | Status      |
+--------------------------------------+---------------+-------------+
| 76a93b4b-566c-41eb-ab9d-26ce5be04010 | CentOS-7      | active      |
| 0c35ed32-a053-4481-8bac-efd3a5f9513e | CoreOS-Stable | active      |
| 0415d69c-28b3-4bfd-ab64-711c699c60b9 | Debian-8      | active      |
| cbd81524-f477-4d7c-963c-84699acf711b | Debian-9      | active      |
| b0a29bbc-dd13-4305-8380-043b86356edf | Fedora-25     | active      |
| 03b1467b-4c5d-4f85-aa62-035841a88aca | Fedora-29     | active      |
| 03a87e23-77e5-403b-a437-10e0b28b2583 | Ubuntu-14.04  | active      |
| 04f22a69-bdfe-4c2d-b996-aab8d69e4a0e | Ubuntu-16.04  | active      |
| fc6510a1-c057-4a74-bac9-3d8b74270038 | Ubuntu-17.10  | active      |
| b86ca11c-e7c1-4ae1-8580-62c464b19dfd | Ubuntu-18.04  | active      |
+--------------------------------------+---------------+-------------+

También puedes filtrar la lista de imágenes usando grep para encontrar una imagen específica, de la siguiente manera:

[user@localhost]$ openstack image list | grep -i Ubuntu-14
| 03a87e23-77e5-403b-a437-10e0b28b2583 | Ubuntu-14.04 | active      |

Enumera los grupos de seguridad disponibles.

Anota el ID del grupo de seguridad que deseas usar para tu instancia:

[user@localhost]$ openstack security group list
+-----------------------+---------+------------------------+-------------------------+
| ID                    | Name    | Description            | Project                 |
+-----------------------+---------+------------------------+-------------------------+
| 29abef85-b89f-43a0... | default | Default security group | e52ede2a420548cf25...   |
+-----------------------+---------+------------------------+-------------------------+

Si no has creado ningún grupo de seguridad, puedes asignar la instancia sólo al grupo de seguridad predeterminado. Puedes ver las reglas de un grupo de seguridad específico ejecutando lo siguiente:

[user@localhost]$ openstack security group show default

Lista de llaves de emparejamiento disponibles

Enumera las llaves de emparejamiento disponibles y anota el nombre de las claves que utilizas para el acceso SSH.

[user@localhost]$ openstack keypair list

Lanzar una instancia desde una imagen

Una vez que hayas reunido los parámetros necesarios, ahora puedes crear una instancia. En este punto, debes tener las siguientes credenciales:

  • Flavor — 300
  • Imagen — afa49adf-2831-4a00-9c57-afe1624d5557
  • Llave de emparejamiento — myKey
  • Grupo de seguridad — 29acef25-b59f-43a0-babf-6a5bb5cc7bed
  • Nombre del servidor — Puedes nombrarlo como desees, pero en este ejemplo se utilizará myNewInstance.

    Si inicias una instancia con un INSTANCE_NAME de más de 63 caracteres, Compute lo trunca automáticamente cuando lo convierte en un nombre de host para garantizar la funcionalidad correcta de dnsmasq.

Corre lo siguiente para crear tu instancia.

Este ejemplo divide el comando en líneas separadas.

[user@localhost]$ openstack server create --flavor 300 \
                        --image afa49adf-2831-4a00-9c57-afe1624d5557 \
                        --key-name myKey \
                        --security-group 29abef85-b89f-43a0-babf-6a5bb5cc7bed \
                        myNewInstance

El carácter de barra invertida \ se usa al ingresar un comando largo. Cuando ingresas \, el comando de terminal continúa a la siguiente línea hasta que termine de ingresarlo.

También puedes eliminar el carácter \ y poner cada parámetro en una sola línea. Por ejemplo:

[user@localhost]$ openstack server create --flavor 300 --image afa49adf-2831-4a00-9c57-afe1624d5557 --key-name myKey --security-group 29abef85-b89f-43a0-babf-6a5bb5cc7bed myNewServer

Si la instancia se creó correctamente, verás un resultado como este:

+-----------------------------+-------------------------------------------------+
| Field                       | Value                                           |
+-----------------------------+-------------------------------------------------+
| OS-DCF:diskConfig           | MANUAL                                          |
| OS-EXT-AZ:availability_zone | iad-2                                           |
| OS-EXT-STS:power_state      | NOSTATE                                         |
| OS-EXT-STS:task_state       | scheduling                                      |
| OS-EXT-STS:vm_state         | building                                        |
| OS-SRV-USG:launched_at      | None                                            |
| OS-SRV-USG:terminated_at    | None                                            |
| accessIPv4                  |                                                 |
| accessIPv6                  |                                                 |
| addresses                   |                                                 |
| adminPass                   | RPwLFr5ze5fB                                    |
| config_drive                |                                                 |
| created                     | 2017-10-10T01:25:10Z                            |
| flavor                      | gp1.lightspeed (300)                            |
| hostId                      |                                                 |
| id                          | 76b3adb3-1f5a-4276-8b82-abdf21352946            |
| image                       | CentOS-6 (afa49adf-2831-4a00-9c57-afe1624d5557) |
| key_name                    | myKey                                           |
| name                        | myNewInstance                                   |
| progress                    | 0                                               |
| project_id                  | e52ece2a560548cf950ba86297300079                |
| properties                  |                                                 |
| security_groups             | name='29abcf85-b79f-43b0-babf-6a5bb5cc7bed'     |
| status                      | BUILD                                           |
| updated                     | 2024-03-29T01:25:10Z                            |
| user_id                     | 29825415c4be4d49c27e787a63eb8320                |
| volumes_attached            |                                                 |
+-----------------------------+-------------------------------------------------+

Un estado BUILD indica que la instancia se ha iniciado, pero aún no está en línea. Un estado ACTIVE indica que la instancia está activa. Copia el valor de la contraseña administrativa del campo adminPass. Puedes utilizar esta contraseña más tarde para iniciar sesión en tu instancia.

También podrás ver la nueva instancia en tu panel de DreamCompute.

Para obtener más opciones, usa el siguiente comando o ve la documentación de OpenStack a continuación.

[user@localhost]$ openstack help server create

También puedes colocar archivos locales arbitrarios en el sistema de archivos de la instancia en el momento de la creación mediante el parámetro --file <dest-filename=source-filename>. Puedes almacenar hasta cinco archivos.

Por ejemplo, si tienes un archivo de claves autorizadas especiales llamado special_authorized_keysfile que deseas colocar en la instancia en lugar de usar la inyección de clave SSH normal, puedes agregar la opción –file como se muestra en el siguiente ejemplo.

--file /root/.ssh/authorized_keys=special_authorized_keysfile

Comprueba si la instancia está en línea

Utiliza el comando list para ver una lista de todas las instancias:

[user@localhost]$ openstack server list
+--------------------------------------+--------------+--------+----------------------------------------------------+
| ID                                   | Name         | Status | Networks               | Image    | Flavor         |
+--------------------------------------+--------------+--------+------------------------+----------+----------------+
| 76b3adb3-1f5a-4276-8b82-abdf21352946 | myNewInstance| ACTIVE | public=xxx.xxx.xxx.xxx | CentOS-6 | gp1.lightspeed |
| 246e50b8-29fa-4310-b972-a71cd0df43bf | Ubuntu14     | ACTIVE | public=xxx.xxx.xxx.xxx |          | gp1.subsonic   |
+--------------------------------------+--------------+--------+------------------------+----------+----------------+

La lista muestra la ID, el nombre, el estado, las direcciones IP, la imagen y el flavor de todas las instancias del proyecto.

Si no proporcionas una llave de emparejamiento, no podrás acceder a la instancia.

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?