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

Interconexión entre dos servidores Postgres

En este post se explica brevemente cómo se puede establecer una interconexión entre dos servidores PostgreSQL.

Leer

Configuración NAT en routers Mikrotik en Openstack

En este post se configura el funcionamiento del NAT en una red creada en Openstack que usa routers Mikrotik. NAT (Network Address Translation o traducción de direcciones de red) es un mecanismo que consiste en modificar la información de direccionamiento en los paquetes IP que atraviesan un router.

Leer

Recolección centralizada de logs de sistema mediante jouranld

Para configurar un servidor de journald en la red local es necesario que todos los equipos de la red cuenten con el componente systemd-journal-remote instalado. Este componente de systemd permite a los diferentes nodos de la red interactuar entre sí y trasladar la información relativa a los logs del sistema desde los clientes al servidor de logs.

Leer