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
等命令。这些流程是幂等的,仅调整现有的部署配置以匹配更新的模板和配置文件。
配置
/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_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
在 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
在 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
文件中的默认设置。您必须确保tls-parameters.yaml
文件遵循openstack overcloud deploy
命令中的enable-internal-tls.yaml
。 - 有关用于实现 TLS-e 的参数的更多信息,请参阅 tripleo-ipa 的参数。
-
[可选] 如果您的 IPA 域与您的 IPA 域不匹配,还必须在
tls-parameters.yaml
文件中包含CertmongerKerberosRealm
参数的值:CertmongerKerberosRealm: EXAMPLE.COMPANY.COM
部署 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