安装和配置 Keystone¶
安装¶
安装 openstack-keystone¶
yum install openstack-utils openstack-keystone python-keystoneclient</p><p>
初始化数据库¶
修改 /etc/keystone/keystone.conf 中 sql->connection 项为
mysql://keystone:keystone@127.0.0.1:3306/keystone</p><p>
Note
因为mysql版本的问题,127.0.0.1 不可写为 localhost,且端口号不可忽略,否则连接不上数据库。所有mysql连接的配置都需注意。
原因:
- 当主机名为 localhost 时,mysql驱动会使用 unix_socks 进行连接,
此时需要在 uri 后添加 socks 文件的路径参数才能使用
- 在mysql旧版本中,若不指定版本号,则默认为 0
在mysql中建立keystone数据库和用户,并赋予权限。
openstack-db --init --service keystone</p><p>
如上命令会根据配置文件中的 connection 项,创建 keystone 数据库和 keystone 用户,密码为 keystone。
设置 admin_token¶
openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token <admin_token></p><p>
admin_token 为一密钥,用于操作keystone时的认证。
同步数据库¶
keystone-manage db_sync</p><p>
此命令在keystone数据库中创建相应数据表。
启动 keystone 服务¶
service openstack-keystone start # 启动 keystone 服务</p><p>chkconfig openstack-keystone on # 设置开机启动服务</p><p>
配置服务¶
创建用户、租户和角色¶
创建租户
keystone --token <admin_token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> tenant-create --name demo</p><p>
创建用户并与租户绑定
keystone --token <admin_token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> user-create --tenant-id <上一步中返回的tenant-id> --name admin --pass admin</p><p>
创建管理员角色(根据keystone默认的 policy.json)
keystone --token <admin_token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> role-create --name admin</p><p>
赋予demo中的admin用户管理员权限
keystone --token <admin_token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> user-role-add --tenant-id <tenant-id> --user-id <user-id> --role-id <role-id></p><p>
创建服务¶
修改 /etc/keystone/keystone.conf 中,catalog->driver 项为 keystone.catalog.backends.sql.Catalog,即设置服务目录采用数据库存储。
定义 Identity 服务
keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> service-create --name=keystone --type=identity</p><p>keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> endpoint-create \</p><p> --region scut \</p><p> --service-id=<上一步返回的service-id> \</p><p> --publicurl=http://192.168.1.1:5000/v2.0 \</p><p> --internalurl=http://192.168.1.1:5000/v2.0 \</p><p> --adminurl=http://192.168.1.1:35357/v2.0</p><p>
定义 Compute 服务
keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> service-create --name=nova --type=compute</p><p>keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> endpoint-create \</p><p> --region scut \</p><p> --service-id=<上一步返回的service-id> \</p><p> --publicurl='http://192.168.1.1:8774/v2/%(tenant_id)s' \</p><p> --internalurl='http://192.168.1.1:8774/v2/%(tenant_id)s' \</p><p> --adminurl='http://192.168.1.1:8774/v2/%(tenant_id)s'</p><p>
定义 Volume 服务
keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> service-create --name=volume --type=volume</p><p>keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> endpoint-create \</p><p> --region scut \</p><p> --service-id=<上一步返回的service-id> \</p><p> --publicurl='http://192.168.1.1:8776/v1/%(tenant_id)s' \</p><p> --internalurl='http://192.168.1.1:8776/v1/%(tenant_id)s' \</p><p> --adminurl='http://192.168.1.1:8776/v1/%(tenant_id)s'</p><p>
定义 Image 服务
keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> service-create --name=glance --type=image</p><p>keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> endpoint-create \</p><p> --region scut \</p><p> --service-id=<上一步返回的service-id> \</p><p> --publicurl='http://192.168.1.1:9292' \</p><p> --internalurl='http://192.168.1.1:9292' \</p><p> --adminurl='http://192.168.1.1:9292'</p><p>
定义 EC2 兼容服务
keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> service-create --name=ec2 --type=ec2</p><p>keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> endpoint-create \</p><p> --region scut \</p><p> --service-id=<上一步返回的service-id> \</p><p> --publicurl='http://192.168.1.1:8773/services/Cloud' \</p><p> --internalurl='http://192.168.1.1:8773/services/Cloud' \</p><p> --adminurl='http://192.168.1.1:8773/services/Admin'</p><p>
定义 Object Storage 服务
keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> service-create --name=swift --type=object-store</p><p>keystone --token <admin-token> --endpoint http://127.0.0.1:35357/v2.0 \</p><p> endpoint-create \</p><p> --region scut \</p><p> --service-id=<上一步返回的service-id> \</p><p> --publicurl='http://192.168.1.1:8888/v1/AUTH_%(tenant_id)s' \</p><p> --internalurl='http://192.168.1.1:8888/v1/AUTH_%(tenant_id)s' \</p><p> --adminurl='http://192.168.1.1:8888/v1'</p><p>
验证 Identify 服务安装¶
验证 keystone 是否正确运行以及用户是否正确建立。
keystone --os-username=admin --os-password=admin \</p><p> --os-auth-url=http://127.0.0.1:35357/v2.0 token-get</p><p>
验证用户在指定的 tenant 上是否有明确定义的角色。
keystone --os-username=admin --os-password=admin \</p><p> --os-tenant-name=demo --os-auth-url=http://127.0.0.1:35357/v2.0 token-get</p><p>
此命令根据 username, password, tenant-name 换取访问 token
可以将以上参数设置为环境变量,不用每次输入
export OS_USERNAME=admin</p><p>export OS_PASSWORD=admin</p><p>export OS_TENANT_NAME=demo</p><p>export OS_AUTH_URL=http://127.0.0.1:35357/v2.0 # 管理员命令必须通过 35357 端口执行</p><p>
此时可直接运行
keystone token-get</p><p>
最后,验证admin账户有权限执行管理命令
keystone user-list # 列举所有用户
来源URL:http://openstack-on-centos6.readthedocs.org/en/latest/keystone.html