Este post detalla los pasos para instalar y configurar Cinder, el servicio de almacenamiento en bloque de OpenStack, en el nodo controlador (controller01). Incluimos los comandos necesarios para crear la base de datos, configurar los servicios y endpoints, y realizar la integración con Nova.

Crear la base de datos de Cinder

Nos conectaremos a MySQL para crear la base de datos y el usuario correspondiente:

vagrant@controller01:~$ sudo mysql

CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DB_PASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DB_PASS';
EXIT;

Crear el usuario de Cinder y asignar el rol admin

Cargaremos las credenciales de administrador y crearemos el usuario cinder dentro del proyecto service:

. admin-openrc
openstack user create --domain default --password CINDER_SVC_PASS cinder
openstack role add --project service --user cinder admin

+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 97735ce5873c42ac850e63f536a0eec9 |
| name                | cinder                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

Crear los servicios y endpoints de Cinder

Registraremos los servicios cinderv2 y cinderv3, así como sus endpoints para la región RegionOne:

openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | c5c0d788373e4d88ae8526a95269f4c4 |
| name        | cinderv2                         |
| type        | volumev2                         |
+-------------+----------------------------------+

openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | 27fbad310c2d4f2e823898751c3cd4f5 |
| name        | cinderv3                         |
| type        | volumev3                         |
+-------------+----------------------------------+

# Cinder v2
openstack endpoint create --region RegionOne volumev2 public  http://controller01:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://controller01:8776/v2/%\(project_id\)s
openstack endpoint create --region RegionOne volumev2 admin    http://controller01:8776/v2/%\(project_id\)s

# Cinder v3
openstack endpoint create --region RegionOne volumev3 public  http://controller01:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://controller01:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin    http://controller01:8776/v3/%\(project_id\)s

Instalar los paquetes de Cinder

sudo apt install -y cinder-api cinder-scheduler

Configurar la base de datos y RabbitMQ

Editaremos el archivo /etc/cinder/cinder.conf para incluir los siguientes parámetros:

[database]
connection = mysql+pymysql://cinder:CINDER_DB_PASS@controller01/cinder

[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller01

Configurar acceso al servicio de identidad (Keystone)

Añadiremos los parámetros de conexión con Keystone en el mismo archivo:

[DEFAULT]
auth_strategy = keystone

[keystone_authtoken]
auth_uri = http://controller01:5000
auth_url = http://controller01:5000
memcached_servers = controller01:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = KEYSTONE_SVC_PASS

Configurar IP del nodo y lock_path

[DEFAULT]
my_ip = 10.0.0.11
oslo_concurrency.lock_path = /var/lib/cinder/tmp

Sincronizar la base de datos de Cinder

vagrant@controller01:~$ sudo su -s /bin/sh -c "cinder-manage db sync" cinder

Configurar Nova para usar Cinder

Añadiremos la región de Cinder al archivo de configuración de Nova /etc/nova/nova.conf:

[cinder]
os_region_name = RegionOne

Reiniciaremos los servicios:

sudo service nova-api restart
sudo service cinder-scheduler restart
sudo service apache2 restart

Verificación del funcionamiento de Cinder

. admin-openrc
vagrant@controller01:~$ openstack volume service list
+------------------+--------------+------+---------+-------+----------------------------+
| Binary           | Host         | Zone | Status  | State | Updated At                 |
+------------------+--------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller01 | nova | enabled | up    | 2025-11-23T02:21:13.000000 |
+------------------+--------------+------+---------+-------+----------------------------+

Nota: si algún servicio aparece con State distinto de up o enabled, revisa los logs en /var/log/cinder/.