搜索

2.4. 使用 novajoin 在 Red Hat Identity Manager (IdM)中注册节点

download PDF

novajoin 是作为部署过程的一部分,用来在 Red Hat Identity Manager (IdM)中注册节点的默认工具。红帽建议通过默认的 novajoin 解决方案设置新的基于 ansible 的 tripleo-ipa 解决方案,以使用 TLS 配置 undercloud 和 overcloud。如需更多信息,请参阅使用 Ansible 实施 TLS

您必须执行注册过程,然后才能执行 IdM 集成的其余部分。注册过程包括以下步骤:

  1. 将 undercloud 节点添加到证书颁发机构(CA)
  2. 将 undercloud 节点添加到 IdM
  3. 可选:将 IdM 服务器设置为 overcloud 的 DNS 服务器
  4. 准备环境文件并部署 overcloud
  5. 在 IdM 和 RHOSP 中测试 overcloud 注册
  6. 可选:在 IdM 中为 novajoin 添加 DNS 条目
注意

带有 novajoin 的 IdM 注册目前仅适用于 undercloud 和 overcloud 节点。在以后的版本中,支持用于 overcloud 实例的 novajoin 集成。

2.4.1. 将 undercloud 节点添加到证书颁发机构中

在部署 overcloud 之前,请通过在 undercloud 节点上安装 python3-novajoin 软件包并运行 novajoin-ipa-setup 脚本,将 undercloud 添加到证书颁发机构(CA)中。

流程

  1. 在 undercloud 节点上安装 python3-novajoin 软件包:

    $ sudo dnf install python3-novajoin
  2. 在 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] 部分中配置以下设置:

流程

  1. 启用 novajoin 服务:

    [DEFAULT]
    enable_novajoin = true
  2. 设置一次性密码(OTP),以便您可以使用 IdM 注册 undercloud 节点:

    ipa_otp = <otp>
  3. 将 overcloud 的域名设置为由 neutron 的 DHCP 服务器提供:

    overcloud_domain_name = <domain>
  4. 为 undercloud 设置主机名:

    undercloud_hostname = <undercloud FQDN>
  5. 将 IdM 设置为 undercloud 的名称服务器:

    undercloud_nameservers = <IdM IP>
  6. 对于较大的环境,请查看 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>
  7. 可选: 如果您希望本地 openSSL 证书颁发机构为 director 中的公共端点生成 SSL 证书,请将 generate_service_certificate 参数设置为 true

    generate_service_certificate = true
  8. 保存 undercloud.conf 文件。
  9. 运行 undercloud 部署命令,将更改应用到现有的 undercloud:

    $ openstack undercloud install

2.4.3. 将 Red Hat Identity Manager (IdM)设置为 overcloud 的 DNS 服务器

要启用 IdM 环境的自动检测并方便注册,请将 IdM 设置为您的 DNS 服务器。这个过程是可选的,但推荐使用。

流程

  1. 连接到 undercloud:

    $ source ~/stackrc
  2. 将 control plane 子网配置为使用 IdM 作为 DNS 名称服务器:

    $ openstack subnet set ctlplane-subnet --dns-nameserver  <idm_server_address>
  3. 在环境文件中设置 DnsServers 参数以使用您的 IdM 服务器:

    parameter_defaults:
      DnsServers: ["<idm_server_address>"]

    此参数通常在自定义 network-environment.yaml 文件中定义。

2.4.4. 准备环境文件并使用 novajoin 注册部署 overcloud

要使用 IdM 集成部署 overcloud,您可以创建和编辑环境文件,将 overcloud 配置为根据您在 overcloud 中定义的域使用自定义域参数 CloudDomainCloudName。然后,您可以使用所有环境文件以及部署所需的任何其他环境文件来部署 overcloud。

流程

  1. 创建 /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
  2. 编辑 /home/stack/templates/custom-domain.yaml 环境文件,并设置 CloudDomainCloudName 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
  3. 选择适合您的环境的 TLS 的实施:

    • 使用 enable-tls.yaml 环境文件来保护带有自定义证书的外部端点:

      1. /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml 复制到 /home/stack/templates
      2. 修改 /home/stack/enable-tls.yaml 环境文件,使其包含您的自定义证书和密钥。
      3. 在部署中包含以下环境文件,以保护内部和外部端点:

        • 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 条目:

      1. 您必须为 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
      2. 在 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'}]
      3. 根据需要,为每个 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
      4. 在部署中包含以下环境文件,以保护内部和外部端点:

        • 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 用户。

  1. 在 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
  2. 登录 overcloud 节点,并确认 sssd 可以查询 IdM 用户。例如,查询名为 susan 的 IdM 用户:

    $ getent passwd susan
    uid=1108400007(susan) gid=1108400007(bob) groups=1108400007(susan)
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.