2.8. 配置 Identity Service
这些步骤准备 Identity Service 与 IdM 集成。
2.8.1. 启用 keystone v3 的命令行访问 复制链接链接已复制到粘贴板!
要从命令行管理 Identity Service 域,您需要启用对 keystone v3 的访问。
从运行 keystone 服务的控制器执行此步骤。
1.创建现有环境变量文件的副本。在基于 director 的部署中,它将称为 overcloudrc :
cp overcloudrc overcloudrc-v3
$ cp overcloudrc overcloudrc-v3
2.编辑新的 overcloudrc-v3 文件:
-
将
OS_AUTH_URL从 v2.0 更改为 v3。例如:
export OS_AUTH_URL=https://controllerIP:5000/v3/
export OS_AUTH_URL=https://controllerIP:5000/v3/
-
将以下条目添加到
overcloudrc-v3的底部:
export OS_IDENTITY_API_VERSION=3 export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
3.通过提供文件,为您的当前命令行会话启用这些选项:
source overcloudrc-v3
$ source overcloudrc-v3
2.8.2. 配置控制器 复制链接链接已复制到粘贴板!
从运行 keystone 服务的控制器执行此步骤:
1.配置 SELinux:
setsebool -P authlogin_nsswitch_use_ldap=on
# setsebool -P authlogin_nsswitch_use_ldap=on
2.创建 domains 目录:
mkdir /etc/keystone/domains/ chown keystone /etc/keystone/domains/
# mkdir /etc/keystone/domains/
# chown keystone /etc/keystone/domains/
3.配置 Identity Service 以使用多个后端:
您可能需要使用 yum install 安装 crudini。
crudini
crudini --set /etc/keystone/keystone.conf identity domain_specific_drivers_enabled true crudini --set /etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains crudini --set /etc/keystone/keystone.conf assignment driver sql
# crudini --set /etc/keystone/keystone.conf identity domain_specific_drivers_enabled true
# crudini --set /etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains
# crudini --set /etc/keystone/keystone.conf assignment driver sql
如果使用 Red Hat OpenStack Platform director,则需要注意 /etc/keystone/keystone.conf 由 Puppet 管理。因此,每当您运行 openstack overcloud deploy 过程时,您添加的任何自定义配置都可能会被覆盖。因此,您可能需要每次手动重新添加此配置。以后的 director 版本会包括 Puppet 参数,允许您使用部署后脚本自动重新应用这些设置。
4.配置额外的后端:
a.为 IdM 集成创建 keystone 域。您需要决定用于您的新 keystone 域的名称,然后创建该域。例如,这个命令会创建一个名为 LAB 的 keystone 域:
openstack domain create LAB
# openstack domain create LAB
如果这个命令不可用,请检查您为命令行会话启用了 keystone v3。
b.创建配置文件:
要添加 IdM 后端,请在名为 /etc/keystone/domains/keystone.LAB.conf (其中 LAB 是之前创建的域名)的新文件中输入 LDAP 设置。您需要编辑以下示例设置以适合您的 IdM 部署:
每个设置的说明:
| 设置 | 描述 |
|---|---|
|
|
用于身份验证的 IdM 服务器。使用 LDAPS 端口 |
|
| IdM 中用于 LDAP 查询的帐户。 |
|
| 上面使用的 IdM 帐户的明文密码。 |
|
| 过滤提供给 Identity Service 的用户。因此,只有 grp-openstack 组的成员可以在 Identity Service 中定义权限。 |
|
| IdM 中 OpenStack 帐户的路径。 |
|
|
定义 LDAP 用户的类型。对于 IdM,请使用 |
|
| 映射用于用户 ID 的 IdM 值。 |
|
| 映射用于 名称 的 IdM 值。 |
|
| 映射用于用户电子邮件地址的 IdM 值。 |
|
| 将此值设置为。 |
|
|
将此值设置为 |
|
|
将此值设置为 |
|
|
将此值设置为 |
5.将配置文件的所有权更改为 keystone 用户:
chown keystone /etc/keystone/domains/keystone.LAB.conf
# chown keystone /etc/keystone/domains/keystone.LAB.conf
6.授予 admin 用户对域的访问权限:
这不授予 OpenStack admin 帐户在 IdM 中任何权限。在这种情况下,术语域指的是 OpenStack Keystone 域的使用。
a.获取 LAB 域的 ID :
b.获取 admin 用户的 ID 值:
openstack user list --domain default | grep admin | 3d75388d351846c6a880e53b2508172a | admin |
# openstack user list --domain default | grep admin
| 3d75388d351846c6a880e53b2508172a | admin |
c.获取 admin 角色的 ID 值:
d.使用返回的域和 admin ID 构造命令,将 admin 用户添加到 keystone LAB 域的 admin 角色中:
openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
# openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
7.将控制面板配置为在登录页面中使用 LAB keystone 域。将这些行添加到 /etc/openstack-dashboard/local_settings 中:
此 Red Hat OpenStack Platform 版本不支持多域仪表板配置。因此,本指南只描述了单个域的 Dashboard 配置。
OPENSTACK_API_VERSIONS = {
"identity": 3
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'LAB'
OPENSTACK_API_VERSIONS = {
"identity": 3
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'LAB'
如果使用 Red Hat OpenStack Platform director,则需要注意 /etc/openstack-dashboard/local_settings 由 Puppet 管理。因此,每当您运行 openstack overcloud deploy 过程时,您添加的任何自定义配置都可能会被覆盖。因此,您可能需要每次手动重新添加此配置。以后的 director 版本会包括 Puppet 参数,允许您使用部署后脚本自动重新应用这些设置。
8.重启 httpd 服务以应用更改:
systemctl restart httpd.service
# systemctl restart httpd.service
9.通过在命令中添加 keystone 域名来查看 IdM 域中的用户列表:
openstack user list --domain LAB
# openstack user list --domain LAB
10.查看本地 keystone 数据库中的服务帐户:
openstack user list --domain default
# openstack user list --domain default
2.8.3. 将 Compute 配置为使用 keystone v3 复制链接链接已复制到粘贴板!
默认情况下,计算使用 keystone v2.0,因此需要配置为使用 keystone v3,才能使用多域功能。
1.在每个 Compute 节点上,调整 keystone_authtoken 值:
crudini --set /etc/nova/nova.conf keystone_authtoken auth_version v3
# crudini --set /etc/nova/nova.conf keystone_authtoken auth_version v3
2.在控制器中重启这些服务以应用更改:
systemctl restart openstack-nova-api.service openstack-nova-cert.service openstack-nova-conductor.service openstack-nova-consoleauth.service openstack-nova-novncproxy.service openstack-nova-scheduler.service
# systemctl restart openstack-nova-api.service openstack-nova-cert.service openstack-nova-conductor.service openstack-nova-consoleauth.service openstack-nova-novncproxy.service openstack-nova-scheduler.service
3.在每个 Compute 节点上重启这个服务以应用更改:
systemctl restart openstack-nova-compute.service
# systemctl restart openstack-nova-compute.service
2.8.4. 配置块存储以使用 keystone v3 复制链接链接已复制到粘贴板!
您还必须配置 Block Storage (cinder)来向 keystone v3 进行身份验证。
在 /etc/cinder/cinder.conf 中:
[keystone_authtoken] auth_uri = https://controllerIP:5000/v3 auth_version = v3
[keystone_authtoken] auth_uri = https://controllerIP:5000/v3 auth_version = v3Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
auth_uri- 将controllerIP替换为控制器的 IP 地址。如果您的部署有多个控制器,您应该使用 keystone 端点 VIP,而不是控制器 IP。
-
2.8.5. 允许 IdM 用户访问项目 复制链接链接已复制到粘贴板!
作为 grp-openstack IdM 组的成员的 IdM 用户可以授予在仪表板中登录到项目的权限:
1.检索 IdM 用户列表:
2.检索角色列表:
3.通过将项目添加到一个或多个这些角色,授予用户对项目的访问权限。例如,如果您希望 user1 是 demo 项目的普通用户,您可以将它们添加到 _member_ 角色中:
openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_
# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_
或者,如果您希望 user1 是 demo 项目的管理用户,您可以将它们添加到 admin 角色中:
openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e admin
# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e admin
因此,user1 可以通过输入 IdM 用户名和密码来登录到仪表板。
如果用户收到错误 "Error: Unable to retrieve container list.",并且希望能够管理容器,则必须将它们添加到 SwiftOperator 角色中。