5.5. 使用 Ansible 实施 TLS-e


您可以使用新的 tripleo-ipa 方法在 overcloud 端点上启用 SSL/TLS,称为 TLS 随处(TLS-e)。由于所需的证书数量,Red Hat OpenStack Platform 与 Red Hat Identity Management (IdM)集成。当您使用 tripleo-ipa 配置 TLS-e 时,IdM 是证书颁发机构。

先决条件

  • 确保完成 undercloud 的所有配置步骤,如创建 stack 用户。如需了解更多详细信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform
  • DNS 服务器的 IP 地址是在 undercloud 上配置为 IdM 服务器的 IP 地址。以下参数之一必须在 undercloud.conf 文件中配置:

    • DEFAULT/undercloud_nameservers
    • %SUBNET_SECTION%/dns_nameservers

流程

使用以下步骤在新的 Red Hat OpenStack Platform 安装或您要使用 TLS-e 配置的现有部署上实现 TLS-e。如果在预置备节点上部署带有 TLS-e 的 Red Hat OpenStack Platform,则必须使用此方法。

注意

如果您要为现有环境实施 TLS-e,则需要运行 openstack undercloud install、和 openstack overcloud deploy 等命令。这些流程是幂等的,仅调整现有的部署配置以匹配更新的模板和配置文件。

  1. 配置 /etc/resolv.conf 文件:

    /etc/resolv.conf 中设置 undercloud 上的适当搜索域和名称服务器。例如,如果部署域为 example.com,并且 FreeIPA 服务器的域是 bigcorp.com,则将以下行添加到 /etc/resolv.conf 中:

    search example.com bigcorp.com
    nameserver $IDM_SERVER_IP_ADDR
  2. 安装所需的软件:

    sudo dnf install -y python3-ipalib python3-ipaclient krb5-devel
  3. 使用特定于您的环境的值导出环境变量:

    export IPA_DOMAIN=bigcorp.com
    export IPA_REALM=BIGCORP.COM
    export IPA_ADMIN_USER=$IPA_USER 1
    export IPA_ADMIN_PASSWORD=$IPA_PASSWORD 2
    export IPA_SERVER_HOSTNAME=ipa.bigcorp.com
    export UNDERCLOUD_FQDN=undercloud.example.com 3
    export USER=stack
    export CLOUD_DOMAIN=example.com
    1 2
    IdM 用户凭证是一个管理用户,它可以添加新主机和服务。
    3
    UNDERCLOUD_FQDN 参数的值与 /etc/hosts 中的第一个主机名到 IP 地址映射匹配。
  4. 在 undercloud 上运行 undercloud-ipa-install.yaml ansible playbook:

    ansible-playbook \
    --ssh-extra-args "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
    /usr/share/ansible/tripleo-playbooks/undercloud-ipa-install.yaml
  5. 在 undercloud.conf 中添加以下参数

    undercloud_nameservers = $IDM_SERVER_IP_ADDR
    overcloud_domain_name = example.com
  6. [可选] 如果您的 IPA 域与您的 IPA 域不匹配,请设置 certmonger_krb_realm 参数的值:

    1. /home/stack/hiera_override.yaml 中设置 certmonger_krb_realm 的值:

      parameter_defaults:
        certmonger_krb_realm: EXAMPLE.COMPANY.COM
    2. undercloud.conf 中的 custom_env_files 参数的值设置为 /home/stack/hiera_override.yaml

      custom_env_files = /home/stack/hiera_override.yaml
  7. 部署 undercloud:

    openstack undercloud install

验证

通过完成以下步骤验证 undercloud 是否已正确注册:

  1. 列出 IdM 中的主机:

    $ kinit admin
    $ ipa host-find
  2. 确认 undercloud 上存在 /etc/novajoin/krb5.keytab

    ls /etc/novajoin/krb5.keytab
注意

novajoin 目录名称仅用于传统的命名目的。

在 overcloud 上配置 TLS-e

当您随处部署带有 TLS (TLS-e)的 overcloud 时,Undercloud 和 Overcloud 中的 IP 地址将自动注册到 IdM。

  1. 在部署 overcloud 之前,先创建一个 YAML 文件 tls-parameters.yaml,其内容类似于以下内容:您选择的值将特定于您的环境:

    parameter_defaults:
        DnsSearchDomains: ["example.com"]
        CloudDomain: example.com
        CloudName: overcloud.example.com
        CloudNameInternal: overcloud.internalapi.example.com
        CloudNameStorage: overcloud.storage.example.com
        CloudNameStorageManagement: overcloud.storagemgmt.example.com
        CloudNameCtlplane: overcloud.ctlplane.example.com
        IdMServer: freeipa-0.redhat.local
        IdMDomain: redhat.local
        IdMInstallClientPackages: False
    
    resource_registry:
          OS::TripleO::Services::IpaClient: /usr/share/openstack-tripleo-heat-templates/deployment/ipa/ipaservices-baremetal-ansible.yaml
    • OS::TripleO::Services::IpaClient 参数显示的值会覆盖 enable-internal-tls.yaml 文件中的默认设置。您必须确保 tls-parameters.yaml 文件遵循 openstack overcloud deploy 命令中的 enable-internal-tls.yaml
    • 有关用于实现 TLS-e 的参数的更多信息,请参阅 tripleo-ipa 的参数
  2. [可选] 如果您的 IPA 域与您的 IPA 域不匹配,还必须在 tls-parameters.yaml 文件中包含 CertmongerKerberosRealm 参数的值:

        CertmongerKerberosRealm: EXAMPLE.COMPANY.COM
  3. 部署 overcloud。您需要在部署命令中包含 tls-parameters.yaml :

    DEFAULT_TEMPLATES=/usr/share/openstack-tripleo-heat-templates/
    CUSTOM_TEMPLATES=/home/stack/templates
    
    openstack overcloud deploy \
    -e ${DEFAULT_TEMPLATES}/environments/ssl/tls-everywhere-endpoints-dns.yaml \
    -e ${DEFAULT_TEMPLATES}/environments/services/haproxy-public-tls-certmonger.yaml \
    -e ${DEFAULT_TEMPLATES}/environments/ssl/enable-internal-tls.yaml \
    -e ${CUSTOM_TEMPLATES}/tls-parameters.yaml \
    ...
  4. 通过查询 keystone 获取端点列表来确认每个端点正在使用 HTTPS:

    openstack endpoint list
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.