第 5 章 编配
Red Hat OpenStack Platform (RHOSP) director 使用 Heat 编配模板(HOT)作为其 overcloud 部署计划的模板格式。HOT 格式的模板通常以 YAML 格式表示。模板的目的是定义和创建堆栈,这是 heat 创建的资源集合,以及资源的配置。资源是 RHOSP 中的对象,可以包含计算资源、网络配置、安全组、扩展规则和自定义资源。
要使 RHOSP 使用 heat 模板文件作为自定义模板资源,文件扩展必须是 .yaml
或 .template
。
本章提供了一些了解 HOT 语法的基础知识,以便您可以创建自己的模板文件。
5.1. 学习 heat 模板基础知识
5.1.1. 了解 heat 模板
Heat 模板有三个主要部分:
- 参数
-
这些设置传递到 heat,以自定义堆栈。您还可以使用 heat 参数自定义默认值。这些设置在模板的
parameter
部分中定义。 - Resources
-
这些是作为堆栈一部分创建和配置的具体对象。Red Hat OpenStack Platform (RHOSP)包含跨越所有组件的一组核心资源。它们在模板的
resources
部分中定义。 - 输出
-
在创建堆栈后,这些值从 heat 传递。您可以通过 heat API 或客户端工具访问这些值。它们在模板的
output
部分中定义。
以下是基本 heat 模板的示例:
heat_template_version: 2013-05-23 description: > A very basic Heat template. parameters: key_name: type: string default: lars description: Name of an existing key pair to use for the instance flavor: type: string description: Instance type for the instance to be created default: m1.small image: type: string default: cirros description: ID or name of the image to use for the instance resources: my_instance: type: OS::Nova::Server properties: name: My Cirros Instance image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } output: instance_name: description: Get the instance's name value: { get_attr: [ my_instance, name ] }
此模板使用 资源类型:OS::Nova::Server
创建名为 my_instance
的实例,其具有特定类别、镜像和密钥。堆栈可以返回 instance_name
的值,它名为 My Cirros Instance
。
heat 模板还需要 heat_template_version
参数,该参数定义要使用的语法版本以及可用的功能。如需更多信息,请参阅 官方 Heat 文档。
5.1.2. 了解环境文件
环境文件是特殊的模板,可为您的 heat 模板提供自定义。这包括三个关键部分:
- 资源 Registry
-
本节定义链接到其他 heat 模板的自定义资源名称。这提供了一种方法,可以创建在核心资源集合中不存在的自定义资源。它们在环境文件的
resource_registry
部分中定义。 - 参数
-
这些是适用于顶级模板参数的通用设置。例如,如果您有一个部署嵌套堆栈(如资源 registry 映射)的模板,这些参数仅适用于顶级模板,而不是嵌套资源的模板。参数在环境文件的
parameters
部分中定义。 - 参数默认值
-
这些参数为所有模板中的参数修改默认值。例如,如果您有一个部署嵌套堆栈的 heat 模板,如资源 registry 映射,则参数默认为所有模板。参数默认值在环境文件的
parameter_defaults
部分中定义。
为 overcloud 创建自定义环境文件时,请使用 parameter_defaults
而不是 参数
。这样的参数将应用到 overcloud 的所有堆栈模板。
基本环境文件示例:
resource_registry: OS::Nova::Server::MyServer: myserver.yaml parameter_defaults: NetworkName: my_network parameters: MyIP: 192.168.0.1
从 heat 模板 my_template.yaml
创建堆栈时,可能会包含环境文件my_env.yaml
。my_env.yaml
文件会创建一个名为 OS::Nova::Server::MyServer
的新资源类型。myserver.yaml
文件是一个 heat 模板文件,为这个资源类型提供实现,可覆盖任何内置文件。您可以在 my_template.yaml
文件中包含 OS::Nova::Server::MyServer
资源。
MyIP
将参数应用于使用此环境文件部署的主要 heat 模板。在本例中,它只适用于 my_template.yaml
中的参数。
NetworkName
适用于主 heat 模板 my_template.yaml
和与包含主模板的资源关联的模板,如 OS::Nova::Server::MyServer
资源及其 myserver.yaml
模板。
要使 RHOSP 使用 heat 模板文件作为自定义模板资源,文件扩展必须是 .yaml
或 .template
。