我已经使用Ubuntu的云模板作为LXC容器,他们都运行良好。 最近我切换到使用libvirt-lxc ,并遵循Ubuntu文档中的说明 ,但图像初始化与LXC不同:
试图连接到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]
默认密码不起作用。 我需要通过修改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启动。 详细:
libvirt域XML meta-data和user-data文件就在这个参考之后 我们可以在我们的领域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>
定义域并启动它。 现在, cloud-init将获得meta-data和user-data 。
而且, cloud-init缺less文档1和2 。 我花了很多时间从问题跟踪器,博客甚至github回购信息中search信息。 相比之下, libvirt至less有一个有用的Wiki。