11.3. 配置和部署 overcloud
为 overcloud 置备网络资源和裸机节点后,您可以使用 director 安装提供的未编辑 heat 模板文件以及您创建的任何自定义环境文件来配置 overcloud。完成 overcloud 的配置后,您可以部署 overcloud 环境。
一个基本的 overcloud 会使用本地 LVM 存储作为块存储,这种配置不受支持。红帽建议您为块存储使用外部存储解决方案,如 Red Hat Ceph Storage。
11.3.1. 先决条件
- 您已置备了 overcloud 所需的网络资源和裸机节点。
11.3.2. 使用环境文件配置 overcloud
undercloud 包括一组构成您的 overcloud 创建计划的 heat 模板。您可以使用环境文件来自定义 overcloud 的各个方面,这些文件是 YAML 格式的文件,其内容可覆盖核心 heat 模板集合中的参数和资源。您可以根据需要纳入多个环境文件。环境文件扩展名必须是 .yaml
或 .template
。
红帽建议将自定义环境文件组织在一个单独目录中,比如 templates
目录。
您可以使用 -e
选项在 overcloud 部署中包括环境文件。使用 -e
选项添加到 overcloud 的所有环境文件都会成为 overcloud 堆栈定义的一部分。环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。
要在初始部署后修改 overcloud 配置,请执行以下操作:
- 修改定制环境文件和 heat 模板中的参数。
-
使用相同的环境文件再次运行
openstack overcloud deploy
命令
不要直接编辑 overcloud 配置,因为 director 在更新 overcloud 栈时会覆盖任何手动配置。
Open Virtual Networking (OVN)是 Red Hat OpenStack Platform 17.0 中的默认网络机制驱动程序。如果要将 OVN 与分布式虚拟路由 (DVR) 搭配使用,则必须在 openstack overcloud deploy
命令中包含 environments/services/neutron-ovn-dvr-ha.yaml
文件。如果要在没有 DVR 的情况下使用 OVN,则必须在 openstack overcloud deploy
命令中包含 environment/services/neutron-ovn-ha.yaml
文件。
11.3.3. 创建 undercloud CA 信任的环境文件
如果您的 undercloud 使用 TLS,而证书颁发机构 (CA) 未获得公开信任,可将此 CA 用于 undercloud 操作的 SSL 端点加密。为确保其余部署可以访问 undercloud 端点,请将您的 overcloud 节点配置成信任 undercloud CA。
要使这种方法奏效,overcloud 节点必须有一个指向 undercloud 公共端点的网络路由。依赖于脊叶型网络的部署可能必须应用这种配置。
有两种自定义证书可用于 undercloud:
-
用户提供的证书 - 当您自行提供证书时,会应用此定义。证书可能来自于您自己的 CA,也可能是自签名的。这通过使用
undercloud_service_certificate
选项来传递。在这种情况下,您必须信任自签名证书,或 CA(具体取决于您的部署)。 -
自动生成的证书 - 当您通过
certmonger
生成使用自己的本地 CA 的证书时,会应用此定义。使用undercloud.conf
文件中的generate_service_certificate
选项启用自动生成的证书。在这种情况下,director 在/etc/pki/ca-trust/source/anchors/cm-local-ca.pem
生成 CA 证书,并配置 undercloud 的 HAProxy 实例以使用服务器证书。将 CA 证书添加到inject-trust-anchor-hiera.yaml
文件中以将其呈现给 OpenStack Platform。
本例中使用了位于 /home/stack/ca.crt.pem
的一个自签名证书。如果您使用自动生成的证书,请改为使用 /etc/pki/ca-trust/source/anchors/cm-local-ca.pem
。
步骤
打开证书文件,仅复制证书部分。不要包括其密钥:
$ vi /home/stack/ca.crt.pem
您需要的证书部分与下方简写的示例类似:
-----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3 -----END CERTIFICATE-----
创建一个名为
/home/stack/inject-trust-anchor-hiera.yaml
的 YAML 文件,其包含下列内容以及您从 PEM 文件复制而来的证书:parameter_defaults: CAMap: undercloud-ca: content: | -----BEGIN CERTIFICATE----- MIIDlTCCAn2gAwIBAgIJAOnPtx2hHEhrMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJOQzEQMA4GA1UEBwwHUmFsZWlnaDEQMA4GA1UECgwH UmVkIEhhdDELMAkGA1UECwwCUUUxFDASBgNVBAMMCzE5Mi4xNjguMC4yMB4XDTE3 -----END CERTIFICATE-----
注意- 证书字符串必须采用 PEM 格式。
-
CAMap
参数可能包含其他与 SSL/TLS 配置相关的证书。
-
将
/home/stack/inject-trust-anchor-hiera.yaml
文件添加到部署命令中。在部署 overcloud 的过程中,director 将 CA 证书复制到每个 overcloud 节点。因此,每个节点都会信任 undercloud 的 SSL 端点提供的加密。
11.3.4. 在新部署中禁用 TSX
从 Red Hat Enterprise Linux 8.3 开始,内核默认禁用对 Intel 事务同步扩展 (TSX)功能的支持。
您必须为新的 overcloud 显式禁用 TSX,除非您特别需要将其用于工作负载或第三方供应商。
在环境文件中设置 KernelArgs
heat 参数。
parameter_defaults: ComputeParameters: KernelArgs: "tsx=off"
在运行 openstack overcloud deploy
命令时包含该环境文件:
11.3.5. 验证 overcloud 配置
在部署 overcloud 之前,请验证您的 heat 模板和环境文件。
由于对 17.0 中的 API 的更改,以下验证目前不稳定:
- switch-vlans
- network-environment
- dhcp-provisioning
-
FAILED
验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED
验证可能会显示生产环境中潜在的问题。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
undercloud 凭证文件:$ source ~/stackrc
使用部署所需的所有环境文件更新 overcloud 堆栈:
$ openstack overcloud deploy --templates \ -e environment-file1.yaml \ -e environment-file2.yaml \ ... --stack-only
验证您的 overcloud 堆栈:
$ validation run \ --group pre-deployment \ --inventory <inventory_file>
-
将
<inventory_file
> 替换为 Ansible 清单文件的名称和位置,如~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml
。
注意当您运行验证时,输出中的
Reasons
列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。-
将
查看验证报告的结果:
$ validation history get [--full] [--validation-log-dir <log_dir>] <uuid>
-
可选: 使用
--full
选项查看验证运行中的详细输出。 -
可选: 使用
--validation-log-dir
选项将验证运行的输出写入验证日志。 -
将
<uuid
> 替换为验证运行的 UUID。
-
可选: 使用
11.3.6. 创建 overcloud
创建 Red Hat OpenStack Platform (RHOSP) overcloud 环境的最后一个阶段是运行 openstack overcloud deploy
命令以创建 overcloud。有关可用于 openstack overcloud deploy
命令的选项的信息,请参阅 部署命令选项。
流程
收集 overcloud 环境所需的环境文件和配置文件,以及 director 安装提供的未编辑 heat 模板文件,以及您创建的自定义环境文件。这应该包括以下文件:
-
overcloud-baremetal-deployed.yaml
节点定义文件。 -
overcloud-networks-deployed.yaml
网络定义文件。 -
overcloud-vip-deployed.yaml
网络 VIP 定义文件。 - 容器化 OpenStack 服务的容器镜像位置。
- 任何用于红帽 CDN 或 Satellite 注册的环境文件。
- 任何其它自定义环境文件。
-
- 按照优先级顺序组织环境文件,首先列出未编辑的 heat 模板文件,后跟包含自定义配置的环境文件,如覆盖默认属性。
构建
openstack overcloud deploy
命令,按所需顺序指定配置文件和模板,例如:(undercloud) $ openstack overcloud deploy --templates \ [-n /home/stack/templates/network_data.yaml \ ] -e /home/stack/templates/overcloud-baremetal-deployed.yaml\ -e /home/stack/templates/overcloud-networks-deployed.yaml\ -e /home/stack/templates/overcloud-vip-deployed.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /home/stack/inject-trust-anchor-hiera.yaml \ [-r /home/stack/templates/roles_data.yaml ]
- -n /home/stack/templates/network_data.yaml
- 指定自定义网络配置。如果您使用网络隔离或自定义可组合网络,则需要此项。有关配置 overcloud 网络的详情,请参考配置 overcloud 网络。
- -e /home/stack/containers-prepare-parameter.yaml
- 添加容器镜像准备环境文件。您在安装 undercloud 的过程中生成了此文件,可使用此文件创建 overcloud。
- -e /home/stack/inject-trust-anchor-hiera.yaml
- 添加用于在 undercloud 中安装自定义证书的环境文件。
- -r /home/stack/templates/roles_data.yaml
- 如果使用自定义角色或想要启用多架构云,则生成的角色数据。
overcloud 创建完毕后,director 会提供为配置 overcloud 而执行的 Ansible play 的总结:
PLAY RECAP ************************************************************* overcloud-compute-0 : ok=160 changed=67 unreachable=0 failed=0 overcloud-controller-0 : ok=210 changed=93 unreachable=0 failed=0 undercloud : ok=10 changed=7 unreachable=0 failed=0 Tuesday 15 October 2018 18:30:57 +1000 (0:00:00.107) 1:06:37.514 ****** ========================================================================
overcloud 创建完成后,director 提供了访问 overcloud 的详细信息:
Ansible passed. Overcloud configuration completed. Overcloud Endpoint: http://192.168.24.113:5000 Overcloud Horizon Dashboard URL: http://192.168.24.113:80/dashboard Overcloud rc file: /home/stack/overcloudrc Overcloud Deployed
您可以将部署命令保留在每次使用新的 env 文件更新配置时添加到的文件中。
11.3.7. 部署命令选项
下表列出 openstack overcloud deploy
命令的其他参数。
一些选项在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它们只应用于测试,不应在生产环境中使用。有关技术预览功能的更多信息,请参阅覆盖范围详细信息。
参数 | 描述 |
---|---|
|
包含您要部署的 heat 模板的目录。如果为空,部署命令会使用位于 |
| 要创建或更新的堆栈的名称 |
| 以分钟为单位的部署超时持续时间 |
| 要用于虚拟机监控程序的虚拟化类型 |
|
要用于同步时间的网络时间协议 (NTP) 服务器。您也可以在以逗号分隔的列表中指定多个 NTP 服务器,例如: |
|
为环境变量 |
|
定义访问 overcloud 节点的 SSH 用户。SSH 访问通常通过 |
| 定义用于 SSH 访问 overcloud 节点的密钥路径。 |
| 定义要用于 SSH 访问 overcloud 节点的网络名称。 |
|
要传递给 overcloud 部署的额外环境文件。您可以多次指定此选项。请注意,传递到 |
| 包含要在部署中包括的环境文件的目录。部署命令以数字顺序,然后以字母顺序处理这些环境文件。 |
|
定义角色文件并覆盖 |
|
定义网络文件并覆盖 |
|
定义计划环境文件,并覆盖 |
| 如果您不希望在部署后删除临时文件,并记录其位置,则使用此选项。 |
| 如果您要在不执行实际部署的情况下更新计划,则使用此选项。 |
| overcloud 在创建过程中会执行一组部署前检查。如果部署前检查出现任何非严重错误,则此选项会退出创建。我们推荐使用此选项,因为任何错误都有可能造成部署失败。 |
| overcloud 在创建过程中会执行一组部署前检查。如果部署前检查出现任何非关键警告,则此选项会退出创建。openstack-tripleo-validations |
| 如果您要在不创建 overcloud 的情况下对 overcloud 执行验证检查,则使用此选项。 |
|
使用此选项从 |
| 使用此选项跳过 overcloud 部署后配置。 |
| 使用此选项强制进行 overcloud 部署后配置。 |
|
如果您不希望部署命令为 |
| 带有选项和参数的 YAML 文件的路径。 |
| 如果要禁用 overcloud 服务的密码生成,则使用此选项。 |
|
如果要部署预置备 overcloud 节点,则使用此选项。与 |
|
如果您要禁用 |
|
如果您要禁用 overcloud 栈创建,并仅运行 |
|
要用于保存 |
|
Ansible 配置文件的路径。该文件的配置会覆盖 |
|
您要用于 |
|
(技术预览)将此选项与以逗号分隔的节点列表一起使用,将 config-download playbook 的执行限制在特定节点或一组节点。例如,当想要仅在新节点上运行 config-download 时, |
| (技术预览)将此选项与 config-download playbook 中的以逗号分隔的标签列表一起使用,通过一组特定 config-download 任务来运行部署。 |
| (技术预览)将此选项与您要从 config-download playbook 中跳过的以逗号分隔的标签列表一起使用。 |
运行以下命令查看完整选项列表:
(undercloud) $ openstack help overcloud deploy
某些命令行参数已过时或已弃用,它们的功能可以通过环境文件的 parameter_defaults
部分中所包含的 heat 模板参数实现。下表将已弃用的参数与 heat 模板中的等效参数对应了起来。
参数 | 描述 | Heat 模板参数 |
---|---|---|
| 扩展的 Controller 节点数量 |
|
| 扩展的 Compute 节点数量 |
|
| 扩展的 Ceph 节点数量 |
|
| 扩展的 Block Storage (cinder) 节点数量 |
|
| 扩展的 Object Storage (swift) 节点数量 |
|
| 要用于 Controller 节点的 flavor |
|
| 要用于 Compute 节点的 flavor |
|
| 要用于 Ceph Storage 节点的 flavor |
|
| 要用于 Block Storage (cinder) 节点的 flavor |
|
| 要用于 Object Storage (swift) 节点的 flavor |
|
| overcloud 在创建过程中会执行一组部署前检查。在使用这个选项时,如果部署前检查出现任何严重错误,则会退出创建。我们推荐使用此选项,因为任何错误都有可能造成部署失败。 | 未进行参数映射 |
|
完全禁用部署前验证。这些验证是内置部署前验证,已由 | 未进行参数映射 |
|
使用 | 未进行参数映射 |
| 使用此选项把 overcloud 节点注册到客户门户或 Satellite 6。 |
|
|
使用此选项定义您要用于 overcloud 节点的注册方法。 |
|
| 要用于注册的组织。 |
|
| 使用此选项注册系统(即使已经注册过)。 |
|
|
注册 overcloud 节点的 Satellite 服务器的基本 URL。此参数需要使用 Satellite 的 HTTP URL 而不是 HTTPS URL。例如,使用 http://satellite.example.com 而不是 https://satellite.example.com。overcloud 的创建过程会使用此 URL 来确定服务器是 Red Hat Satellite 5 还是 Red Hat Satellite 6 服务器。如果服务器是 Red Hat Satellite 6 服务器,则 overcloud 获取 |
|
| 使用此选项定义您要用于注册的激活码。 |
|
这些参数计划从未来的 Red Hat OpenStack Platform 版本中移除。
11.3.8. 验证 overcloud 部署
验证部署的 overcloud。
先决条件
- 您已部署了 overcloud。
流程
查找
stackrc
凭证文件:$ source ~/stackrc
验证 overcloud 部署:
$ validation run \ --group post-deployment \ [--inventory <inventory_file>]
将
<inventory_file
> 替换为 ansible 清单文件的名称。默认情况下,动态清单名为tripleo-ansible-inventory
。注意当您运行验证时,输出中的
Reasons
列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
查看验证报告的结果:
$ validation show run [--full] <UUID>
-
将
<UUID
> 替换为验证运行的 UUID。 -
可选: 使用
--full
选项查看验证运行中的详细输出。
-
将
FAILED
验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED
验证可能会显示生产环境中潜在的问题。
额外的资源
11.3.9. 访问 overcloud
director 生成凭据文件,其中包含从 undercloud 操作 overcloud 所需的凭据。director 将此文件保存为 stack
用户主目录的 overcloudrc
文件。
流程
获取
overcloudrc
文件:(undercloud)$ source ~/overcloudrc
命令提示符更改以表示您正在访问 overcloud:
(overcloud)$
要返回与 undercloud 交互,请提供
stackrc
文件:(overcloud)$ source ~/stackrc (undercloud)$
命令提示符更改以表示您正在访问 undercloud:
(undercloud)$