Heat是OpenStack中的编排服务,通过YAML模板自动化资源管理。本文通过4个实战案例,详解如何用Heat模板创建用户体系、Swift容器、网络资源及云主机类型。
目标:在chinaskills
Domain下创建beijing_group
租户,并创建用户cloud
。
# user_create.yml
heat_template_version: 2016-04-08
resources:
chinaskills_domain:
type: OS::Keystone::Domain
properties:
name: chinaskills
description: "Domain for ChinaSkills"
beijing_group_project:
type: OS::Keystone::Project
properties:
name: beijing_group
domain: { get_resource: chinaskills_domain }
cloud_user:
type: OS::Keystone::User
properties:
name: cloud
domain: { get_resource: chinaskills_domain }
password: "000000"
default_project: { get_resource: beijing_group_project }
执行与验证:
openstack stack create -t user_create.yml test-stack
openstack domain list
openstack project list --domain chinaskills
openstack user list --domain chinaskills
目标:创建名为heat-swift
的Swift容器。
# create_swift.yaml
heat_template_version: 2016-04-08
resources:
swift_container:
type: OS::Swift::Container
properties:
name: heat-swift
执行与验证:
openstack stack create -t create_swift.yaml swift-stack
openstack container list
目标:创建私有网络Heat-Network
和子网Heat-Subnet
,配置DHCP地址池。
# create_net.yaml
heat_template_version: 2016-04-08
resources:
network:
type: OS::Neutron::Net
properties:
name: Heat-Network
shared: false
subnet:
type: OS::Neutron::Subnet
properties:
name: Heat-Subnet
network: { get_resource: network }
cidr: 10.20.2.0/24
allocation_pools:
- { start: 10.20.2.20, end: 10.20.2.100 }
enable_dhcp: true
执行与验证:
openstack stack create -t create_net.yaml network-stack
openstack network list
openstack subnet list
目标:定义名为centos_10g
的Flavor,配置为1核1GB内存10GB磁盘。
# create_flavor.yaml
heat_template_version: 2016-04-08
resources:
centos_flavor:
type: OS::Nova::Flavor
properties:
name: centos_10g
flavorid: "2001"
vcpus: 1
ram: 1024 # 单位MB
disk: 10 # 单位GB
执行与验证:
openstack stack create -t create_flavor.yaml flavor-stack
openstack flavor list
资源依赖:使用 get_resource
确保资源按顺序创建。
属性验证:确保CIDR、地址池等参数符合网络规划。
权限检查:执行Heat模板需具备足够的Keystone权限。
模板版本:指定heat_template_version
以兼容不同功能。
资源创建失败:检查YAML缩进及属性拼写错误。
网络冲突:确认CIDR不与现有网络重叠。
权限不足:确保执行用户拥有admin角色权限。
资源未找到:检查资源名称是否在指定Domain或租户下。
掌握Heat模板编写,助您在OpenStack中实现高效自动化运维!