我使用 ubuntu-cloud 模板作为 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
问题并向其提供一些用户数据和元数据。我尝试找到如何手动执行此操作,但cloud-init
文档页面没有帮助,因为它的例子都是为了euca-tools
。
我还注意到lxc-start
有一个选项-C
:“-C 选项将创建一个云容器,配置为用于元数据服务。”但我只是不知道如何映射此选项以及所有相关设置libvirt_lxc
。
我该如何正确初始化 image/rootfs?
答案1
好的,经过几天的搜索cloud-init
,我发现我可以准备一个seed
磁盘安装在客户系统中以便cloud-init
启动。具体如下:
libvirt
使用 LXC rootfs创建域 XML- 准备
meta-data
并user-data
归档如下此引用 我们不用创建 ISO 文件,而是可以在域 XML 中添加挂载选项来将文件播种到
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
缺乏文件1,2。我花了很多时间从问题跟踪器、博客甚至 github repos 中搜索信息。相比之下,libvirt
至少有一个有用的 Wiki。