• OpenStack的Heat组件详解


    一、什么Heat

    1. Heat 是一套业务流程平台,旨在帮助用户更轻松地配置以 OpenStack 为基础的云体系。利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自动化部署。
      Amazon Web Services 业务流程平台 CloudFormation (CFN)

    2. Heat 是 OpenStack 提供的自动编排功能的组件,基于描述性的模板,来编排复合云应用程序。

    二、为什么需要Heat

    1.Heat 采用了模板方式来设计或者定义编排,为方便用户使用,Heat 还提供了大量的模板例子,使用户能够方便地得到想要的编排。

    1. 更小的研发成本:引入 Heat,对于不了解 OpenStack 的研发者来说,可以更快的接入现有的业务系统。

    三、概念

    1. 堆栈(stack):管理资源的集合。单个模板中定义的实例化资源的集合,是 Heat 管理应用程序的逻辑单元,往往对应一个应用程序。
    2. 模板(template):如何使用代码定义和描述堆栈。描述了所有组件资源以及组件资源之间的关系,是 Heat 的核心。
    3. 资源(resource):将在编排期间创建或修改的对象。资源可以是网络、路由器、子网、实例、卷、浮动IP、安全组等。
    4. 参数(parameters):heat模板中的顶级key,定义在创建或更新 stack 时可以传递哪些数据来定制模板。
    5. 参数组(parameter_groups):用于指定如何对输入参数进行分组,以及提供参数的顺序。
    6. 输出(outputs):heat模板中的顶级key,定义实例化后 stack 将返回的数据。

    四:架构

    Heat 服务重要的组件:
    1. heat command-line client
    CLI通过与 heat-api 通信,来调用 API 实现相关功能。终端开发者可以直接使用编排 REST API。
    2. heat-api
    实现 OpenStack 原生支持的 REST API。该组件通过把 API 请求经由 AMQP 传送给 Heat engine 来处理 API 请求。
    3. heat-api-cfn
    提供与 AWS CloudFormation 兼容的、AWS 风格的查询 API,处理请求并通过 AMQP 将它们发送到 heat-engine。
    4. heat-engine
    heat-engine是heat中的核心模块,处理主要的逻辑业务。此模块提供heat最主要的功能。
    5. heat-cfntools
    完成虚拟机实例内部的操作配置任务,需要单独下载。这个工具用来完成虚拟机实例内部的操作配置任务。在创建虚拟机镜像时,需要在镜像中安装heat-cfntools工具。

    五.工作流程

    Heat Engine 在这里的作用分为三层: 第一层处理 Heat 层面的请求,就是根据模板和输入参数来创建 Stack,这里的 Stack 是由各种资源组合而成。 第二层解析 Stack 里各种资源的依赖关系,Stack 和嵌套 Stack 的关系。第三层就是根据解析出来的关系,依次调用各种服务客户段来创建各种资源。

    六.Heat 模板全称为heat orchestration template,简称为HOT
    模版中有四个关键段:
    . Parameters stack需要输入的参数 (可选)
    . Mapping 一组静态的Key/ValuePair ,用Fn::FindlnMap 来查找对应的值(可选)
    . Resource 资源 CPU Memory (必填)
    . Output 用户的返回值(可选)



    编排模板(HEAT)语言
    列出可以用于指定模板版本的命令:

    列出可用的资源类型:

    HOT提供了几个内置函数,用于执行模板中的特定任务。编排模板中的内部函数将值分配给在创建堆栈期间可用的属性。

    get_attr
    get_attr函数引用资源的属性。

    get_param
    get_param函数引用模板的一个输入参数并返回该输入参数的值。

    get_resource
    get_resource函数引用模板中的一个资源。

    str_replace
    str_replace函数将输入字符串中的变量替换为您指定的值。

    list_join
    list_join函数将一组字符串附加到单个值中,由指定的分隔符分隔。

  • 相关阅读:
    c#中String跟string的“区别”<转>
    JS中判断对象是否为空
    report builder地址:http://localhost/reports
    今天开始,主攻MS Dynamics CRM
    IO负载高的来源定位
    ORACL学习笔记 之 分区表
    Linux自动删除n天前日志
    Oracle中NVL2 和NULLIF的用法
    Ubuntu学习笔记之Sqldeveloper安装
    给ubuntu的swap分区增加容量
  • 原文地址:https://www.cnblogs.com/yyuuee/p/14180834.html
Copyright © 2020-2023  润新知