千家信息网

openstack学习-理解heat编排管理和简单操作

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,HEAT服务编排服务通过运行调用生成运行中云应用程序的OpenStack API为描述云应用程序提供基于模板的编排。该软件将其他OpenStack核心组件整合进一个单文件模板系统。模板允许你创建很多种
千家信息网最后更新 2025年12月02日openstack学习-理解heat编排管理和简单操作

HEAT服务

编排服务通过运行调用生成运行中云应用程序的OpenStack API为描述云应用程序提供基于模板的编排。该软件将其他OpenStack核心组件整合进一个单文件模板系统。模板允许你创建很多种类的OpenStack资源,如实例,浮点IP,云硬盘,安全组和用户。它也提供高级功能,如实例高可用,实例自动缩放,和嵌套栈。这使得OpenStack的核心项目有着庞大的用户群。

服务使部署人员能够直接或者通过定制化插件来与编排服务集成,简单来说就是用户可以预定义一个格式的任务模板,其中定义了一系列的相关任务,交给heat就会按一定的顺序执行heat模板中定义的任务。

架构

用户在horizon中或者命令行中提交包含模板和参数输入的请求,转化为REST格式的api调用,Heat-api和heat-api-cfn会验证模板的正确性,然后通过消息列队传递给heat engine来处理。
heat中的模板是openstack资源的集合,通过定义模板,可以将需要创建的资源在模板中描述,用此模板可以多次创建需要的资源

组件

Heat-api:提供REST API服务,是与其他组件交换的入口,接收api请求传给heat-engine
Heat-api-cfn:提供兼容AWS CloudFormation的api,接收请求转发给heat-engine
Heat-engine:核心组件,主要实现资源调度,资源生命周期管理等作用,自身并不提供资源创建功能,只负责编排资源后交给其他组件去处理

Heat Engine架构

模板

heat模板默认编写语言是YAML,关于yaml语言的定义和使用https://yaml.org/start.html


resource ID:资源ID,在模板的resources部分中必须是唯一的
type:资源类型:例如OS::Nova::Server或OS::Neutron::Port,必选属性
properties:特定资源的属性列表,可选属性
metadata:特定资源的元数据,可选
depends_on:资源依赖模板中的一个或者多个资源上,可选属性
update_policy:删除资源的策略,可选
deletion_policy:删除资源的策略。允许的删除策略是delete,retain和snapshot,可选,默认策略是从stack中删除资源时删除物理资源
external_id:允许为现有外部(到堆栈)资源指定resource_id,可选属性
condition:资源的条件,决定是否创建资源

Heat Stack

stack:资源的集合,管理一组资源的基本单位,用户操作的最小单位,通过对stack的生命周期管理,进而完成应用的部署和对资源的管理

常用命令
stack list
stack create
stack show
stack delete
stack output list
stack resource list
stack event show

编排场景


基础架构资源编排:对计算、存储和网络等基础资源进行编排,支持用户自定义脚本配置虚拟机
应用资源编排:实现对虚拟机的复杂配置,例如软件安装,配置软件
高级编排:例如应用的负载均衡和自动伸缩
第三方工具集成编排:复用现有的Ansible Playbook配置

基础架构编排

对于不同的openstack资源,heat提供了不同的资源类型。
例如虚拟机,heat提供了OS::Nova::Server,并提供参数,(key,image,flavor),参数可以在模板中指定,也可以在创建stack时提供

软件配置和部署的编排

常用的是OS::Heat::SoftwareConfig和OS::Heat::SoftwareDeployment

自动伸缩的编排

负载均衡的编排

配置管理工具集成

编排管理

编写HOT模板创建简单虚拟机实例

HOT模板可以通过在Openstack中创建yaml文件进行编写,也可以从外部导入已经完成的HOT模板
登陆controller节点,导入管理员环境变量

. admin-openrc.sh

安装python-heatclient

sudo apt install python-heatclient

然后输入以下命令,查看当前可用的镜像,规格,密钥对等信息

openstack image listopenstack flavor listopenstack keypair list

创建一个demo-template.yaml文件,作为HOT模板

touch demo-template.yamlvi demo-tempalte.yaml

按照如下编写,注意每个":"后都要有空格,即时没有字符也要有空格
可以用notpad++将文件写完后,上传,避免写错

heat_template_version: 2015-10-15parameters:  NetID:   type: string  description: Network ID to use for the instance.resources:  server:   type: OS::Nova::Server  properties:    image: Img_cli   flavor: Flavor_cli   key_name: KeyPairCli   networks:    - network: { get_param: NetID }outputs:  instance_name:   description: Name of the instance.  value: { get_attr: [server,name] } instance_ip:   description: IP address of the instance.  value: { get_attr: [server,first_address] }

其中resources.server中的image,flavor,key_name为环境中可用的镜像、规格和密钥对
查看当前网络

openstack network list


记录provider的id
执行以下命令设置环境变量的NET_ID

export NET_ID=

使用HOT模板 demo-template.yaml,创建堆栈Stack_demo

 openstack stack create -t demo-template.yaml --parameter "NetID=$NET_ID" Stack_demo


等待几分钟后,查看堆栈的创建过程

openstack stack event list Stack_demo


查看堆栈列表,状态变为CREATE_COMPLETE表示创建成功

openstack stack list


查看堆栈的详细信息

openstack stack show Stack_demo

查看堆栈创建完成后输出的虚拟机实例名称和IP

openstack stack output show --all Stack_demo

查看虚拟机实例列表进行确认

openstack server list

资源 模板 管理 堆栈 用户 配置 属性 组件 应用 服务 命令 实例 文件 架构 策略 软件 任务 参数 基础 核心 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全技术中密码属于 一万人同时游戏在线的服务器 二手电脑服务器 网络安全保障体系建设论坛 知道数据库第三章测试 电脑服务器传输数据 奉贤区车载网络技术 萍乡服务器回收价格 数据库3类完整性实现技术 军营网络安全宣传周主题板报标题 铁路网络安全什么时候截止 网络安全加固系统是什么 异构数据库核对工具 数据库是算法还是开发 通过保密认证的软件开发商 澳洲留学网络安全吗 从数据库中所有的表查找内容 移动办公服务器如何维护 ftp服务器下载及怎么管理 联想ftp服务器配置 重庆惠普服务器维修虚拟主机 计算机网络技术考研难么 长安杯网络安全极客挑战赛 服务器可以卖潜影盒吗 上海优嘻互联网信息科技有限公司 机架式服务器有多重 网络安全上方四十七条 员工培训软件开发服务 安阳市网络安全教育平台 医保代码数据库动态维护咨询电话
0