06 - Crear dominios, proyectos, usuarios y roles en OpenStack
Identity (Keystone) es el servicio de autenticación y autorización de OpenStack. En este paso prepararé la configuración mínima de Identity que necesitamos para continuar con la instalación y para poder probar OpenStack.
Aunque el dominio default ya existe tras el keystone-manage bootstrap, crearé de forma explícita los proyectos y usuarios que usamos en las guías: service (para los usuarios de servicio) y demo (para pruebas de usuarios no administrativos). También crearé un rol de ejemplo y lo asignaré al usuario demo.
Cuando muestro contraseñas en los ejemplos lo hago por claridad; si prefieres, usa --password-prompt para introducir la contraseña de forma interactiva y segura.
Crear el proyecto service
Como administrador, creo el proyecto service con el siguiente comando:
vagrant@controller01:~$ openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | bb95b976bb784cd3af2bed62cd86a3e2 |
| is_domain | False |
| name | service |
| options | {} |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
Crear el proyecto demo
Creamos un proyecto demo que servirá para pruebas y uso por parte de usuarios no administrativos:
vagrant@controller01:~$ openstack project create --domain default --description "Service Project" demo
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | 9f8438d7b08d4c508ae42e377a7beb9e |
| is_domain | False |
| name | demo |
| options | {} |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
Crear el usuario demo
Ahora creo el usuario demo dentro del dominio default. En este ejemplo muestro la contraseña en claro (demo) por simplicidad:
vagrant@controller01:~$ openstack user create --domain default --password demo demo
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| default_project_id | None |
| domain_id | default |
| email | None |
| enabled | True |
| id | ca874cb3aa4e47459b62faf425c947b0 |
| name | demo |
| description | None |
| password_expires_at | None |
+---------------------+----------------------------------+
Crear el rol y asignarlo al usuario demo en el proyecto demo
Creo un rol llamado demo y se lo asigno al usuario demo dentro del proyecto demo:
vagrant@controller01:~$ openstack role create demo
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| id | 27c7cf177060470b8c89c80a1efc7902 |
| name | demo |
| domain_id | None |
| description | None |
+-------------+----------------------------------+
Asigno el rol al usuario dentro del proyecto:
vagrant@controller01:~$ openstack role add --project demo --user demo demo
Nota: este comando no produce salida en la CLI cuando se ejecuta con éxito.
Fichero demo-openrc de ejemplo y verificación
Creo un fichero demo-openrc con las variables de entorno del usuario demo. Adáptalo si tu entorno usa otras URLs o dominios:
vagrant@controller01:~$ cat demo-openrc
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_PROJECT_NAME=demo
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller01:5000/v3
export OS_IDENTITY_API_VERSION=3
Para verificar que la autenticación funciona con demo, cargo las variables y pido un token:
vagrant@controller01:~$ source demo-openrc
vagrant@controller01:~$ openstack token issue
+------------+---------------------------------------------------------------------------------------------+
| Field | Value |
+------------+---------------------------------------------------------------------------------------------+
| expires | 2025-11-02T16:43:14+0000 |
| id | gAAAAABpB3wSv6IlsyDStWPZoJ_tPmdoDZkmYaQ7-tP9JMGejt- |
| | 3obxjuLzFZ33S3oJeHYGOBTI2k76hY7jLgGdj6C245ZYyNJEQMmRlfYi5m2ROKIzjCh4bytTDlRCO0tiOE8FW_0Veqz |
| | 4PZpzHEXiJ9KSoJFd3D0iKrpMF2NXc8EzBFF1r_So |
| project_id | 9f8438d7b08d4c508ae42e377a7beb9e |
| user_id | ca874cb3aa4e47459b62faf425c947b0 |
+------------+---------------------------------------------------------------------------------------------+
Con esto concluyo la configuración básica de proyectos, usuarios y roles necesaria para continuar con la instalación de otros servicios.
