前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在openstck中配置使用cloud-init

在openstck中配置使用cloud-init

作者头像
虚拟化云计算
修改2018-04-13 22:32:45
2.2K0
修改2018-04-13 22:32:45
举报

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设备,并把元数据配置文件保存到此设备中:

  <devices>

   ......

    <disk type='network' device='cdrom'>

      <driver name='qemu' type='raw' cache='writeback' discard='unmap'/>

      <source protocol='rbd' name='images/fc665b55-4fb9-416a-b1b0-8fee3d8b71bc_disk.config'>

        <host name='192.168.10.221' port='6789'/>

        <host name='192.168.10.222' port='6789'/>

        <host name='192.168.10.223' port='6789'/>

      </source>

      <target dev='hdd' bus='ide'/>

      <readonly/>

      <address type='drive' controller='0' bus='1' target='0' unit='1'/>

    </disk>

   ......

  </devices>

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格式的文件。

meta_data.json:

/content/0000:

network_data.json:

四.guest虚拟机中的cloud-init:

cloud-init的文档可参考:https://cloudinit.readthedocs.io/en/latest/topics/modules.html


关注本公众号,了解更多关于云计算虚拟化的知识。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚拟化云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档