Instalación del servicio Keystone
- Instalamos los paquetes de Keystone
1 |
sudo apt-get install keystone python-keystone python-keystoneclient |
- La configuración se realiza editando el archivo /etc/keystone/keystone.conf. Nos aseguramos de que contiene las siguientes líneas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[DEFAULT] admin_token = password bind_host = 0.0.0.0 public_port = 5000 admin_port = 35357 compute_port = 8774 verbose = True debug = True log_file = keystone.log log_dir = /var/log/keystone log_config = /etc/keystone/logging.conf [sql] connection = mysql://keystone:password@localhost:3306/keystone idle_timeout = 200 [identity] driver = keystone.identity.backends.sql.Identity [catalog] driver = keystone.catalog.backends.sql.Catalog |
- El token a utilizar (password)
- Los puertos (5000, 35357, 8774)
- Configuración de log
- Conexión con la base de datos MySQL
- Reiniciamos el servicio
1 |
sudo service keystone restart |
- Creamos las tablas en la base de datos
1 |
sudo keystone-manage db_sync |
- Para simplificar el uso posterior de keystone lo que vamos a hacer es crear un archivo definiendo variables de entorno que el cliente de keystone utilizará durante su uso.
- Creamos un archivo llamado por ejemplo keystonerc con el siguiente contenido:
1 2 3 4 5 6 |
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=password export OS_AUTH_URL="http://localhost:5000/v2.0/" export SERVICE_ENDPOINT="http://localhost:35357/v2.0" export SERVICE_TOKEN=password |
- Exportamos las variables y lo añadimos al archivo .bashrc para que estén disponibles siempre que accedamos al sistema:
1 2 |
source keystonerc echo "source keystonerc">>.bashrc |
- Configuramos keystone creando los usuarios, proyectos (tenants) y servicios. Es importante tener en cuenta que a cada objeto que creamos con keystone se le asigna un identificador, que puede ser utilizado en la ejecución de otros comandos. Para simplificar y facilitar los comandos sustituyo esos identificadores por variables
- Tenants o proyectos
1 2 3 4 |
keystone tenant-create --name=admin keystone tenant-create --name=service keystone tenant-create --name=demo keystone tenant-create --name=invisible_to_admin |
- Usuarios
1 2 |
keystone user-create --name=admin --pass=password --email=admin@localdomain.local keystone user-create --name=demo --pass=password --email=demo@localdomain.local |
- Roles
1 2 3 |
keystone role-create --name=admin keystone role-create --name=KeystoneAdmin keystone role-create --name=KeystoneServiceAdmin |
- Creamos las variables con los identificadores
- Asignamos roles a los usuarios en los tenants
- Necesitamos obtener los ID de usuario, rol y tenant creados en los comandos anteriores (estos comandos no generan ninguna salida)
1 2 3 4 |
keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $ADMIN_TENANT keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $DEMO_TENANT keystone user-role-add --user-id $ADMIN_USER --role-id $KEYSTONEADMIN_ROLE --tenant-id $ADMIN_TENANT keystone user-role-add --user-id $ADMIN_USER --role-id $KEYSTONESERVICE_ROLE --tenant-id $ADMIN_TENANT |
- Creamos el rol Member para Horizon y Swift
1 2 3 |
keystone role-create --name=Member keystone user-role-add --user-id $DEMO_USER --role-id $MEMBER_ROLE --tenant-id $DEMO_TENANT keystone user-role-add --user-id $DEMO_USER --role-id $MEMBER_ROLE --tenant-id $INVIS_TENANT |
- Configuramos los usuarios para el resto de componentes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
keystone user-create --name=nova --pass=password --tenant-id $SERVICE_TENANT --email=nova@localdomain.local keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $NOVA_USER --role-id $ADMIN_ROLE keystone user-create --name=glance --pass=password --tenant-id $SERVICE_TENANT --email=glance@localdomain.local keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $GLANCE_USER --role-id $ADMIN_ROLE keystone user-create --name=swift --pass=password --tenant-id $SERVICE_TENANT --email=swift@localdomain.local keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $SWIFT_USER --role-id $ADMIN_ROLE keystone user-create --name=quantum --pass=password --tenant-id $SERVICE_TENANT --email=quantum@localdomain.local keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $QUANTUM_USER --role-id $ADMIN_ROLE keystone user-create --name=cinder --pass=password --tenant-id $SERVICE_TENANT --email=cinder@localdomain.local keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $CINDER_USER --role-id $ADMIN_ROLE keystone role-create --name=ResellerAdmin keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $NOVA_USER --role-id $RESELLER_ROLE |
- Creamos los servicios para los distintos componentes
1 2 3 4 5 6 7 |
keystone service-create --name nova --type compute --description 'OpenStack Compute Service' keystone service-create --name cinder --type volume --description 'OpenStack Volume Service' keystone service-create --name glance --type image --description 'OpenStack Image Service' keystone service-create --name swift --type object-store --description 'OpenStack Storage Service' keystone service-create --name keystone --type identity --description 'OpenStack Identity' keystone service-create --name ec2 --type ec2 --description 'OpenStack EC2 service' keystone service-create --name quantum --type network --description 'OpenStack Networking service' |
- Creamos los endpoint para cada uno de los servicios
1 2 3 4 5 6 7 |
keystone endpoint-create --region RegionOne --service-id $NOVA_SERVICE --publicurl 'http://192.168.0.1:8774/v2/$(tenant_id)s' --adminurl 'http://192.168.0.1:8774/v2/$(tenant_id)s' --internalurl 'http://192.168.0.1:8774/v2/$(tenant_id)s' keystone endpoint-create --region RegionOne --service-id $CINDER_SERVICE --publicurl 'http://19.168.0.1:8776/v1/$(tenant_id)s' --adminurl 'http://19.168.0.1:8776/v1/$(tenant_id)s' --internalurl 'http://19.168.0.1:8776/v1/$(tenant_id)s' keystone endpoint-create --region RegionOne --service-id $GLANCE_SERVICE --publicurl 'http://19.168.0.1:9292/v2' --adminurl 'http://19.168.0.1:9292/v2' --internalurl 'http://19.168.0.1:9292/v2' keystone endpoint-create --region RegionOne --service-id $SWIFT_SERVICE --publicurl 'http://19.168.0.1:8080/v1/AUTH_$(tenant_id)s' --adminurl 'http://19.168.0.1:8080/v1' --internalurl 'http://19.168.0.1:8080/v1/AUTH_$(tenant_id)s' keystone endpoint-create --region RegionOne --service-id $KEYSTONE_SERVICE --publicurl 'http://19.168.0.1:5000/v2.0' --adminurl 'http://19.168.0.1:35357/v2.0' --internalurl 'http://19.168.0.1:5000/v2.0' keystone endpoint-create --region RegionOne --service-id $EC2_SERVICE --publicurl 'http://19.168.0.1:8773/services/Cloud' --adminurl 'http://19.168.0.1:8773/services/Admin' --internalurl 'http://19.168.0.1:8773/services/Cloud' keystone endpoint-create --region RegionOne --service-id $QUANTUM_SERVICE --publicurl 'http://19.168.0.1:9696/' --adminurl 'http://19.168.0.1:9696/' --internalurl 'http://19.168.0.1:9696/' |
- Para facilitar la ejecución podemos utilizar el siguiente script: https://raw.github.com/EmilienM/openstack-folsom-guide/master/scripts/keystone-endpoints.sh
En este punto ya tenemos configurado Keystone
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?