关键词:
Heat 类似于AWS的CloudFormation, 是OpenStack Orchestration进程的一个项目,OpenStack Orchestration旨在创建一个人性化的服务去管理整个云架构,服务和应用的生命周期。heat实现了一种自动化的通过简单定义和配置就能实现的云部署方式。可以在heat模板中定义连串相关任务(例如用某配置开几台虚拟机,然后再去在其中一台中安装一个mysql服务,设定相关数据库属性,然后再配置几台虚拟机安装web服务集群等等),然后交由heat,由heat按照一定的顺序执行heat模板中定义的一连串任务。利用heat还可以连接到neutron来帮助编排负载均衡和其他网络功能。学习heat主要学习heat的template,heat的template描述了所用的所有组件资源以及组件资源之间的关系。 这些资源包括:servers,floating ips, volumes, security groups, users and others. Heat管理这些组件的生命周期,当你需要对现在的部署做一些修改的时候,你只需要对template做一些修改即可。Heat还可以与其他软件管理工具集成比如Puppet以及chef。
安装Heat
选择一个VM镜像,可以选择 http://cloud.fedoraproject.org/fedora-20.x86_64.qcow2F20 ,它包含了heat-cfntools包,当运行./stack.sh的时候Heat将会被加载到screen中前缀是h-. 假如需要使用Ceilometer Alarms功能你需要添加Ceilometer功能。需要做的是在devstack的localrc文件中添加如下:
- CEILOMETER_BACKEND=mysql
- enable_service ceilometer-acompute ceilometer-acentral ceilometer-collector ceilometer-api
- enable_service ceilometer-alarm-notifier ceilometer-alarm-evaluator
- #sudo apt-get install gitgit-review ctags
首先下载devstack
#git clone https://github.com/openstack-dev/devstack.git
然后准备localrc如下,灵活选择你感兴趣的项目,做减法处理。注意假如你的环境在proxy后面,而proxy又不支持git时,可以将stackrc中的GIT_BASE=$GIT_BASE:-git://git.openstack.org改为GIT_BASE=$GIT_BASE:- https://github.com
- #The localrc is used to deploy a Neutron+OVS+heat+ceilometer+tempest development env
- #OFFLINE True if no need to pull necessary packages again
- #OFFLINE=True
- #RECLONE True if all need a fresh repo environment
- #RECLONE=True
- ADMIN_PASSWORD=123
- MYSQL_PASSWORD=123
- RABBIT_PASSWORD=123
- SERVICE_PASSWORD=123
- SERVICE_TOKEN=123
- Q_PLUGIN=openvswitch
- disable_service n-net
- #enable necessary network comps
- ENABLED_SERVICES+=,neutron,q-svc,q-agt,q-dhcp,q-l3,q-meta
- #enable advanced services
- enable_service q-vpn q-lbaas q-fwaas
- #enable tempest for learning tempest
- enable_service tempest
- #enable heat
- enable_service heat h-api h-api-cfn h-api-cw h-eng
- #enable ceilometer for Ceilometer Alarms
- CEILOMETER_BACKEND=mysql
- enable_service ceilometer-acompute ceilometer-acentral ceilometer-collector ceilometer-anotification
- enable_service ceilometer-api
- enable_service ceilometer-alarm-notifier ceilometer-alarm-evaluator
-
- HOST_IP=<Host-IP>
- #VM images
- IMAGE_URLS="http://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-i386-uec.tar.gz"
- #IMAGE_URLS+=",http://uec-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img"
- IMAGE_URLS+=",http://cloud.fedoraproject.org/fedora-20.x86_64.qcow2"
-
- http_proxy=<http-proxy>
- https_proxy=<https-proxy>
- no_proxy=localhost,<Host-IP>
-
- #for IPSec VPNaaS
- IPSEC_PACKAGE=openswan
-
- #LOG configure
- SCREEN_LOGDIR=/opt/stack/screen-logs
- SYSLOG=True
- #DEST=/opt/stack/project
模板
https://github.com/openstack/heat-templates 提供一些templates参考例子来展示heat的一些核心功能。heat目前支持两种模板: 与CloudFormatior兼容的cnf目录下的模板以及自研的在hot目录下的HOT模板。 HOT模板基于YAML来展示,下面仅研究HOT模板。
写一个HOT hello world 模板
hello template file:
- heat_template_version: 2013-05-23
-
- description: Simple template to deploy a single compute instance
-
- resources:
- my_instance:
- type: OS::Nova::Server
- properties:
- key_name: heat_key
- image: cirros-0.3.0-i386-uec
- flavor: m1.tiny
查找上面模板相关参数的CLI过程如下:
- #admin tenant
- stack@vm:~/devstack$ . openrc admin admin
- #create heat_key keypair
- stack@vm:~$ nova keypair-add heat_key
- #get available image name
- stack@vm:~$ nova image-list
- #get instance ttype
- stack@vm:~$ nova flavor-list
- #create stack hello-stack with helo HOT
- stack@vm:~/hot-files$ heat stack-create -f ./hello hello-stack
- #list stack status
- stack@vm:~/hot-files$ heat stack-list
- #show events status of hello-stack
- stack@vm:~/hot-files$ heat event-list hello-stack
- #show status of hello-stack
- stack@vm:~/hot-files$ heat stack-show hello-stack
- heat_template_version: 2013-05-23
-
- description: Simple template to deploy a single compute instance
-
- parameters:
- key_name:
- type: string
- label: Key Name
- description: Name of key-pair to be used for compute instance
- image_name:
- type: string
- label: Image Name
- description: Image to be used for compute instance
- instance_type:
- type: string
- label: Instance Type
- description: Type of instance (flavor) to be used
-
- outputs:
- instance_ip:
- description: the ip addresss of the deployed instance_type
- value: get_attr: [my_instance, first_address]
-
- resources:
- my_instance:
- type: OS::Nova::Server
- properties:
- key_name: get_param: key_name
- image: get_param: image_name
- flavor: get_param: instance_type
- stack@vm:~/hot-files$ heat stack-create -f ./hello_input -P "key_name=heat_key;instance_type=m1.tiny;image_name=cirros-0.3.0-i386-uec" stack-vm2
-
- stack@vm:~/hot-files$ heat stack-list
django入门第一步(安装和创建一个简单的项目)(代码片段)
目录Django入门第一步(安装和创建一个简单的项目)一、Django项目目录结构二、注意事项三、Django安装3.1、安装命令3.2、验证django是否安装成功3.3、使用方法Django入门第一步(安装和创建一个简单的项目)在使用Django框架开发web... 查看详情
java入门第一步:搭建java环境
配置Java开发环境——JDK的安装与环境变量配置下载JDK,最新版的JDK1.8就行,下载连接自行百度,记得安装与你机器对应的版本,64位操作系统下载64位的,32位操作系统装32位的。配置环境变量如下图:点击新建,输入变量... 查看详情
three.js入门第一个案例(代码片段)
准备工作1.运用three.js进行3d开发,其实和页面编程一样,首先需要在html文件中引入three.js。Three.js使用面向对象的方式来构建程序,它包含3个基本对象:场景(scene),相机(camera),以及一个渲染器(renderer)。第一步:引入three.... 查看详情
elasticsearch入门第八篇:存储
这是ElasticSearch2.4版本系列的第八篇:ElasticSearch入门第一篇:Windows下安装ElasticSearchElasticSearch入门第二篇:集群配置ElasticSearch入门第三篇:索引ElasticSearch入门第四篇:使用C#添加和更新文档ElasticSearch入门第五篇:使用C#查询文档... 查看详情
redis技术探索「底层架构原理」帮你从底层彻底吃透rdb技术原理(入门第一步)(代码片段)
每日一句低头是一种能力,它不是自卑,也不是怯弱,它是清醒中的嬗变。有时,稍微低一下头,或者我们的人生路会更精彩。前提概要Redis是一个的键-值(K-V)对的内存数据库服务,通常包含了... 查看详情
springmvc入门第2天--springspringmvc与mybatis三大框架整合
文档版本开发工具测试平台工程名字日期作者备注V1.02016.07.01lutianfeinonespringmvc和mybatis整合需求:使用springmvc和mybatis完成商品列表查询。整合思路spring+springmvc+mybaits的系统架构:第一步:整合dao层mybatis和spring整合,通过spring管理... 查看详情
elasticsearch入门第一篇:windows下安装elasticsearch
这是ElasticSearch2.4版本系列的第一篇:ElasticSearch入门第一篇:Windows下安装ElasticSearchElasticSearch入门第二篇:集群配置ElasticSearch入门第三篇:索引ElasticSearch入门第四篇:使用C#添加和更新文档ElasticSearch入门第五篇:使用C#查询文档... 查看详情
avalonia跨平台入门第一篇
作为一枚屌丝程序员来说最大的爱好就是撸代码,有时候根本停不下来(沉迷工作,无法自拔);因为一直都是WPF开发,后面也摸索了一下Xamarin的东西;这不又看到其他人又在搞什么跨平台;我也是手也很痒痒;就像刚开始摸索Xamarin一样,想... 查看详情
elasticsearch入门第六篇:复合数据类型——数组,对象和嵌套
这是ElasticSearch2.4版本系列的第六篇:ElasticSearch入门第一篇:Windows下安装ElasticSearchElasticSearch入门第二篇:集群配置ElasticSearch入门第三篇:索引ElasticSearch入门第四篇:使用C#添加和更新文档ElasticSearch入门第五篇:使用C#查询文档... 查看详情
java入门入门第一天-开发环境的搭建-为什么要搭建环境-搭建步骤
...什么有了一定的了解。那么现在我们就可以开始Java的入门第一步啦---下载软件,搭建环境。 首先了解一下JVM、JRE、JDK JVM(JavaVir 查看详情
android入门第45天-手工发送一个broadcast(代码片段)
简介上一篇我们讲了简单的动态BroadCast,今天我们通过手工来发送一条BroadCast进一步来了解BroadCast。在上一篇里我们使用BroadCast监听网络状态,今天我们要完成的是自己发一条自自己的消息来触发BroadCastReceiver。设计为了... 查看详情
spring入门第一天
Spring的前世今生 查看详情
android入门第48天-静态broadcast之接受开机广播(代码片段)
简介我们在之前的BroadCast章节中写了动态BroadCast。但我们提过一笔BroadCast也有静态之分,而静态的BroadCast主要用于监听一些如:开机广播、SIM卡拨出插入等广播。这些广播都为静态注册广播事件。因此我们今天就以一个Ap... 查看详情
android入门第54天-sqlite中的transaction(代码片段)
简介上一篇我们完整的介绍了SQLite在Android中如何使用,今天我们要来讲一下“Transaction“即事务这个问题。我们经常在编程中会碰到这样的业务场景: 没问题一系列有业务关联性表操作的数据一起提交;事务中只要... 查看详情
java入门第一节课程
elasticsearch:分析器
ElasticSearch入门第七篇:分析器这是ElasticSearch2.4版本系列的第七篇:ElasticSearch入门第一篇:Windows下安装ElasticSearchElasticSearch入门第二篇:集群配置ElasticSearch入门第三篇:索引ElasticSearch入门第四篇:使用C#添加和更新文档ElasticSear... 查看详情
git入门第三讲:修改提交
Git入门第三讲:修改提交1.查看当前状态2.修改文件内容3.重新查看状态4.查看具体修改了什么内容5.添加文件6.提交所有添加文件############################################指令集#查看... 查看详情
springboot入门第二天:一个基于springboot的web应用,使用了springdatajpa和freemarker。
今天打算从数据库中取数据,并展示到视图中。不多说,先上图:第一步:添加依赖。打开pom.xml文件,添加必要的依赖,完整代码如下:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.... 查看详情