结论: heat.conf中默认使用的domain和user,在keystone数据库中不存在,导致鉴权401失败,导致创建stack失败。
1.使用模板创建虚拟机
heat_template_version: 2018-09-04
description: Simple template to deploy a virtual machine.
resources:
my_hello_vm: #资源名
type: OS::Nova::Server # nova方法
properties:
image: cirros #镜像名
flavor: m1.small #flavor名
networks:
- network: testnet #网络名
检查创建的stack失败
检查engine日志,为keystone鉴权失败401:
查询keystone日志
不存在heat_domain_admin用户,在/etc/heat/heat.conf中配置,stack_domain_admin 的user 和stack_user_domain_name的domain,查询不存在。
使用命令创建 domain和user:
openstack domain create --description "Stack projects and users" heat_user_domain
openstack user create --domain heat_user_domain --password openstack heat_domain_admin
openstack role add --domain heat_user_domain --user-domain heat_user_domain --user heat_domain_admin admin
创建完成后,重启heat-api和heat-engine服务,重新创建stack,创建成功,如下