2

我正在尝试使用 NoCloud 数据源启动实例。但是每次实例出现时,它都会尝试连接到网络和元数据服务。

日志:2015-08-17 15:48:58,115 - url_helper.py [警告]:调用“ http://169.254.169.254/2009-04-04/meta-data/instance-id ”失败 [0/120s] : 请求错误 [HTTPConnectionPool(host='169.254.169.254', port=80): 最大重试次数超过了 url: /2009-04-04/meta-data/instance-id (引起: [Errno 111] 连接被拒绝) ]

我创建了一个包含元数据和用户数据的驱动器:

元数据:
实例 ID:iid-local01
本地主机名:cloudimg

用户数据:

#cloud-config
write_files:
- 路径: /test.txt
内容:|
这是一条线

但是该文件没有被创建。你能帮忙解决这个问题吗?或者禁用 cloud-init 联系元数据服务。

4

2 回答 2

1

旧的,但是我今天遇到了同样的问题,因为 CentOS7 仍在使用 cloud-init 18.2。注意在 cloud-init 文档上选择正确的版本(我没有先),我发现标签必须是小写的“cidata”。

如果错误或没有标签,您的设备将被忽略,cloud-init 将回退到基于网络的数据源(EC2、OS 等)。

请随意使用我的示例脚本,因为它会生成一个包含您的用户数据和元数据文件的 vfat img。然后将其附加到您的虚拟机。

用当前的 ubuntu 和 CentOS 云镜像测试。

https://github.com/BrHal/CloudInit

于 2019-08-07T14:24:07.860 回答
0

我怀疑您的问题是附加磁盘根本没有正确创建,以便 cloud-init 识别它。文档中有更多信息。

cloud-localds是一个非常独立的工具,可从cloud-utils包中获得,它可以帮助创建可用的 NoCloud 数据源。它的用法如下所示,提供了一个“disk1.img”文件,其中包含安装了 cloud-init 的图像。

$ cat my-user-data
#cloud-config
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True

$ echo "instance-id: $(uuidgen || echo i-abcdefg)" > my-meta-data
$ cloud-localds my-seed.img my-user-data my-meta-data
$ qemu-system-x86_64 -enable-kvm \
    -net nic -net user,hostfwd=tcp::2222-:22 \
    -drive file=disk1.img,if=virtio -drive file=my-seed.img,if=virtio

$ ssh -p 2222 ubuntu@localhost

如果这不适合您,请提交错误

于 2017-07-18T19:14:51.573 回答