openstack heat和cloud-init的交互过程

最近在学习heat和magnum,按照现在的理解做一些总结,可能会存在不是很正确的地方,望指正:

  • openstack heat介绍
  • cloud-init介绍
  • opesntack heat和cloud-init交互过程

openstack heat

heat 是openstack用来部署复杂的虚机应用场景所开发的一个模块,可以通过heat-api接收前端页面或者命令行传递进来的请求,通过heat-engine用来和openstack的其他组件进行交互,获得相应的资源,形成生成虚机部署过程的stack;

cloud-init

cloud-init 是部署在虚机当中的一个或者说一组服务,只有在虚机第一次启动的时候会运行,cloud-init是会将创建虚机所带进来的userdata或者元数据读入进来,通过part-handler对用户携带的脚本进行分割,并依次执行配置脚本,完成整个虚机的创建和配置,cloud-init包括local,network,config,final等四个阶段,其中前两个阶段是通过获取的元数据metadata来对虚机做一些主机名或者网卡的配置,主要的工作是在config阶段完成,它会去读取相应的userdata并依次执行,final主要负责最后的一些清理工作

opesntack heat和cloud-init交互过程

  1. 关于metadata和userdata的获取
    虚机的metadata和userdata可以通过网络或者cdrom挂载的方式获取到,目前openstack的做法是通过cdrom的方式进行挂载的,也就是需要在nova中配置config-driver为true,这样的话就可以将heat生成的一些userdata和虚机原始的一些metadata挂载到虚机中的一个文件系统当中

  2. 关于heat和cloud-init的交互
    就我目前的理解,我觉得heat是在解析完不同的资源之后,会将需要配置的脚本进行打包为userdata,虚机的cloud-init在获取到这些user-data之后会对其进行分割成不同的part,在虚机内的/var/lib/cloud/中可以看到,之后cloud-init依次执行这些脚本,完成最后的配置过程

你可能感兴趣的:(openstack)