第 7 章 使用 heat 模板
本指南中的自定义配置使用 heat 模板和环境文件来定义 overcloud 的某些方面。本章介绍了 Red Hat OpenStack Platform 上下文中 heat 模板的结构的基本介绍。模板的目的是定义和创建堆栈,这是 heat 创建的资源集合,以及资源的配置。资源是 OpenStack 中的对象,可以包含计算资源、网络配置、安全组、扩展规则和自定义资源。
heat 模板的结构包含三个主要部分:
参数
参数是传递给 heat 的设置。使用这些参数定义和自定义默认值和非默认值。在模板的 parameter 部分中定义这些参数。
Resources
资源是您要创建和配置堆栈的一部分的特定对象。OpenStack 包含一组核心资源,跨越所有组件。在模板的 resources 部分中定义资源。
输出
这些值是在堆栈创建后从 heat 传递的值。您可以通过 heat API 或客户端工具访问这些值。在模板的 output 部分中定义这些值。
当 heat 处理模板时,它会为模板创建堆栈,并为资源模板创建一组子堆栈。您使用模板定义的主堆栈中的这种堆栈层次结构。您可以使用以下命令查看堆栈层次结构:
$ heat stack-list --show-nested
7.1. 核心 heat 模板
Red Hat OpenStack Platform 包含 overcloud 的核心 heat 模板集合。您可以在 /usr/share/openstack-tripleo-heat-templates
目录中找到此集合。
此集合中有许多 heat 模板和环境文件。本节介绍可用于自定义部署的主文件和目录。
overcloud.j2.yaml
此文件是用于创建 overcloud 环境的主要模板文件。此文件使用 Jinja2 语法并迭代模板中的某些部分来创建自定义角色。Jinja2 格式在 overcloud 部署期间呈现为 YAML。
overcloud-resource-registry-puppet.j2.yaml
此文件是您用于创建 overcloud 环境的主要环境文件。此文件包含 overcloud 镜像上 Puppet 模块的一组配置。在 director 将 overcloud 镜像写入每个节点后,heat 会使用此环境文件中注册的资源启动每个节点的 Puppet 配置。此文件使用 Jinja2 语法并迭代模板中的某些部分来创建自定义角色。Jinja2 格式在 overcloud 部署期间呈现为 YAML。
roles_data.yaml
此文件包含 overcloud 中角色的定义,并将服务映射到每个角色。
network_data.yaml
此文件包含 overcloud 中网络及其属性的定义,包括子网、分配池和 VIP 状态。默认 network_data.yaml
文件只包含默认网络: External、Internal Api、Storage、Storage Management、Tenant 和 Management。您可以创建自定义 network_data.yaml
文件,并使用 -n
选项将其包含在 openstack overcloud deploy
命令中。
plan-environment.yaml
此文件包含 overcloud 计划的元数据定义,包括计划名称、您要使用的主模板以及您要应用到 overcloud 的环境文件。
capabilities-map.yaml
此文件包含 overcloud 计划的环境文件映射。使用此文件在 director Web UI 中描述和启用环境文件。如果您在 environment
目录中包含自定义环境文件,但没有在 capabilities-map.yaml
文件中定义这些文件,您可以在 web UI 的 Overall Settings 页面的 Other 子选项卡中找到这些环境文件。
environments
此目录包含额外的 heat 环境文件,可用于创建 overcloud。这些环境文件为您的 Red Hat OpenStack Platform 环境启用额外的功能。例如,您可以使用 cinder-netapp-config.yaml
环境文件为块存储服务(cinder)启用 NetApp 后端存储。如果您在 environment
目录中包含自定义环境文件,但没有在 capabilities-map.yaml
文件中定义这些文件,您可以在 web UI 的 Overall Settings 页面的 Other 子选项卡中找到这些环境文件。
network
此目录包含一组 heat 模板,可用于创建隔离的网络和端口。
puppet
此目录包含 puppet 模板。overcloud-resource-registry-puppet.j2.yaml
环境文件使用 puppet
目录中的文件来驱动每个节点上的 Puppet 配置应用。
puppet/services
此目录包含可组合服务架构中所有服务的 heat 模板。
extraconfig
此目录包含可用于启用额外功能的模板。例如,您可以使用 extraconfig/pre_deploy/rhel-registration
目录,将节点注册到 Red Hat Content Delivery 网络,或使用您自己的 Red Hat Satellite 服务器注册。