Introducción a Openstack Client
- Francisco Javier Huete
- Servicios
- January 13, 2025
Í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