1.9 配置服务的租户和服务的用户
服务端点创建完成以后,接下来配置它们以便其他OpenStack服务能够调用它们。为此,要为每个服务都配置一个特定的service租户,并指定对应的用户名和密码。这样的目的是保证更高的安全性、以及用来为云环境做故障排除和审计等工作。对于每一个需要OpenStack身份认证服务来验证和授权的服务,都需要在该服务启动之前,在其相关的配置文件里详细写明用于Keystone验证的用户名和密码。例如,glance服务是在/etc/glance/glance-registry-api.ini文件中指定,当OpenStack身份认证服务使用时,必须与之前创建的相匹配。
[filter:authtoken]
paste.filter_factory = keystone.middleware.auth_token:filter_factory
service_protocol = http
service_host = 172.16.0.200
service_port = 5000
auth_host = 172.16.0.200
auth_port = 35357
auth_protocol = http
auth_uri = http://172.16.0.200:5000/
admin_tenant_name = service
admin_user = glance
admin_password = glance
准备工作
在开始之前,必须确认已经登录到已经安装了OpenStack身份认证服务的OpenStack控制节点上,或者有一个已经连接到安装了OpenStack身份认证服务的服务器上的Ubuntu客户端。
登录到使用Vagrant创建的OpenStack控制节点,执行以下命令:
vagrant ssh controller
如果keystone客户端工具尚未安装,则可以通过如下命令在Ubuntu客户端上安装以便管理OpenStack身份认证服务:
sudo apt-get update
sudo apt-get -y install python-keystoneclient
确保已经设置了正确的环境变量,能访问到OpenStack环境。
export ENDPOINT=172.16.0.200
export SERVICE_TOKEN=ADMIN
export SERVICE_ENDPOINT=http://${ENDPOINT}:35357/v2.0
操作步骤
要配置一个合适的服务租户,需要执行如下步骤。
1.创建服务租户,命令如下所示:
keystone tenant-create \
--name service \
--description "Service Tenant" \
--enabled true
输出如图1-6所示。
2.记录下服务租户的ID,以方便后面使用。
SERVICE_TENANT_ID=$(keystone tenant-list \
| awk '/\ service\ / {print $2}')
3.对于本节中的所有服务,都会为其创建一个用户账户,用户名和密码都和服务名称一致。例如,会在服务租户里用user-create选项创建一个用户名和密码均为nova的用户,命令如下所示:
keystone user-create \
--name nova \
--pass nova \
--tenant_id $SERVICE_TENANT_ID \
--email nova@localhost \
--enabled true
输出如图1-7所示。
4.重复上一步,继续为其他用到OpenStack身份认证功能的服务创建用户。
keystone user-create \
--name glance
--pass glance \
--tenant_id $SERVICE_TENANT_ID \
--email glance@localhost \
--enabled true
keystone user-create \
--name keystone \
--pass keystone \
--tenant_id $SERVICE_TENANT_ID \
--email keystone@localhost \
--enabled true
keystone user-create \
--name cinder \
--pass cinder \
--tenant_id $SERVICE_TENANT_ID \
--email cinder@localhost \
--enabled true
5.现在为这些服务租户里的用户分配admin角色。为此,需要先取得nova用户的用户ID,然后在用user-role-add选项来分配角色。例如,为了将admin角色分配给服务租户里的nova用户,命令如下所示:
# Get the nova user id
NOVA_USER_ID=$(keystone user-list \
| awk '/\ nova\ / {print $2}')
# Get the admin role id
ADMIN_ROLE_ID=$(keystone role-list\
| awk '/\ admin\ / {print $2}')
# Assign the nova user the admin role in service tenant
keystone user-role-add\
--user $NOVA_USER_ID\
--role $ADMIN_ROLE_ID\
--tenant_id $SERVICE_TENANT_ID
6.接下来,重复上一步,继续为其他服务租户(glance、keystone和cinder用户)分配角色。
# Get the glance user id
GLANCE_USER_ID=$(keystone user-list\
| awk '/\ glance\ / {print $2}')
# Assign the glance user the admin role in service tenant
keystone user-role-add\
--user $GLANCE_USER_ID\
--role $ADMIN_ROLE_ID\
--tenant_id $SERVICE_TENANT_ID
# Get the keystone user id
KEYSTONE_USER_ID=$(keystone user-list\
| awk '/\ keystone\ / {print $2}')
# Assign the keystone user the admin role in service tenant
keystone user-role-add\
--user $KEYSTONE_USER_ID\
--role $ADMIN_ROLE_ID\
--tenant_id $SERVICE_TENANT_ID
# Get the cinder user id
CINDER_USER_ID=$(keystone user-list\
| awk '/\ cinder \ / {print $2}')
# Assign the cinder user the admin role in service tenant
keystone user-role-add\
--user $CINDER_USER_ID\
--role $ADMIN_ROLE_ID\
--tenant_id $SERVICE_TENANT_ID
工作原理
创建服务租户,然后在其中添加OpenStack运行必需的各个服务的用户,这两步操作和在系统中添加需要admin角色的其他用户没什么不同。为每个拥有admin角色的用户分配用户名和密码,并确保它们存在于服务租户内。然后,使用这些凭证来配置服务OpenStack 的身份认证服务。