Implementación del Servicio de Identidad Keystone en CentOS 7 para OpenStack

Preparación de la Base de Datos para Keystone

El primer paso fundamental es configurar el motor de base de datos para almacenar la información de identidad. Accedemos a MariaDB/MySQL como superusuario:

mysql -u root -p

Una vez dentro de la consola de la base de datos, procedemos a crear el esquema y asignar los permisos necesarios para el usuario encargado de gestionar Keystone:

CREATE DATABASE keystone_store;

GRANT ALL PRIVILEGES ON keystone_store.* TO 'keystone_admin'@'localhost' \
IDENTIFIED BY 'SECURE_DB_PASS';

GRANT ALL PRIVILEGES ON keystone_store.* TO 'keystone_admin'@'%' \
IDENTIFIED BY 'SECURE_DB_PASS';

FLUSH PRIVILEGES;
exit;

Instalación de Paquetes y Componentes WSGI

Keystone se ejecuta comúnmente detrás de un servidor web Apache utilizando el módulo WSGI. Instalamos los paquetes necesarios desde los repositorios de OpenStack:

yum install openstack-keystone httpd mod_wsgi -y

Configuración del Servicio de Identidad

Para mantener una configuración limpia, es recomendable respaldar el archivo original y generar uno nuevo sin comentarios ni líneas en blanco:

cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.org
grep -Ev "^$|#" /etc/keystone/keystone.conf.org > /etc/keystone/keystone.conf

Utilizaremos la herramienta openstack-utils para definir la cadena de conexión a la base de datos y el proveedor de tokens (Fernet):

yum install -y openstack-utils

# Configurar la conexión a MariaDB (reemplazar IP_CONTROLLER por la IP real)
openstack-config --set /etc/keystone/keystone.conf database connection \
mysql+pymysql://keystone_admin:SECURE_DB_PASS@192.168.1.100/keystone_store

# Definir el proveedor de tokens
openstack-config --set /etc/keystone/keystone.conf token provider fernet

Sincronización de Base de Datos y Gestión de Claves

Debemos inicializar el esquema de la base de datos ejecutando el comando de sincronización bajo el contexto del usuario keystone:

su -s /bin/sh -c "keystone-manage db_sync" keystone

Posteriormente, inicializamos los repositorios de llaves Fernet para la firma de tokens y las credneciales del sistema:

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

Integración con el Servidor Web Apache

Configuramos el nombre del servidor en Apache para evitar advertencias de resolución y creamos un enlace simbólico al archivo de configuración de Keystone para WSGI:

echo "ServerName controller_node" >> /etc/httpd/conf/httpd.conf

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

Iniciamos y habilitamos el servicio HTTP para que arranque automáticamente:

systemctl enable httpd
systemctl start httpd

Bootstrap del Servicio de Identidad

El proceso de "bootstrap" automatiza la creación inicial de servicios, endpoints y el usuario administrador. Es vital usar la dirección IP correcta del controlador:

keystone-manage bootstrap --bootstrap-password ADMIN_SECRET_PWD \
--bootstrap-admin-url http://192.168.1.100:5000/v3/ \
--bootstrap-internal-url http://192.168.1.100:5000/v3/ \
--bootstrap-public-url http://192.168.1.100:5000/v3/ \
--bootstrap-region-id RegionOne

Configuración del Entorno de Administración

Para interactuar con la API de OpenStack sin introducir credenciales constantemente, definimos variables de entorno en el perfil del usuario:

cat >> ~/.bashrc << EOF
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_SECRET_PWD
export OS_AUTH_URL=http://192.168.1.100:5000/v3
export OS_IDENTITY_API_VERSION=3
EOF

source ~/.bashrc

Creación de Proyectos y Usuarios de Prueba

Es una buena práctica crear un proyecto y un usuario no administrativo para validar el funcionamiento del sistema:

# Crear proyecto de demostración
openstack project create --domain default --description "Proyecto de Pruebas" demo_project

# Crear usuario estándar
openstack user create --domain default --password-prompt demo_user

# Crear rol de usuario
openstack role create standard_user

# Vincular proyecto, usuario y rol
openstack role add --project demo_project --user demo_user standard_user

Proyecto para Servicios del Sistema

Cada componente de OpenStack (Glance, Nova, etc.) requiere una identidad para comunicarse. Creamos un proyecto dedicado llamado service:

openstack project create --domain default --description "Servicios de Infraestructura" service

Verificación de la Emisión de Tokens

Para confirmar que Keystone está operando correctamente, solicitamos un token de acceso para el usuario administrador:

openstack token issue

Si el sistema devuelve una tabla con el ID del token y la fecha de expiración, el servicio de idantidad está correctamente configurado y listo para soportar los demás componentes de la nube.

Etiquetas: OpenStack Keystone CentOS 7 Identity Service Apache

Publicado el 8-17 00:21