Heat 安装

执行范围#

仅控制节点(controller / 11.0.1.30)

Heat 提供基础设施编排能力,通过 HOT(Heat Orchestration Template)模板批量创建 Nova、Neutron 等资源。

Terminal window
source /etc/keystone/admin-openrc.sh

1. 创建数据库#

Terminal window
mysql -uroot -p000000 -e "CREATE DATABASE heat;"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' IDENTIFIED BY '000000';"
mysql -uroot -p000000 -e "GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' IDENTIFIED BY '000000';"

2. 注册 Keystone 用户与服务#

Terminal window
openstack user create --domain default --password 000000 heat
openstack role add --project service --user heat admin
openstack service create --name heat --description "Orchestration" orchestration
openstack service create --name heat-cfn --description "Orchestration" cloudformation
openstack endpoint create --region RegionOne orchestration public http://controller:8004/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne orchestration internal http://controller:8004/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne orchestration admin http://controller:8004/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne cloudformation public http://controller:8000/v1
openstack endpoint create --region RegionOne cloudformation internal http://controller:8000/v1
openstack endpoint create --region RegionOne cloudformation admin http://controller:8000/v1

3. 创建 Heat 专用域与用户#

Terminal window
openstack domain create --description "Stack projects and users" heat
openstack user create --domain heat --password 000000 heat_domain_admin
openstack role add --domain heat --user-domain heat --user heat_domain_admin admin
openstack role create heat_stack_owner
openstack role add --project demo --user demo heat_stack_owner
openstack role create heat_stack_user

4. 安装软件包#

Terminal window
yum install -y openstack-heat-api openstack-heat-api-cfn openstack-heat-engine openstack-heat-ui

5. 配置 /etc/heat/heat.conf#

Terminal window
crudini --set /etc/heat/heat.conf database connection mysql+pymysql://heat:000000@controller/heat
crudini --set /etc/heat/heat.conf DEFAULT transport_url rabbit://openstack:000000@controller
crudini --set /etc/heat/heat.conf DEFAULT heat_metadata_server_url http://controller:8000
crudini --set /etc/heat/heat.conf DEFAULT heat_waitcondition_server_url http://controller:8000/v1/waitcondition
crudini --set /etc/heat/heat.conf DEFAULT stack_domain_admin heat_domain_admin
crudini --set /etc/heat/heat.conf DEFAULT stack_domain_admin_password 000000
crudini --set /etc/heat/heat.conf DEFAULT stack_user_domain_name heat
crudini --set /etc/heat/heat.conf keystone_authtoken auth_uri http://controller:5000
crudini --set /etc/heat/heat.conf keystone_authtoken auth_url http://controller:5000
crudini --set /etc/heat/heat.conf keystone_authtoken memcached_servers controller:11211
crudini --set /etc/heat/heat.conf keystone_authtoken auth_type password
crudini --set /etc/heat/heat.conf keystone_authtoken project_domain_name default
crudini --set /etc/heat/heat.conf keystone_authtoken user_domain_name default
crudini --set /etc/heat/heat.conf keystone_authtoken project_name service
crudini --set /etc/heat/heat.conf keystone_authtoken username heat
crudini --set /etc/heat/heat.conf keystone_authtoken password 000000
crudini --set /etc/heat/heat.conf trustee auth_type password
crudini --set /etc/heat/heat.conf trustee auth_url http://controller:5000
crudini --set /etc/heat/heat.conf trustee username heat
crudini --set /etc/heat/heat.conf trustee password 000000
crudini --set /etc/heat/heat.conf trustee user_domain_name default
crudini --set /etc/heat/heat.conf clients_keystone auth_uri http://controller:5000

6. 同步数据库并启动#

Terminal window
su -s /bin/sh -c "heat-manage db_sync" heat
systemctl enable openstack-heat-api openstack-heat-api-cfn openstack-heat-engine
systemctl restart openstack-heat-api openstack-heat-api-cfn openstack-heat-engine
systemctl restart httpd memcached

7. 验收#

Terminal window
source /etc/keystone/admin-openrc.sh
systemctl is-active openstack-heat-api openstack-heat-api-cfn openstack-heat-engine
openstack service list | grep heat
openstack stack list

8. 示例 HOT 模板#

创建 /root/demo-template.yml

heat_template_version: 2018-08-31
parameters:
NetID:
type: string
description: Network ID to use for the instance.
ImageID:
type: string
description: Image ID to use for the instance.
resources:
server:
type: OS::Nova::Server
properties:
flavor: m1.tiny
networks:
- network: { get_param: NetID }
image: { get_param: ImageID }
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 ] }

使用 demo 用户创建栈:

Terminal window
source /etc/keystone/demo-openrc.sh
openstack stack create -t /root/demo-template.yml \
--parameter NetID=<private网络ID> \
--parameter ImageID=<cirros镜像ID> \
demo-stack
openstack stack list
openstack stack show demo-stack
文章目录

文章目录