2.3. 使用 Ansible 实施 TLS-e
您可以使用新的 tripleo-ipa 方法在 overcloud 端点上启用 SSL/TLS,名为 TLS-e。由于所需的证书数量,Red Hat OpenStack Platform 与 Red Hat Identity Management (IdM)集成。当您使用 tripleo-ipa 配置 TLS-e 时,IdM 是证书颁发机构。
先决条件
- 确保完成 undercloud 的所有配置步骤,如创建 stack 用户。如需了解更多详细信息,请参阅 Director 安装和使用 以了解更多详细信息
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 等命令。这些过程是幂等的,仅调整您现有的部署配置,以匹配更新的模板和配置文件。
配置
/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安装所需的软件:
sudo dnf install -y python3-ipalib python3-ipaclient krb5-devel使用特定于您的环境的值导出环境变量。
export IPA_DOMAIN=bigcorp.com export IPA_REALM=BIGCORP.COM export IPA_ADMIN_USER=$IPA_USER1 export IPA_ADMIN_PASSWORD=$IPA_PASSWORD2 export IPA_SERVER_HOSTNAME=ipa.bigcorp.com export UNDERCLOUD_FQDN=undercloud.example.com3 export USER=stack export CLOUD_DOMAIN=example.com在 undercloud 上运行
undercloud-ipa-install.yamlansible playbook:ansible-playbook \ --ssh-extra-args "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \ /usr/share/ansible/tripleo-playbooks/undercloud-ipa-install.yaml在 undercloud.conf 中添加以下参数
undercloud_nameservers = $IDM_SERVER_IP_ADDR overcloud_domain_name = example.com[可选] 如果您的 IPA 域与您的 IPA 域不匹配,请设置
certmonger_krb_realm参数的值:在
/home/stack/hiera_override.yaml中设置certmonger_krb_realm的值:parameter_defaults: certmonger_krb_realm = EXAMPLE.COMPANY.COM将
undercloud.conf中的custom_env_files参数的值设置为/home/stack/hiera_override.yaml:custom_env_files = /home/stack/hiera_override.yaml
部署 undercloud:
openstack undercloud install
验证
通过完成以下步骤验证 undercloud 是否已正确注册:
列出 IdM 中的主机:
$ kinit admin $ ipa host-find确认 undercloud 上是否存在
/etc/novajoin/krb5.keytab。ls /etc/novajoin/krb5.keytab
novajoin 目录名称仅用于传统的命名目的。
在 overcloud 上配置 TLS-e
当您使用 TLS (TLS-e)部署 overcloud 时,来自 Undercloud 和 Overcloud 的 IP 地址将自动注册到 IdM。
在部署 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文件中的默认设置。您必须在openstack overcloud deploy命令中确保tls-parameters.yaml文件遵循enable-internal-tls.yaml。 - 有关实现 TLS-e 的参数的更多信息,请参阅 tripleo-ipa 的参数
-
显示的
部署 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 \ ...通过查询 keystone 以获取端点列表来确认每个端点正在使用 HTTPS:
openstack endpoint list