openstck-配置使用cloud-init

(文章来自作者维护的社区微信公众号【虚拟化云计算】)
目前有两个微信群《kvm虚拟化》和《openstack》,扫描二维码点击“云-交流”,进群交流提问
openstck-配置使用cloud-init_第1张图片
       cloud-init是在创建虚拟机时能够对虚拟机进行一些初始化操作的工程。在虚拟机启动的时候,对虚拟机进行一些列的操作,例如常用的:自动设置 虚拟机hostanme,设置虚拟机用户初始密码,自动安装软件等。OpenStack也支持配置cloud-init,本文介绍如何在openstack中使用cloud-init以及部分源码分析。
       在nova创建虚拟机的时候,根据用户的配置会使用产生一个元数据盘,其中包括虚拟机基本配置,包括常见的主机名、用户、密码、ip地址等,另外还可以添加用户的自定义数据。这个元数据盘会挂在给虚拟机。虚拟机启动时挂载此盘,供虚拟机内部的cloud-init软件使用,从而达到自动初始化虚拟机配置的功能。
 
一.计算节点配置:
1.启用产生元数据盘的功能配置
/etc/nova/nova.conf
[DEFAULT]
force_config_drive = True
flat_injected = True
说明:
force_config_drive:会在虚拟机的xml文件中生成一个disk设备,并把元数据配置文件保存到此设备中:
  
   ......
    
      
      
        
        
        
      
      
      
      
    
   ......
  
flat_injected:把网卡元数据配置文件保存到此设备中。
 
2.创建元数据盘的格式配置
/etc/nova/nova.conf
[DEFAULT]
config_drive_format = iso9660
说明:
config_drive_format的取值可以为:iso9660或者vfat。配置不同可产生不同格式的元数据盘。
 
二.计算节点的工作流程:
计算节点首先生成虚拟机的xml文件
生成xml文件后再创建元数据盘。(post_xml_callback=gen_confdrive)
最后启动虚拟机
创建元数据盘相关代码流程
nova/virt/libvirt/driver.py
def _create_configdrive(self, context, instance, admin_pass=None,
                            files=None, network_info=None, suffix=''):
        ........
        inst_md = instance_metadata.InstanceMetadata(
                    instance, content=files, extra_md=extra_md,
                    network_info=network_info, request_context=context)
        cdb = configdrive.ConfigDriveBuilder(instance_md=inst_md)
 
        cdb. make_drive(config_drive_local_path)
 
        config_drive_image. import_file(
                                instance, config_drive_local_path,
                                'disk.config' + suffix)
        ........
1.元数据的输入:由content、network_info、extra_md来生成元数据。
2.cdb中存放了所有注入的文件目录以及文件内容。
3.make_drive负责制作一个iso9660或者vfat格式的元数据盘,并把cdb中存放的元数据文件放入其中。
   (元数据盘默认建在:/var/lib/nova/instances/bb4b9d2f-04fb-4f95-97b2-b8d321a1d12c/disk.config)
4.import_file负责把创建好的源数据盘导入到存储中。
 
三.元数据盘中的内容:
下面以创建一个iso9660格式的盘来查看虚拟机内部元数据盘的内容
虚拟机启动后会有一个光盘设备,里面有ec2格式的文件,也有openstack格式的文件。
openstck-配置使用cloud-init_第2张图片
meta_data.json:
openstck-配置使用cloud-init_第3张图片
/content/0000:
openstck-配置使用cloud-init_第4张图片
network_data.json:
 
四.guest虚拟机中的 cloud-init
cloud-init的文档可参考: https://cloudinit.readthedocs.io/en/latest/topics/modules.html
 
===============================================================
关注微信公众号【虚拟化云计算】,阅读更多虚拟化云计算知识,纯技术干货更新不停。
 
openstck-配置使用cloud-init_第5张图片
 

你可能感兴趣的:(OpenStack)