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
在 undercloud 节点上,运行
novajoin-ipa-setup
脚本,并调整值以符合您的部署:$ sudo /usr/libexec/novajoin-ipa-setup \ --principal admin \ --password <IdM admin password> \ --server <IdM server hostname> \ --realm <realm> \ --domain <overcloud cloud domain> \ --hostname <undercloud hostname> \ --precreate
使用生成的一次性密码(OTP)来注册 undercloud。
2.4.2. 将 undercloud 节点添加到 Red Hat Identity Manager (IdM)
将 undercloud 节点添加到证书颁发机构(CA)后,将 undercloud 注册到 IdM 并配置 novajoin。在 undercloud.conf
文件的 [DEFAULT]
部分中配置以下设置:
流程
启用
novajoin
服务:[DEFAULT] enable_novajoin = true
设置一次性密码(OTP),以便您可以使用 IdM 注册 undercloud 节点:
ipa_otp = <otp>
将 overcloud 的域名设置为由 neutron 的 DHCP 服务器提供:
overcloud_domain_name = <domain>
为 undercloud 设置主机名:
undercloud_hostname = <undercloud FQDN>
将 IdM 设置为 undercloud 的名称服务器:
undercloud_nameservers = <IdM IP>
对于较大的环境,请查看 novajoin 连接超时值。在
undercloud.conf
文件中,添加对名为undercloud-timeout.yaml
的新文件的引用:hieradata_override = /home/stack/undercloud-timeout.yaml
在
undercloud-timeout.yaml
中添加以下选项。您可以指定超时值(以秒为单位),例如5
:nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>
可选: 如果您希望本地 openSSL 证书颁发机构为 director 中的公共端点生成 SSL 证书,请将
generate_service_certificate
参数设置为true
:generate_service_certificate = true
-
保存
undercloud.conf
文件。 运行 undercloud 部署命令,将更改应用到现有的 undercloud:
$ openstack undercloud install
2.4.3. 将 Red Hat Identity Manager (IdM)设置为 overcloud 的 DNS 服务器
要启用 IdM 环境的自动检测并方便注册,请将 IdM 设置为您的 DNS 服务器。这个过程是可选的,但推荐使用。
流程
连接到 undercloud:
$ source ~/stackrc
将 control plane 子网配置为使用 IdM 作为 DNS 名称服务器:
$ openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
在环境文件中设置
DnsServers
参数以使用您的 IdM 服务器:parameter_defaults: DnsServers: ["<idm_server_address>"]
此参数通常在自定义
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
编辑
/home/stack/templates/custom-domain.yaml
环境文件,并设置CloudDomain
和CloudName
bang 值以适合您的部署:parameter_defaults: CloudDomain: lab.local CloudName: overcloud.lab.local CloudNameInternal: overcloud.internalapi.lab.local CloudNameStorage: overcloud.storage.lab.local CloudNameStorageManagement: overcloud.storagemgmt.lab.local CloudNameCtlplane: overcloud.ctlplane.lab.local
选择适合您的环境的 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
openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml \ -e /home/stack/templates/custom-domain.yaml \ -e /home/stack/templates/enable-tls.yaml
-
将
使用
haproxy-public-tls-certmonger.yaml
环境文件来保护使用 IdM 发布的证书的外部端点。对于此实现,您必须为 novajoin 使用的 VIP 端点创建 DNS 条目:您必须为 novajoin 使用的 VIP 端点创建 DNS 条目。识别位于
'/home/stack/templates 的自定义 network-environment.yaml 文件中的
overcloud 网络:parameter_defaults: ControlPlaneDefaultRoute: 192.168.24.1 ExternalAllocationPools: - end: 10.0.0.149 start: 10.0.0.101 InternalApiAllocationPools: - end: 172.17.1.149 start: 172.17.1.10 StorageAllocationPools: - end: 172.17.3.149 start: 172.17.3.10 StorageMgmtAllocationPools: - end: 172.17.4.149 start: 172.17.4.10
在 heat 模板中为每个 overcloud 网络创建虚拟 IP 地址列表,例如
/home/stack/public_vip.yaml
。parameter_defaults: ControlFixedIPs: [{'ip_address':'192.168.24.101'}] PublicVirtualFixedIPs: [{'ip_address':'10.0.0.101'}] InternalApiVirtualFixedIPs: [{'ip_address':'172.17.1.101'}] StorageVirtualFixedIPs: [{'ip_address':'172.17.3.101'}] StorageMgmtVirtualFixedIPs: [{'ip_address':'172.17.4.101'}] RedisVirtualFixedIPs: [{'ip_address':'172.17.1.102'}]
根据需要,为每个 VIP 和区在 IdM 中添加 DNS 条目:
ipa dnsrecord-add lab.local overcloud --a-rec 10.0.0.101 ipa dnszone-add ctlplane.lab.local ipa dnsrecord-add ctlplane.lab.local overcloud --a-rec 192.168.24.101 ipa dnszone-add internalapi.lab.local ipa dnsrecord-add internalapi.lab.local overcloud --a-rec 172.17.1.101 ipa dnszone-add storage.lab.local ipa dnsrecord-add storage.lab.local overcloud --a-rec 172.17.3.101 ipa dnszone-add storagemgmt.lab.local ipa dnsrecord-add storagemgmt.lab.local overcloud --a-rec 172.17.4.101
在部署中包含以下环境文件,以保护内部和外部端点:
- enable-internal-tls.yaml
- tls-everywhere-endpoints-dns.yaml
- haproxy-public-tls-certmonger.yaml
- custom-domain.yaml
public_vip.yaml
openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml \ -e /home/stack/templates/custom-domain.yaml \ -e /home/stack/templates/public-vip.yaml
您不能使用 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
:$ ipa host-show overcloud-node-01 Host name: overcloud-node-01.lab.local Principal name: host/overcloud-node-01.lab.local@LAB.LOCAL Principal alias: host/overcloud-node-01.lab.local@LAB.LOCAL SSH public key fingerprint: <snip> Password: False Keytab: True Managed by: overcloud-node-01.lab.local
登录 overcloud 节点,并确认
sssd
可以查询 IdM 用户。例如,查询名为susan
的 IdM 用户:$ getent passwd susan uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)