第 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.yamlmy_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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.