2.3. 配置身份服务
这些步骤准备 Identity Service 以与 IdM 集成。
如果使用 director,请注意以下引用的配置文件由 Puppet 管理。因此,每当运行 openstack overcloud deploy 过程时,您添加的任何自定义配置可能会被覆盖。要将这些设置应用到基于 director 的部署中,请参阅 第 4 章 将特定于域的 LDAP 后端与 director 一起使用。
2.3.1. 配置控制器 复制链接链接已复制到粘贴板!
如果要更新任何配置文件,您需要注意某些 OpenStack 服务现在在容器内运行;这适用于 keystone、nova 和 cinder 等。因此,有一些管理实践需要考虑:
-
不要更新您在物理节点的主机操作系统上找到的任何配置文件,例如:
/etc/cinder/cinder.conf。这是因为容器化服务不引用此文件。 不要更新容器中运行的配置文件。这是因为重启容器后会丢失任何更改。
相反,如果您需要对容器化服务添加任何更改,则需要更新用于生成容器的配置文件。它们存储在
/var/lib/config-data/puppet-generated/中例如:
-
keystone:
/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf -
cinder:
/var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf nova:
/var/lib/config-data/puppet-generated/nova/etc/nova/nova.conf重启容器后,所有更改都会被应用。例如:
sudo docker restart keystone
在运行 keystone 服务的控制器上执行这个步骤:
配置 SELinux:
setsebool -P authlogin_nsswitch_use_ldap=on
# setsebool -P authlogin_nsswitch_use_ldap=onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出可能包含类似于如下的消息。可以忽略它们:
Full path required for exclude: net:[4026532245].
Full path required for exclude: net:[4026532245].Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 域 目录:
mkdir /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/ chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
# mkdir /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/ # chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置身份服务以使用多个后端:
注意您可能需要使用
yum install安装 crudini。crudinicrudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_specific_drivers_enabled true crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf assignment driver sql
# crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_specific_drivers_enabled true # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf assignment driver sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果使用 director,请注意
/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf由 Puppet 管理。因此,每当运行openstack overcloud deploy过程时,您添加的任何自定义配置可能会被覆盖。因此,您可能需要每次手动重新添加此配置。有关基于 director 的部署,请参阅 第 4 章 将特定于域的 LDAP 后端与 director 一起使用。在控制面板中启用多个域.将这些行添加到 /var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings 中:
OPENSTACK_API_VERSIONS = { "identity": 3 } OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'OPENSTACK_API_VERSIONS = { "identity": 3 } OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果使用 director,请注意
/var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings由 Puppet 管理。因此,每当运行openstack overcloud deploy过程时,您添加的任何自定义配置可能会被覆盖。因此,您可能需要每次手动重新添加此配置。重启 horizon 容器以应用设置:
sudo docker restart horizon
$ sudo docker restart horizonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置额外后端:
为 IdM 集成创建 keystone 域。您需要决定新 keystone 域的名称,然后创建该域。例如,这个命令会创建一个名为
LAB的 Keystone 域:openstack domain create LAB
$ openstack domain create LABCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置文件:
要添加 IdM 后端,请在名为
/var/lib/config-data/puppet-generated/keystone/etc/domains/keystone.的新文件中输入 LDAP 设置。您需要编辑以下示例设置,以适应 IdM 部署:LAB.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 每个设置的说明:
Expand 设置 Description url用于身份验证的 IdM 服务器。使用 LDAPS 端口
636。user用于 LDAP 查询的 IdM 中的帐户。
password以上使用的 IdM 帐户的纯文本密码。
user_filter过滤呈现给身份服务的用户。因此,只有 grp-openstack 组的成员才能具有身份服务中定义的权限。
user_tree_dnIdM 中 OpenStack 帐户的路径。
user_objectclass定义 LDAP 用户的类型。对于 IdM,使用
inetUser类型。user_id_attribute映射用于用户 ID 的 IdM 值。
user_name_attribute将 IdM 值映射到 名称。
user_mail_attribute映射用于用户电子邮件地址的 IdM 值。
user_pass_attribute将这个值留空。
注意与 IdM 组集成将只返回直接成员,而不返回嵌套组。因此,依赖
LDAP_MATCHING_RULE_IN_CHAIN或memberof 的查询:1.2.840.113556.1.4.1941当前无法使用 IdM。
将配置文件的所有权改为 keystone 用户:
chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf
# chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 授予 admin 用户对域的访问权限:
注意这不向 OpenStack admin 帐户授予 IdM 中的任何权限。在本例中,术语域指的是 OpenStack 对 keystone 域的用法。
获取 LAB 域的
ID:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 admin 用户的
ID值:openstack user list --domain default | grep admin
$ openstack user list --domain default | grep admin | 3d75388d351846c6a880e53b2508172a | admin |Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 admin 角色的
ID值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用返回的域和 admin ID 来构造将 admin 用户添加到 keystone LAB 域的 admin 角色的命令:
openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
$ openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cfCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重启 keystone 服务以应用更改:
sudo docker restart keystone
$ sudo docker restart keystoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在命令中添加 keystone 域名来查看 IdM 域中的用户列表:
openstack user list --domain LAB
$ openstack user list --domain LABCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看本地 keystone 数据库中的服务帐户:
openstack user list --domain default
$ openstack user list --domain defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow