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 list
openstack flavor list
openstack keypair list
创建一个demo-template.yaml文件,作为HOT模板
touch demo-template.yaml
vi demo-tempalte.yaml
按照如下编写,注意每个":"后都要有空格,即时没有字符也要有空格
可以用notpad++将文件写完后,上传,避免写错
heat_template_version: 2015-10-15
parameters:
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
分享文章:openstack学习-理解heat编排管理和简单操作
路径分享:http://pwwzsj.com/article/jdghgo.html