ubuntu-cloud映像在LXC和libvirt-lxc之间的不同行为

我已经使用Ubuntu的云模板作为LXC容器,他们都运行良好。 最近我切换到使用libvirt-lxc ,并遵循Ubuntu文档中的说明 ,但图像初始化与LXC不同:

  1. 试图连接到AWS的元数据服务器,并得到错误:

     2013-02-05 00:55:48,209 - util.py[WARNING]: 'http://169.254.169.254/2009-04-04/meta-data/instance-id' failed [50/120s]: url error [timed out] 
  2. 默认密码不起作用。 我需要通过修改rootfs的/etc/shadow来启用密码,因为默认密码“ubuntu”账号已被禁止。

我认为LXC会预先处理cloud-init问题,并为其提供一些用户数据和元数据。 我试图find如何手动执行此操作,但是cloud-init文档页面并没有帮助, 因为它的例子都是针对euca-tools

我还注意到lxc-start有一个选项-C“-C选项将创build一个云容器,configuration为与元数据服务一起使用。 但是我只是不知道如何映射这个选项,并且所有的相关设置libvirt_lxc

我如何正确地启动映像/ rootfs?

好的,经过几天的search解决了cloud-init问题,我发现我可以准备一个seed磁盘挂载到guest系统中,让cloud-init启动。 详细:

  1. 使用LXC rootfs创buildlibvirt域XML
  2. 准备meta-datauser-data文件就在这个参考之后
  3. 我们可以在我们的领域XML中添加一个装载选项,而不是创build一个ISO文件,以将文件播种到cloud-init

     <!-- language: lang-xml --> <filesystem type='mount'> <source dir='./seed-dir-path'/> <!-- Make sure your rootfs has `/var/lib/cloud/seed` directory first--> <target dir='/var/lib/cloud/seed/nocloud'/> </filesystem> 
  4. 定义域并启动它。 现在, cloud-init将获得meta-datauser-data

而且, cloud-init缺less文档1和2 。 我花了很多时间从问题跟踪器,博客甚至github回购信息中search信息。 相比之下, libvirt至less有一个有用的Wiki。