Introducción a Openstack Client

Índice

Instalación y configuración de OpenStack Client en un entorno virtual

Primero se crea el entorno virtual y se instala OpenStack client usando pip.

❯ python3 -m venv os
❯ source os/bin/activate
❯ pip install python-openstackclient

Para conectar a la cuenta de OpenStack hay que usar el fichero OpenStack RC. El fichero se descarga desde la interfaz web después de iniciar sesión y se ejecuta para autenticarse en OpenStack desde la línea de comandos.

❯ source "Proyecto de fhuemej702-openrc(1).sh"
Please enter your OpenStack Password for project Proyecto de fhuemej702 as user fhuemej702: 

Uso de OpenStack client

Gestión de claves ssh

Para crear una clave ssh:

❯ openstack keypair create --public-key ~/.ssh/id_rsa.pub ClaveSSH

Para ver las claves creadas en el proyecto:

❯ openstack keypair list
+----------+-------------------------------------------------+------+
| Name     | Fingerprint                                     | Type |
+----------+-------------------------------------------------+------+
| ClaveSSH | 6d:3c:7a:4d:a0:87:d5:b3:bf:94:2e:46:01:37:37:9f | ssh  |
+----------+-------------------------------------------------+------+

Gestión de grupos de seguridad

Para abrir el puerto 443 en el grupo de seguridad Default:

❯ openstack security group rule create --protocol tcp --remote-ip 0.0.0.0/0 --dst-port 443 default

Gestión de imágenes

El cliente de OpenStack permite subir imágenes al proyecto.

❯ openstack image create --container-format=bare --disk-format=qcow2 \
 --file cirros-0.6.2-x86_64-disk.img "Cirros 0.6.2"

También permite ver las imágenes disponibles en el proyecto.

❯ openstack image list
❯ openstack image list
+----------------------------------+---------------------------------+--------+
| ID                               | Name                            | Status |
+----------------------------------+---------------------------------+--------+
| ce5ca1e6-30d6-4e6b-b2da-         | Cirros 0.6.2                    | active |
| f9ca654a1d9a                     |                                 |        |
| e7caa035-5bb0-47fb-b9e8-         | Debian 12 Bookworm              | active |
| ef73dce54499                     |                                 |        |
| 1a39c3de-                        | Fedora-Cloud-Base-37-1.7.x86_64 | active |
| cf79-4d17-a470-a490ba89b366      |                                 |        |
| 52f6e1bd-                        | Rocky Linux 9                   | active |
| edc0-49e8-87e2-c99a3f173d41      |                                 |        |
| d57c4744-177a-4f53-8db9-         | Ubuntu 22.04 LTS                | active |
| 6368dc17f979                     |                                 |        |
| e2cfdd56-7474-4772-a43c-         | Ubuntu 24.04 LTS                | active |
| ad0429f4b78e                     |                                 |        |
| ffebc834-5c2f-4319-b5b8-         | cirros-0.6.2-x86_64-disk        | active |
| a0c360050d4f                     |                                 |        |
+----------------------------------+---------------------------------+--------+

También se pueden ver los sabores disponibles para crear instancias.

❯ openstack flavor list
+----+------------+------+------+-----------+-------+-----------+
| ID | Name       |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+------------+------+------+-----------+-------+-----------+
| 10 | vol.medium | 2048 |    0 |         0 |     2 | True      |
| 11 | vol.large  | 4096 |    0 |         0 |     2 | True      |
| 12 | vol.xlarge | 8192 |    0 |         0 |     4 | True      |
| 2  | m1.micro   |  256 |   10 |         0 |     1 | True      |
| 3  | m1.mini    |  512 |   10 |         0 |     1 | True      |
| 4  | m1.normal  | 1024 |   10 |         0 |     1 | True      |
| 5  | m1.medium  | 2048 |   20 |         0 |     2 | True      |
| 6  | m1.large   | 4096 |   20 |         0 |     2 | True      |
| 7  | m1.xlarge  | 8192 |   20 |         0 |     4 | True      |
| 8  | vol.mini   |  512 |    0 |         0 |     1 | True      |
| 9  | vol.normal | 1024 |    0 |         0 |     1 | True      |
+----+------------+------+------+-----------+-------+-----------+

Creación de configuración de instancias con Cloud-init

Para crear una instancia se usa el comando server create. Los parámetros necesarios para la creación de la instancia se pueden consultar con los comandos openstack flavor list, openstack image list, openstack netwrok list, etc.

❯ openstack server create --flavor m1.mini --image "Debian 12 Bookworm" --security-group default --key-name ClaveSSH --network "Red de fhuemej702" Taller1

En el fichero cloud-init se configura que esta instancia actualice los paquetes al iniciarse, que instale Apache2, que cree un usuario con contraseña y se le cambia el nombre y dominio.

#cloud-config
# Actualiza los paquetes
package_update: true
package_upgrade: true
# Instala el paquete apache2
packages:
  - apache2
# Configura el hostname y el fqdn
fqdn: maquina1.example.org
hostname: maquina1
manage_etc_hosts: true
# Crear dos usuarios, configura el acceso por sudo y añade clave pública ssh
users:
  - name: usuario1
    shell: /bin/bash
# Cambia las contraseña a los usuarios creados
chpasswd:
  expire: False
  users:
    - name: usuario1
      password: usuario
      type: text

El fichero se debe indicar durante la creación de la instancia.

❯ openstack server create --flavor m1.mini --image "Debian 12 Bookworm" --security-group default --key-name ClaveSSH --network "Red de fhuemej702" --user-data cloud-init.yaml Taller1

Conexión a instancias

Para conectarse a la instancia tiene que contar con una IP flotante. Se pueden ver las IP flotantes asignadas al proyecto.

openstack floating ip list

Si todas están en uso, se debe crear una nueva.

❯  openstack floating ip create ext-net
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2024-12-02T08:52:19Z                 |
| description         |                                      |
| dns_domain          |                                      |
| dns_name            |                                      |
| fixed_ip_address    | None                                 |
| floating_ip_address | 172.22.201.193                       |
| floating_network_id |                                      |
| id                  | 02d9a479-fffc-4522-b80a-22cf10506b61 |
| name                | 172.22.201.193                       |
| port_details        | None                                 |
| port_id             | None                                 |
| project_id          |                                      |
| qos_policy_id       | None                                 |
| revision_number     | 0                                    |
| router_id           | None                                 |
| status              | DOWN                                 |
| subnet_id           | None                                 |
| tags                | []                                   |
| updated_at          | 2024-12-02T08:52:19Z                 |
+---------------------+--------------------------------------+

Para asignarla a la nueva instancia:

❯ openstack server add floating ip Taller1 172.22.201.193

Con esta IP ya se puede establecer la conexión a la instancia.

❯ ssh javi@172.22.201.193
Linux maquina1 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

javi@maquina1:~$ 

Listar y eliminar instancias

Por último, el cliente por línea de comandos de OpenStack también permite listar las instancias creadas en el proyecto.

❯ openstack server list
+--------------+----------+--------+--------------+----------------+-----------+
| ID           | Name     | Status | Networks     | Image          | Flavor    |
+--------------+----------+--------+--------------+----------------+-----------+
| 10b4710e-    | Taller1  | ACTIVE | Red de fhuem | Debian 12      | m1.mini   |
| 8769-406c-   |          |        |    =10.0.0 | Bookworm       |           |
| 895e-        |          |        | .202, 172.22 |                |           |
| 9224bf20a880 |          |        | .201.193     |                |           |
| add49a45-    | Debian12 | ACTIVE | Red de fhuem | Debian 12      | m1.normal |
| 82ac-4f6f-   |          |        |     =10.0.0 | Bookworm       |           |
| a03c-        |          |        | .87, 172.22. |                |           |
| 419786d8e9db |          |        | 200.247      |                |           |
+--------------+----------+--------+--------------+----------------+-----------+

Y eliminarlas.

❯ openstack server delete Taller1
comments powered by Disqus

Relacionados

Qué es ARP y cómo funciona

El protocolo de resolución de direcciones (ARP) es el protocolo de comunicaciones responsable de encontrar la dirección MAC que corresponde a una determinada dirección IP. Lo hace a través de un conjunto de tramas de petición y respuesta.

Leer

Gestión de almacenamiento en Openstack

En este post se muestran algunos ejemplos de funcionamiento del cliente de OpenStack para la gestión del almacenamiento.

Leer

Creación de usuarios y políticas de seguridad en Debian

En este post se explica, a través de varios casos prácticos y ejemplos, el uso adecuado de los comandos básicos para la creación de usuarios y el establecimiento de políticas de seguridad en los sistemas operativos basados en Debian.

Leer