# OpenStack_Heat ## Heat编排运维 ​ Heat是OpenStack的编排服务,通过使用编排的模板来进行自动化事务管理, 因为资料比较稀碎,文档结构比较乱。 ### 案例分析 #### 编写yml文件,创建云主机。 ​ 本次案例我们将编写yml文件来使用Heat创建云主机。 #### 编写文件 ``` yaml description: create cirros server heat_template_version: '2013-05-23' resources: cirros: properties: flavor: Fmin image: cirros networks: - {network: intnet} type: OS::Nova::Server ``` #### 加载yml文件 ``` shell opensatack stack create --template create_server.yml create_server ``` ## Heat模板文件: ### 模板1 ```yaml heat_template_version: 2015-04-30 ### HOT版本 description: ### 说明 # a description of the template parameter_groups: ### 指定参数顺序 - label: description: parameters: - - parameters: ### 传递的参数 : ### 参数名 type: ### 参数类型 label: ### 标签 description: default: hidden: ### 是否隐藏 constraints: ### 已有的内置参数:OS::stack_name、OS::stack_id、OS::project_id immutable: resources: ### 资源对象 : ### 资源的ID type: ### 资源的类型 properties: ### 资源的属性 : metadata: ### 资源的元数据 depends_on: update_policy: deletion_policy: outputs: ### 返回值 : ### 参数名 description: ### 说明 value: ### 输出值 ``` ### 模板2 ``` yaml heat_temp_version:2016-04-30 # HOT版本 Description: AWS::CloudWatch::Alarm using Ceilometer. # 描述信息 parameters: # 传递的参数 user_name: # 参数名 type: string # 参数类型 label: User Name # 标签 description: User name to be configured for the application port_number: # 参数名 type: number # 参数类型 label: Port Number # 参数标签 description: Port number to be configured for the web server resources: #资源对象 my_instance:  # 资源ID type: OS::Nova::Server # 资源类型 properties: # 资源属性 flavor: m1.small # 资源元数据 image: F18-x86_64-cfntools outputs: # 返回值 instance_ip: # 参数名 description: IP address of the deployed compute instance value: { get_attr: [my_instance, first_address] } # 输出值 ``` ### 模板3 ``` yaml heat_template_version: 2015-10-15 description: Sample Nova Host Aggregate template parameters: host_aggregate_name: type: string description: Nova host aggregate name availability_zone_name: type: string description: Nova availability zone name hosts: type: comma_delimited_list description: Nova host name list metadata: type: json description: Arbitrary key/value metadata resources: sample_host_aggregate: type: OS::Nova::HostAggregate properties: name: {get_param: host_aggregate_name} availability_zone: {get_param: availability_zone_name} hosts: {get_param: hosts} metadata: {get_param: metadata} outputs: sample_host_aggregate_id: value: {get_resource: sample_host_aggregate} description: Sample nova host_aggregate ``` ## 练习内容 ### 使用Heat创建云主机类型 ``` yaml # 创建f1.flavor云主机类型,硬盘:20GB,ID:1234,内存:1024MB,CPU数量:2。 heat_template_version: 2015-04-30 description: create flavor by vcpu:2 name:m1.flavor id:1234 ram:1024mb disk:20gb resources: m1.flavor: type: OS::Nova::Flavor properties: disk: 20 flavorid: 1234 name: f1.flavor ram: 1024 vcpus: 2 ###################################### description: create flavor by vcpu:2 name:m1.flavor id:1234 ram:1024mb disk:20gb heat_template_version: '2015-04-30' resources: m1.flavor: properties: {disk: 20, flavorid: 1234, name: f1.flavor, ram: 1024, vcpus: 2} type: OS::Nova::Flavor ``` ### 创建云主机_1 ``` yaml heat_template_version: 2015-04-30 description: create server "cirros" by image:cirros,flavor:Fmin,network:intnet,subnet:intsubnet,floating_ip:192.168.200.60,name:cirros. resources: server_cirros: type: OS::Nova::Server properties: image: cirros flavor: Fmin networks: - {network: intnet, subnet: intsubnet_2, floating_ip: 16a625e4-9552-48eb-95f1-daaa846b0f77} name: cirros ``` ## Heat 使用 ### 现象1 ​ 使用Heat编写堆伐(stack)创建的内容,在堆伐被删除后也会被删除。 ### 现象2 ​ 成功导入堆伐后会自动在后台生成更标准的模板文件。 ### 现象3 ​ 绑定浮动IP地址要写浮动IP的ID ### 现象4 ​ 创建模板文件的时候可以指定传递参数进入 `--parameters "参数名=参数值"` ## Heat 模板文件常用英文单词 | 英文 | 含义 | | ----------- | ----------------------- | | parameters | 传递参数;顶级关键字 | | resources | 资源对象;顶级关键字 | | description | 注释 | | properties | 属性,配合resources使用 | | template | 模板 |