2.4. 使用 novajoin 在 Red Hat Identity Manager (IdM)中注册节点
novajoin 是作为部署过程的一部分,用来在 Red Hat Identity Manager (IdM)中注册节点的默认工具。红帽建议通过默认的 novajoin 解决方案设置新的基于 ansible 的 tripleo-ipa 解决方案,以使用 TLS 配置 undercloud 和 overcloud。如需更多信息,请参阅使用 Ansible 实施 TLS。
您必须执行注册过程,然后才能执行 IdM 集成的其余部分。注册过程包括以下步骤:
- 将 undercloud 节点添加到证书颁发机构(CA)
- 将 undercloud 节点添加到 IdM
- 可选:将 IdM 服务器设置为 overcloud 的 DNS 服务器
- 准备环境文件并部署 overcloud
- 在 IdM 和 RHOSP 中测试 overcloud 注册
- 可选:在 IdM 中为 novajoin 添加 DNS 条目
带有 novajoin 的 IdM 注册目前仅适用于 undercloud 和 overcloud 节点。在以后的版本中,支持用于 overcloud 实例的 novajoin 集成。
2.4.1. 将 undercloud 节点添加到证书颁发机构中 复制链接链接已复制到粘贴板!
在部署 overcloud 之前,请通过在 undercloud 节点上安装 python3-novajoin 软件包并运行 novajoin-ipa-setup 脚本,将 undercloud 添加到证书颁发机构(CA)中。
流程
在 undercloud 节点上安装
python3-novajoin软件包:sudo dnf install python3-novajoin
$ sudo dnf install python3-novajoinCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 undercloud 节点上,运行
novajoin-ipa-setup脚本,并调整值以符合您的部署:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用生成的一次性密码(OTP)来注册 undercloud。
2.4.2. 将 undercloud 节点添加到 Red Hat Identity Manager (IdM) 复制链接链接已复制到粘贴板!
将 undercloud 节点添加到证书颁发机构(CA)后,将 undercloud 注册到 IdM 并配置 novajoin。在 undercloud.conf 文件的 [DEFAULT] 部分中配置以下设置:
流程
启用
novajoin服务:[DEFAULT] enable_novajoin = true
[DEFAULT] enable_novajoin = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置一次性密码(OTP),以便您可以使用 IdM 注册 undercloud 节点:
ipa_otp = <otp>
ipa_otp = <otp>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 overcloud 的域名设置为由 neutron 的 DHCP 服务器提供:
overcloud_domain_name = <domain>
overcloud_domain_name = <domain>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 undercloud 设置主机名:
undercloud_hostname = <undercloud FQDN>
undercloud_hostname = <undercloud FQDN>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 IdM 设置为 undercloud 的名称服务器:
undercloud_nameservers = <IdM IP>
undercloud_nameservers = <IdM IP>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于较大的环境,请查看 novajoin 连接超时值。在
undercloud.conf文件中,添加对名为undercloud-timeout.yaml的新文件的引用:hieradata_override = /home/stack/undercloud-timeout.yaml
hieradata_override = /home/stack/undercloud-timeout.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
undercloud-timeout.yaml中添加以下选项。您可以指定超时值(以秒为单位),例如5:nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>
nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 如果您希望本地 openSSL 证书颁发机构为 director 中的公共端点生成 SSL 证书,请将
generate_service_certificate参数设置为true:generate_service_certificate = true
generate_service_certificate = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
保存
undercloud.conf文件。 运行 undercloud 部署命令,将更改应用到现有的 undercloud:
openstack undercloud install
$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
通过完成以下步骤验证 undercloud 是否已正确注册:
列出 IdM 中的主机:
kinit admin ipa host-find
$ kinit admin $ ipa host-findCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认 undercloud 上存在
/etc/novajoin/krb5.keytab。ls /etc/novajoin/krb5.keytab
ls /etc/novajoin/krb5.keytabCopy to Clipboard Copied! Toggle word wrap Toggle overflow
要启用 IdM 环境的自动检测并方便注册,请将 IdM 设置为您的 DNS 服务器。这个过程是可选的,但推荐使用。
流程
连接到 undercloud:
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 control plane 子网配置为使用 IdM 作为 DNS 名称服务器:
openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
$ openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在环境文件中设置
DnsServers参数以使用您的 IdM 服务器:parameter_defaults: DnsServers: ["<idm_server_address>"]
parameter_defaults: DnsServers: ["<idm_server_address>"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此参数通常在自定义
network-environment.yaml文件中定义。
2.4.4. 准备环境文件并使用 novajoin 注册部署 overcloud 复制链接链接已复制到粘贴板!
要使用 IdM 集成部署 overcloud,您可以创建和编辑环境文件,将 overcloud 配置为根据您在 overcloud 中定义的域使用自定义域参数 CloudDomain 和 CloudName。然后,您可以使用所有环境文件以及部署所需的任何其他环境文件来部署 overcloud。
流程
创建
/usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml环境文件的副本:cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \ /home/stack/templates/custom-domain.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \ /home/stack/templates/custom-domain.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/home/stack/templates/custom-domain.yaml环境文件,并设置CloudDomain和CloudNamebang 值以适合您的部署:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 选择适合您的环境的 TLS 的实施:
使用
enable-tls.yaml环境文件来保护带有自定义证书的外部端点:-
将
/usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml复制到/home/stack/templates。 -
修改
/home/stack/enable-tls.yaml环境文件,使其包含您的自定义证书和密钥。 在部署中包含以下环境文件,以保护内部和外部端点:
- enable-internal-tls.yaml
- tls-every-endpoints-dns.yaml
- custom-domain.yaml
enable-tls.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
使用
haproxy-public-tls-certmonger.yaml环境文件来保护使用 IdM 发布的证书的外部端点。对于此实现,您必须为 novajoin 使用的 VIP 端点创建 DNS 条目:您必须为 novajoin 使用的 VIP 端点创建 DNS 条目。识别位于
'/home/stack/templates 的自定义 network-environment.yaml 文件中的overcloud 网络:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 heat 模板中为每个 overcloud 网络创建虚拟 IP 地址列表,例如
/home/stack/public_vip.yaml。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 根据需要,为每个 VIP 和区在 IdM 中添加 DNS 条目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署中包含以下环境文件,以保护内部和外部端点:
- enable-internal-tls.yaml
- tls-everywhere-endpoints-dns.yaml
- haproxy-public-tls-certmonger.yaml
- custom-domain.yaml
public_vip.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您不能使用 novajoin 在预先存在的部署(TLS-e)上随处实施 TLS。
2.4.5. 在 Red Hat Identity Manager (IdM)中测试 overcloud 注册 复制链接链接已复制到粘贴板!
使用 novajoin 在 IdM 中完成 undercloud 和 overcloud 注册后,您可以通过搜索 IdM 中的 overcloud 节点,并检查主机条目是否包含 Keytab:True 来测试注册是否成功。您还可以登录到 overcloud 节点,并确认 sssd 命令可以查询 IdM 用户。
在 IdM 中找到 overcloud 节点,并确认主机条目包含
Keytab:True:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录 overcloud 节点,并确认
sssd可以查询 IdM 用户。例如,查询名为susan的 IdM 用户:getent passwd susan uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)
$ getent passwd susan uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)Copy to Clipboard Copied! Toggle word wrap Toggle overflow