我正在尝试使用 cloud-init 和 qemu-kvm 作为管理程序来构建 VM。我有以下使用用户数据构建 VM 的脚本:
# Create an overlay image
qemu-img create -f qcow2 -b "$CLOUD_BASE_IMG" "$1".img
qemu-img resize "$1".img +22G
# Build seed image with the user data and the networking config
cloud-localds "$CUR_PATH"/seed_"$1".img "$CUR_PATH"/user-data.yaml
# Boot the VM
if [ "$1" == "vm2" ]; then
sudo qemu-system-x86_64 \
-hda "$CUR_PATH"/"$1".img \
-hdb "$CUR_PATH"/seed_"$1".img \
-m 2G --enable-kvm \
-serial file:"$1".log \
-device e1000,netdev=mgmt,mac=00:AA:BB:CC:01:99 -netdev user,id=mgmt,hostfwd=tcp::2022-:22 \
-device virtio-net-pci,netdev=data1,mac=00:0a:0a:0a:02:01,ioeventfd=on,mrg_rxbuf=on -netdev tap,ifname=vm2.1,id=data1,script=no,downscript=no
fi
这工作正常,但现在我想通过 cloud-init 构建 VM 并配置网络。我已经读到(ref,ref)cloud-localds
可以像这样传递网络配置:
cloud-localds -v --network-config=network-config-v1.yaml \
seed.img user-data.yaml meta-data.yaml
如果我尝试这样做,则会加载 VM,但未正确加载用户数据,然后我将无法访问 VM。
另外,我在官方文档中找不到任何-v
标志和--network-config
标志的信息
关于如何以这种方式传递网络配置的任何建议?